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)?
Réponses:
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.
la source
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.
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.
la source
Tagxedo a l' air bien. Dommage qu'il utilise Silverlight.
la source
Cela pourrait être utile: Une approche génétique constructive pour le placement d'étiquettes cartographiques ponctuelles .
la source