Ajuster un nuage de mots / tags dans les limites géographiques


15

Existe-t-il des outils disponibles ou des méthodes recommandées pour afficher une étiquette ou un nuage de mots (également connu sous le nom de wordle ) sur une carte du monde, un peu comme dans cet exemple: Carte: États-Unis des noms de famille ? (Il peut y avoir d'autres exemples sur le NY Times.)

Notez que dans l'exemple ci-dessus, les mots sont localisés par des coordonnées fixes, tandis que le nuage de texte peut être implémenté avec l'algorithme wordle (comme décrit sur SO ) de manière automatique. Alors, existe-t-il un logiciel qui vous permet de mettre des mots au hasard sur un pays donné, ou pensez-vous qu'il est préférable de modifier l'algorithme original wordle (par exemple, en ajoutant des contraintes basées sur des frontières prédéfinies)?



@underdark Merci d'avoir signalé ce fil. Cependant, cela me semble plus lié à la géolocalisation, alors que je cherche une solution où nous n'avons pas à associer des coordonnées spatiales connues (par exemple, ville ou comtés) à chaque mot. En d'autres termes, que la disposition des mots dans un pays soit libre de contraintes autres que ses frontières réelles. Si d'autres pensent qu'il s'agit vraiment d'un doublon, je peux le supprimer sans aucun problème.
chl

@chl: L'emplacement des mots à l'intérieur des limites n'a donc aucun sens? Alors ce n'est pas un doublon.
underdark

@underdark Oui, exactement. L'idée principale de wordle est d'essayer de trouver une belle présentation spatiale avec des mots dimensionnés par leurs fréquences relatives. Ensuite, je veux juste contraindre le choix des coordonnées (x, y) possibles sur les "bordures".
chl

Il y a quelques threads tag / cloud ici dans GSE. gis.stackexchange.com/search?q=tag+cloud Il semble qu'il devrait y avoir un certain effort (peut-être initié par la communauté d'échange de pile) pour différencier le cloud du tag / cloud. Même avec une balise dans ma recherche, j'ai obtenu "on dirait" tous les threads cloud retournés. Peut-être que nous pourrions commencer un fil sur les méta pour discuter. Ou peut-être que cela ne dérange personne d'autre. ???
Brad Nesom

Réponses:


4

Il faudrait très peu de réglages: approximer la limite du polygone par des lignes isothétiques (c'est-à-dire des segments horizontaux et verticaux) et, comme conditions initiales, placer des boîtes (avec un contenu vide) alignées le long de ces lignes à l' extérieur du polygone et à l'intérieur du cadre de délimitation du polygone. À ce stade, la configuration ressemblerait exactement à si l'algorithme de Wordle fonctionnait depuis un certain temps et était arrivé à placer les premiers mots autour du périmètre du cadre de sélection. Laissez l'algorithme prendre le relais.

En fait, cela revient à représenter le polygone avec un quadtree dès le départ et à reproduire autrement exactement l'algorithme de Wordle.

Si vous ne placez pas des milliers de mots dans le polygone et si vous avez un peu de temps de calcul à épargner, vous n'avez pas du tout à coder un index spatial: vous pouvez effectuer une détection de collision en utilisant des comparaisons toutes paires de force brute de les boîtes englobantes. Avec un peu plus de travail, vous pouvez maintenir des listes d'emplacements de mots triées par coordonnées x et y et exploiter ces listes pour rationaliser l'algorithme de détection de collision.


6

Très astuce. J'essaie de faire quelque chose comme ça moi-même, mais de produire des cartes typographiques comme celle- ci à partir d'Axis Maps.

entrez la description de l'image ici

Vous pouvez essayer quelque chose avec qgis ou mapnik, les bases seraient:
1) Compter les mots et générer un poids par le nombre d'occurrences.
2) générer des points aléatoires à l'intérieur d'un poligon.
3) pour chaque point, téléchargez un mot et son poids pour attribuer le tableau.
4) Dessinez le texte avec une taille de police basée sur le poids.

Vous pouvez également ajouter une rotation aléatoire et des couleurs au tableau.


(+1) Merci d'avoir signalé des cartes typographiques. Cela me rappelle que j'ai rencontré des trucs sympas il y a quelques mois. Je vais essayer, mais je me demandais si le code Python disponible fourni par @aeby sur SO ne serait pas utile non plus, à condition d'ajouter des contraintes sur les frontières des pays. Je ne connais pas assez bien les QGis mais je vais essayer de l'apprendre.
chl

Placer des mots à des points uniformément aléatoires produira généralement de nombreux chevauchements. Si les mots sont uniformément mis à l'échelle pour presque remplir le polygone - ce qui dans la plupart des cas est la situation souhaitable - alors l'utilisation de points aléatoires est certaine de ne pas fonctionner. Ce serait un bon début pour un algorithme de recuit simulé spatial, cependant :-).
whuber

Ils ne se chevauchent pas parce que qgis et mapnik ont ​​des détecteurs de collision. Mais certains mots seront supprimés. Il existe de nombreux autres problèmes, comme le nombre de mots dont vous aurez besoin en fonction de la taille du polygone?
Pablo

@whuber, suivant votre idée, peut-être qu'au lieu de points aléatoires, l'algorithme peut commencer à remplir le polygone avec d'autres polygones avec la taille du mot du haut à gauche jusqu'au botton à droite. étiquetez ensuite ces polygones.
Pablo

5

Tagxedo a l' air bien. Dommage qu'il utilise Silverlight.


(+1) Semble bien, mais il serait préférable de ne pas compter sur Silverlight.
chl

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.