Einpassen einer Wort- / Tagwolke in geografische Grenzen

15

Gibt es verfügbare Tools oder empfohlene Methoden zum Anzeigen eines Tags oder einer Wortwolke (auch als wordle bezeichnet ) auf einer Weltkarte, ähnlich wie in diesem Beispiel: Karte: Vereinigte Staaten von Nachnamen ? (Es kann andere Beispiele in der NY Times geben.)

Beachten Sie, dass im obigen Beispiel Wörter durch feste Koordinaten lokalisiert werden, wohingegen die Texttrübung mit dem Wortalgorithmus (wie in SO beschrieben ) auf automatische Weise implementiert werden kann. Gibt es eine Software, mit der Sie Wörter in einem bestimmten Land nach dem Zufallsprinzip eingeben können, oder ist es Ihrer Meinung nach am besten, den ursprünglichen Algorithmus für Wörter zu optimieren (z. B. durch Hinzufügen von Einschränkungen basierend auf vordefinierten Grenzen)?

chl
quelle
Mögliches Duplikat von räumlichen Tagwolken - "Tag Maps"
unterdunkelt
@underdark Danke für den Hinweis auf diesen Thread. Es scheint mir jedoch eher mit Geotagging zu tun zu haben, während ich nach einer Lösung suche, bei der wir nicht jedem Wort bekannte Raumkoordinaten (z. B. Stadt oder Landkreise) zuordnen müssen. Mit anderen Worten, lassen Sie die Anordnung von Wörtern in einem Land frei von Einschränkungen sein, die von den tatsächlichen Grenzen abweichen. Wenn andere das Gefühl haben, dass es sich wirklich um ein Duplikat handelt, kann ich es ohne Probleme entfernen.
chl
@chl: Also hat die Position von Wörtern innerhalb der Grenzen keine Bedeutung? Dann ist es kein Duplikat.
Underdunkel
@underdark Ja genau. Die Hauptidee von wordle ist es, ein gut aussehendes räumliches Layout mit Wörtern zu finden, die nach ihrer relativen Häufigkeit sortiert sind. Dann möchte ich nur die Auswahl der möglichen (x, y) Koordinaten an den "Grenzen" einschränken.
chl
In GSE gibt es einige Tag / Cloud-Threads. gis.stackexchange.com/search?q=tag+cloud Es scheint, dass einige Anstrengungen erforderlich sind (möglicherweise von der Stack Exchange-Community initiiert), um Cloud von Tag / Cloud zu unterscheiden. Sogar mit dem Tag in meiner Suche habe ich "es sieht so aus" alle Cloud-Threads zurückgegeben. Vielleicht könnten wir einen Thread über Meta starten, um darüber zu diskutieren. Oder vielleicht stört es auch niemanden. ???
Brad Nesom

Antworten:

4

Es wäre sehr wenig Optimierungsaufwand erforderlich: Annähern Sie die Polygongrenze durch isothetische Linien (dh horizontale und vertikale Segmente) und platzieren Sie als Anfangsbedingungen Kästchen (mit leerem Inhalt), die entlang dieser Linien im Äußeren des Polygons und im Inneren ausgerichtet sind des Begrenzungsrahmens des Polygons. Zu diesem Zeitpunkt würde die Konfiguration genau so aussehen, als ob der Wordle-Algorithmus eine Weile verwendet worden wäre und die ersten Wörter zufällig um den Umfang des Begrenzungsrahmens platziert worden wären. Lassen Sie den Algorithmus von dort übernehmen.

Tatsächlich läuft dies darauf hinaus, das Polygon von Anfang an mit einem Quadtree darzustellen und ansonsten den Wordle-Algorithmus exakt zu reproduzieren.

Wenn Sie nicht Tausende von Wörtern in das Polygon einfügen und etwas Rechenzeit übrig haben, müssen Sie überhaupt keinen räumlichen Index codieren: Sie können die Kollisionserkennung mithilfe von Brute-Force-All-Pair-Vergleichen von durchführen die Begrenzungsrahmen. Mit ein wenig mehr Arbeit können Sie Listen der Wortpositionen verwalten, die nach x- und y-Koordinaten sortiert sind, und diese Listen zur Optimierung des Kollisionserkennungsalgorithmus verwenden.

whuber
quelle
6

Sehr trick. Ich versuche so etwas selbst zu machen, aber typografische Karten wie diese von Axis Maps zu erstellen .

Bildbeschreibung hier eingeben

Sie können etwas mit qgis oder mapnik ausprobieren. Die Grundlagen wären:
1) Zählen Sie die Wörter und generieren Sie ein Gewicht anhand der Anzahl der Vorkommen.
2) Erzeuge zufällige Punkte innerhalb eines Poligons.
3) Laden Sie für jeden Punkt ein Wort und dessen Gewicht in die Tabelle hoch.
4) Zeichnen Sie den Text mit der Schriftgröße basierend auf dem Gewicht.

Sie können der Tabelle auch eine zufällige Drehung und Farben hinzufügen.

Pablo
quelle
(+1) Vielen Dank für den Hinweis auf typografische Karten. Es erinnert mich daran, dass ich vor einigen Monaten auf coole Sachen gestoßen bin. Ich werde es versuchen, aber ich habe mich gefragt, ob der verfügbare Python-Code, den @aeby auf SO beigesteuert hat, auch nicht hilfreich wäre, vorausgesetzt, ich füge Beschränkungen für Ländergrenzen hinzu. Ich kenne QGis nicht gut genug, aber ich werde versuchen, es zu lernen.
chl
Das Platzieren von Wörtern an gleichmäßig zufälligen Punkten führt im Allgemeinen zu vielen Überlappungen. Wenn die Wörter gleichmäßig skaliert werden, um das Polygon fast auszufüllen - was in den meisten Fällen die gewünschte Situation ist -, funktioniert die Verwendung von zufälligen Punkten mit Sicherheit nicht. Es wäre jedoch ein guter Anfang für einen räumlich simulierten Glühalgorithmus :-).
Whuber
Sie überlappen sich nicht, weil qgis und mapnik Kollisionsdetektoren haben. Aber einige Wörter werden unterdrückt. Es gibt viele andere Probleme, wie viele Wörter würden Sie je nach Polygongröße benötigen?
Pablo
@whuber, Nach Ihrer Vorstellung, Vielleicht füllt der Algorithmus anstelle von zufälligen Punkten das Polygon mit anderen Polygonen mit der Wortgröße von links oben bis rechts unten. dann beschriften Sie diese Polygone.
Pablo
5

Tagxedo sieht gut aus. Schade, dass es Silverlight verwendet.

Underdunkel
quelle
(+1) Sieht gut aus, aber es ist am besten, sich nicht auf Silverlight zu verlassen.
chl