使词/标签云适应地理边界


15

是否有任何可用的工具或推荐的方法在世界地图上显示标签或词云(也称为wordle),就像在此示例中一样:Map:姓氏美国?(《纽约时报》上可能还有其他例子。)

请注意,在上面的示例中,单词是通过固定坐标定位的,而文本混浊可以使用wordle算法(如SO所述)以自动方式实现。那么,是否有一款软件可以让您在给定的国家/地区随机放置单词,或者您认为最好对单词原始算法进行调整(例如,通过基于预定义的边界添加约束)?



@underdark感谢您指出该线程。但是,在我看来,这与地理标记更为相关,而我正在寻找一种解决方案,我们不必将已知的空间坐标(例如,城镇或县)与每个单词相关联。换句话说,让一个国家的文字布局不受其实际边界的限制。如果其他人认为它确实是重复的,则可以无问题地将其删除。
chl

@chl:那么单词在边界内的位置没有意义吗?那就没有重复了。
昏暗

@underdark是的,完全是。wordle的主要思想是试图找到一个美观的空间布局,其单词的大小取决于其相对频率。然后,我只想限制“边界”上可能的(x,y)坐标的选择。
chl

GSE中这里有一些标记/云线程。gis.stackexchange.com/search?q=tag+cloud似乎应该做出一些努力(也许是由堆栈交换社区发起),以区分云与标签/云。即使在搜索中使用了标签,我也“返回”了所有返回的云线程。也许我们可以在meta上开始讨论。也许它不会打扰其他任何人。???
布拉德·尼索姆

Answers:


4

只需很少的调整:通过等距线(即水平和垂直线段)近似多边形边界,并作为初始条件,将沿这些线对齐的框(包含空白内容)放置在多边形的外部和内部多边形的边界框。此时,配置看起来就像Wordle算法已经进行了一段时间,并且恰好将第一个单词放置在边界框的周围。让算法从那里接管。

实际上,这等于从一开始就用四叉树表示多边形,否则就精确地重现了Wordle算法。

如果您没有在多边形中放置成千上万个单词,并且没有多少计算时间可以使用,则根本无需编写空间索引:您可以使用蛮力的所有对比较来执行碰撞检测边界框。您只需做一点点的工作,就可以维护按x坐标和y坐标排序的单词位置列表,并利用这些列表简化冲突检测算法。


6

很有技巧 我试图做这样的事情我自己,但生产印刷地图像这样一个从轴的地图。

在此处输入图片说明

您可以尝试使用qgis或mapnik进行尝试,其基本操作如下:
1)计算单词数并根据出现的次数生成权重。
2)在poligon内生成随机点。
3)每点上载一个单词及其权重到服装表中。
4)根据粗细绘制带有字体大小的文本。

您还可以向表格添加随机旋转和颜色。


(+1)感谢您指出印刷地图。它使我想起几个月前我遇到了很酷的东西。我会尝试一下,但是我想知道@aeby在SO上提供的可用Python代码是否也无济于事,只要我在国家边界上添加约束。我对QGis不够熟悉,但是我会尝试学习它。
chl

将单词放在均匀随机的点通常会产生许多重叠。如果将单词按比例缩放以几乎填满多边形(在大多数情况下是理想的情况),则使用随机点肯定无法使用。不过,这将是空间模拟退火算法的良好起点。
ub

它们不会重叠,因为qgis和mapnik具有碰撞检测器。但是有些话会被压制。还有许多其他问题,例如,根据多边形大小需要多少个单词?
Pablo

@whuber,遵循您的想法,可能会代替其他随机点,而是用其他大小从左上到botton右的单词大小的多边形填充该算法。然后标记这些多边形。
Pablo

5

Tagxedo看起来不错。太糟糕了,它使用Silverlight。


(+1)看起来不错,尽管最好不要依赖Silverlight。
chl

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.