Dopasowanie chmury słów / znaczników do granic geograficznych

15

Czy są dostępne narzędzia lub zalecane metody wyświetlania tagu lub chmury słów (znanej również jako wordle ) na mapie świata, podobnie jak w tym przykładzie: Mapa: Stany Zjednoczone nazwisk ? (Mogą istnieć inne przykłady w NY Times.)

Zauważ, że w powyższym przykładzie słowo jest zlokalizowane według stałych współrzędnych, podczas gdy chmurkowanie tekstu może być zaimplementowane za pomocą algorytmu wordle (jak opisano w SO ) w sposób automatyczny. Czy istnieje oprogramowanie, które pozwala na losowe wyrazy w danym kraju, czy uważasz, że najlepiej jest ulepszyć oryginalny algorytm wordle (np. Dodając ograniczenia oparte na predefiniowanych granicach)?

chl
źródło
@underdark Dziękujemy za wskazanie tego wątku. Wydaje mi się jednak, że jest to bardziej związane z geotagowaniem, podczas gdy szukam rozwiązania, w którym nie musimy kojarzyć znanych współrzędnych przestrzennych (np. Miasta lub powiatów) z każdym słowem. Innymi słowy, niech układ słów w kraju będzie wolny od ograniczeń innych niż jego rzeczywiste granice. Jeśli inni uważają, że to naprawdę duplikat, mogę go usunąć bez żadnych problemów.
chl
@chl: Więc lokalizacja słów w granicach nie ma znaczenia? To nie jest duplikat.
podmroku
@underdark Tak, dokładnie. Główną ideą wordle jest znalezienie ładnego układu przestrzennego ze słowami o wielkości odpowiadającej ich częstotliwościom. Następnie chcę ograniczyć wybór możliwych współrzędnych (x, y) na „granicach”.
chl
W GSE jest kilka wątków tagów / chmur. gis.stackexchange.com/search?q=tag+cloud Wydaje się, że powinno być trochę wysiłku (być może zainicjowanego przez społeczność wymiany stosów), aby odróżnić chmurę od tagu / chmury. Nawet z tagiem w moim wyszukiwaniu otrzymałem „wygląda na to”, że zwrócono wszystkie wątki w chmurze. Może moglibyśmy rozpocząć wątek na temat meta w celu omówienia. A może nikomu to nie przeszkadza. ???
Brad Nesom

Odpowiedzi:

4

Zajmie to bardzo mało poprawek: przybliżenie granicy wielokąta liniami izotetycznymi (to znaczy poziomymi i pionowymi segmentami) i, jako warunki początkowe, umieść pola (z pustą zawartością) wyrównane wzdłuż tych linii na zewnątrz wielokąta i wewnątrz obwiedni wielokąta. W tym momencie konfiguracja wyglądałaby dokładnie tak, jakby algorytm Wordle działał przez jakiś czas i zdarzyło się, że umieścił pierwsze słowa na obwodzie obwiedni. Niech algorytm przejmie stamtąd.

W efekcie sprowadza się to do reprezentowania wielokąta z poczwórnym drzewem od samego początku i dokładnego odtwarzania algorytmu Wordle.

Jeśli nie umieszczasz tysięcy wielokątów w wielokącie i masz mało czasu na obliczenia, nie musisz w ogóle kodować indeksu przestrzennego: możesz wykonać wykrywanie kolizji za pomocą porównań wszystkich par brutalnej siły obwiednie. Przy odrobinie więcej pracy możesz utrzymywać listy lokalizacji słów posortowane według współrzędnych xiy oraz wykorzystać te listy do usprawnienia algorytmu wykrywania kolizji.

Whuber
źródło
6

Bardzo sztuczka. Sam próbuję coś takiego zrobić, ale stworzyć mapy typograficzne takie jak ta z Axis Maps.

wprowadź opis zdjęcia tutaj

Możesz spróbować czegoś z qgis lub mapnikiem, podstawy to:
1) Policz słowa i wygeneruj wagę według liczby wystąpień.
2) generuj losowe punkty wewnątrz wielokąta.
3) dla każdego punktu prześlij słowo i jego wagę do tabeli attibute.
4) Narysuj tekst czcionką w oparciu o wagę.

Możesz także dodać losowy obrót i kolory do tabeli.

Pablo
źródło
(+1) Dziękujemy za wskazanie map typograficznych. Przypomina mi, że kilka miesięcy temu natknąłem się na fajne rzeczy. Spróbuję, ale zastanawiałem się, czy dostępny kod Pythona dodany przez @aeby na SO również nie byłby pomocny, pod warunkiem, że dodam ograniczenia na granicach kraju. Nie znam wystarczająco QGis, ale spróbuję się tego nauczyć.
chl
Umieszczanie słów w równomiernie losowych punktach generalnie powoduje wiele nakładek. Jeśli słowa są jednolicie skalowane, aby prawie wypełnić wielokąt - co w większości przypadków jest pożądaną sytuacją - użycie losowych punktów z pewnością nie zadziała. Byłby to jednak dobry początek dla przestrzennie symulowanego algorytmu wyżarzania :-).
whuber
Nie pokrywają się, ponieważ qgis i mapnik mają detektory kolizji. Ale niektóre słowa zostaną stłumione. Istnieje wiele innych problemów, na przykład ile słów potrzebujesz w zależności od wielkości wielokąta?
Pablo
@ whuber, Idąc za twoją ideą, być może zamiast losowych punktów algorytm może zacząć wypełniać wielokąt innymi wielokątami o rozmiarze słowa od górnego lewego do prawego. następnie oznacz te wielokąty.
Pablo
5

Tagxedo wygląda dobrze. Szkoda, że ​​używa Silverlight.

podmrok
źródło
(+1) Wygląda dobrze, choć najlepiej nie polegać na Silverlight.
chl