理解罗盘玫瑰的布局算法

2022-09-03 16:08:45

我想可视化一个代表某个地理地图的图形。因此,我的图表的边缘与罗盘玫瑰(北,南,东,西)相关联。图形本身是有向的,可以做成非循环的。

例如,我有节点:House-1,House-2,House-3带有边[House-1,North-of,House-2],[House-2,East-of,House-3]。

我正在寻找一种布局算法,可以理解罗盘玫瑰(也许是提示?

我经历过JUNG,JGraph,GraphViz,似乎没有人做我想做的事,但我可能错过了一些东西。

有什么建议吗?


答案 1

最近有一篇论文处理了这个问题,他们试图重建旧的韩国土地记录(地籍)。论文中有一个布局算法,应该做你想做的事。它没有提供所有细节,但它确实给出了细节的大纲和引用。

Hyungmin Lee,Sooyun Lee,Namwook Kim和Jinwook Seo。2012. 拼图地图:通过绘制历史文本地籍来连接过去与未来.在2012年ACM计算系统中人为因素年会(CHI '12)的会议记录中。ACM, 纽约州纽约市, 美国, 463-472.DOI=10.1145/2207676.2207740

JigsawMap Example


答案 2

@edallme:漂亮的文档,有趣!

@DaoWen :

我在你的帖子中了解到,你正在寻找一种算法来将所有块都放在地图上,而不是一个“小部件”来做到这一点(所以也许我错了?

如果你正在询问计算如何放置块的想法(知道“图形本身是有向的,可以变成非循环的”),那么以下方法应该有效,无论你使用的是什么图形库。

您可以尝试 - 首先 - 生成一个依赖映射,例如每个节点都受到其他节点的约束(相对位置和偏移量,例如SOUTH / 30单位)。这堆代码也应该检查不连贯性。

其次,计算每个块的相对位置,将最小值和最大值存储在某个位置(参见第3部分),以及对具有最小/最大位置的对象的引用。

第三,您应该能够虚拟地生成具有最小/最大相对位置的全尺寸图表尺寸。

然后,你“只是”必须从角落里画出来。


推荐