Ajustar una nube de palabras / etiquetas en límites geográficos

15

¿Hay herramientas disponibles o métodos recomendados para mostrar una etiqueta o nube de palabras (también conocida como wordle ) en un mapa mundial, como en este ejemplo: Mapa: Estados Unidos de apellidos ? (Puede haber otros ejemplos en el NY Times).

Tenga en cuenta que en el ejemplo anterior, las palabras se ubican mediante coordenadas fijas, mientras que la nubosidad del texto podría implementarse con el algoritmo wordle (como se describe en SO ) de manera automática. Entonces, ¿hay un software que le permita poner palabras al azar en un país determinado, o cree que es mejor ajustar el algoritmo original de wordle (por ejemplo, agregando restricciones basadas en fronteras predefinidas)?

chl
fuente
@underdark Gracias por señalar ese hilo. Sin embargo, me parece más relacionado con el geoetiquetado, mientras que estoy buscando una solución en la que no tengamos que asociar coordenadas espaciales conocidas (por ejemplo, ciudad o condados) a cada palabra. En otras palabras, deje que el diseño de las palabras en un país esté libre de restricciones que no sean sus fronteras reales. Si otros sienten que es realmente un duplicado, puedo eliminarlo sin ningún problema.
chl
@chl: ¿Entonces la ubicación de las palabras dentro de los límites no tiene sentido? Entonces no es un duplicado.
oscuro
@underdark Sí, exactamente. La idea principal de wordle es tratar de encontrar un diseño espacial atractivo con palabras clasificadas por sus frecuencias relativas. Entonces, solo quiero restringir la elección de posibles coordenadas (x, y) en los "bordes".
chl
Hay algunos hilos de etiquetas / nube aquí en GSE. gis.stackexchange.com/search?q=tag+cloud Parece que debería haber algún esfuerzo (quizás iniciado por la comunidad de intercambio de pila) para diferenciar la nube de la etiqueta / nube. Incluso con la etiqueta en mi búsqueda obtuve "parece" todos los hilos de la nube devueltos. Tal vez podríamos comenzar un hilo sobre meta para discutir. O tal vez no molesta a nadie más. ???
Brad Nesom

Respuestas:

4

Se necesitarían muy pocos ajustes: aproximar el límite del polígono por líneas isotéticas (es decir, segmentos horizontales y verticales) y, como condiciones iniciales, colocar cajas (con contenido en blanco) alineadas a lo largo de esas líneas en el exterior del polígono y en el interior del cuadro delimitador del polígono. En este punto, la configuración se vería exactamente como si el algoritmo de Wordle hubiera estado funcionando durante un tiempo y hubiera colocado las primeras palabras alrededor del perímetro del cuadro delimitador. Deje que el algoritmo se haga cargo de allí.

En efecto, esto equivale a representar el polígono con un quadtree desde el principio y, de lo contrario, reproducir exactamente el algoritmo de Wordle.

Si no está colocando miles de palabras en el polígono y si tiene un poco de tiempo de computación de sobra, no tiene que codificar un índice espacial en absoluto: puede realizar la detección de colisión utilizando comparaciones de todos los pares de fuerza bruta Las cajas delimitadoras. Con un poco más de trabajo, puede mantener listas de las ubicaciones de palabras ordenadas por coordenadas x e y y explotar estas listas para simplificar el algoritmo de detección de colisiones.

whuber
fuente
6

Muy truco. Estoy tratando de hacer algo así, pero para producir mapas tipográficos como este de Axis Maps.

ingrese la descripción de la imagen aquí

Puede probar algo con qgis o mapnik, los conceptos básicos serían:
1) Cuente las palabras y genere un peso por el número de ocurrencias.
2) generar puntos aleatorios dentro de un polígono.
3) para cada punto, cargue una palabra y su peso se atribuye a la tabla.
4) Dibuje el texto con el tamaño de fuente basado en el peso.

También puede agregar una rotación aleatoria y colores a la tabla.

Pablo
fuente
(+1) Gracias por señalar mapas tipográficos. Me recuerda que encontré cosas geniales hace algunos meses. Lo intentaré, pero me preguntaba si el código Python disponible contribuido por @aeby en SO no sería útil también, siempre que agregue restricciones en los límites de los países. No estoy lo suficientemente familiarizado con QGis pero intentaré aprenderlo.
chl
Colocar palabras en puntos uniformemente aleatorios generalmente producirá muchas superposiciones. Si las palabras se escalan uniformemente para casi llenar el polígono, que en la mayoría de los casos es la situación deseable, entonces usar puntos aleatorios seguramente no funcionará. Sin embargo, sería un buen comienzo para un algoritmo de recocido simulado espacial :-).
whuber
No se superpondrán porque qgis y mapnik tienen detectores de colisión. Pero algunas palabras serán suprimidas. Hay muchos otros problemas, como, ¿cuántas palabras necesitarías dependiendo del tamaño del polígono?
Pablo
@whuber, siguiendo su idea, tal vez en lugar de puntos aleatorios, el algoritmo puede comenzar a llenar el polígono con otros polígonos con el tamaño de la palabra desde la parte superior izquierda hasta la parte inferior derecha. luego rotula estos polígonos.
Pablo
5

Tagxedo se ve bien. Lástima que use Silverlight.

bajo oscuro
fuente
(+1) Se ve bien, aunque sería mejor no confiar en Silverlight.
chl