Inserire una nuvola di parole / tag nei confini geografici


15

Ci sono strumenti disponibili o metodi consigliati per visualizzare un tag o una nuvola di parole (noto anche come wordle ) su una mappa del mondo, proprio come in questo esempio: Mappa: Stati Uniti dei cognomi ? (Potrebbero esserci altri esempi sul NY Times.)

Si noti che nell'esempio sopra, le parole si trovano in coordinate fisse, mentre il clouding del testo potrebbe essere implementato con l'algoritmo wordle (come descritto su SO ) in modo automatico. Quindi, esiste un software che ti consente di mettere le parole a caso in un determinato paese o pensi che sia meglio modificare l'algoritmo originale di wordle (ad esempio, aggiungendo vincoli basati su frontiere predefinite)?



@underdark Grazie per aver sottolineato quella discussione. Tuttavia, mi sembra più legato al geotagging, mentre sto cercando una soluzione in cui non dobbiamo associare coordinate spaziali conosciute (ad es. Città o contee) a ciascuna parola. In altre parole, lascia che la disposizione delle parole in un paese sia libera da vincoli diversi dalle sue attuali frontiere. Se gli altri pensano che sia davvero un duplicato, posso rimuoverlo senza alcun problema.
chl

@chl: Quindi la posizione delle parole all'interno dei confini non ha significato? Quindi non è un duplicato.
underdark

@underdark Sì, esattamente. L'idea principale di wordle sta cercando di trovare un layout spaziale di bell'aspetto con parole dimensionate in base alle loro frequenze relative. Quindi, voglio solo limitare la scelta di possibili coordinate (x, y) sui "bordi".
chl

Ci sono alcuni thread tag / cloud qui in GSE. gis.stackexchange.com/search?q=tag+cloud Sembra che ci dovrebbe essere qualche sforzo (forse avviato dalla comunità di scambio di stack) per differenziare il cloud dal tag / cloud. Anche con il tag nella mia ricerca ho ottenuto "sembra" tutti i thread cloud restituiti. Forse potremmo iniziare una discussione su meta per discutere. O forse non disturba nessun altro. ???
Brad Nesom,

Risposte:


4

Ci vorrebbe pochissima ottimizzazione: approssimare il confine del poligono con linee isotetiche (cioè segmenti orizzontali e verticali) e, come condizioni iniziali, posizionare le caselle (con contenuto vuoto) allineate lungo quelle linee all'esterno del poligono e all'interno del rettangolo di selezione del poligono. A questo punto la configurazione sembrerebbe esattamente come se l'algoritmo di Wordle fosse andato avanti per un po 'e fosse capitato di posizionare le prime parole attorno al perimetro del rettangolo di selezione. Lascia che l'algoritmo prenda il controllo da lì.

In effetti, ciò equivale a rappresentare il poligono con un quadrifoglio dall'inizio e altrimenti a riprodurre esattamente l'algoritmo di Wordle.

Se non stai inserendo migliaia di parole nel poligono e se hai un po 'di tempo di calcolo da risparmiare, non devi affatto codificare un indice spaziale: puoi eseguire il rilevamento delle collisioni usando confronti di coppie all-brute di le scatole di delimitazione. Con un po 'più di lavoro è possibile mantenere elenchi delle posizioni delle parole ordinate per coordinate x e y e sfruttare tali elenchi per semplificare l'algoritmo di rilevamento delle collisioni.


6

Molto trucco. Sto provando a fare qualcosa del genere da solo, ma per produrre mappe tipografiche come questa da Axis Maps.

inserisci qui la descrizione dell'immagine

Puoi provare qualcosa con qgis o mapnik, le basi sarebbero:
1) Conta le parole e genera un peso per il numero di occorrenze.
2) genera punti casuali all'interno di un poligono.
3) per ogni punto caricare una parola ed è peso nella tabella attibute.
4) Disegna il testo con le dimensioni del carattere in base al peso.

Puoi anche aggiungere una rotazione casuale e colori alla tabella.


(+1) Grazie per aver segnalato le mappe tipografiche. Mi ricorda che mi sono imbattuto in cose interessanti alcuni mesi fa. Ci proverò, ma mi chiedevo se anche il codice Python disponibile fornito da @aeby su SO non sarebbe stato utile, a condizione che aggiungessi contorni sui confini del paese. Non ho abbastanza familiarità con QGis ma cercherò di impararlo.
chl

Posizionare le parole in punti uniformemente casuali produrrà generalmente molte sovrapposizioni. Se le parole sono ridimensionate in modo uniforme per riempire quasi il poligono - che nella maggior parte dei casi è la situazione desiderabile - allora l'uso di punti casuali non funzionerà. Sarebbe un buon inizio per un algoritmo di ricottura spaziale simulato, però :-).
whuber

Non si sovrappongono perché qgis e mapnik hanno rilevatori di collisioni. Ma alcune parole saranno soppresse. Ci sono molti altri problemi, come ad esempio quante parole avresti bisogno a seconda della dimensione del poligono?
Pablo,

@whuber, Seguendo la tua ideia, forse invece di punti casuali, l'algoritmo potrebbe iniziare a riempire il poligono con altri poligoni con la dimensione della parola in alto a sinistra fino in fondo a destra. quindi etichettare questi poligoni.
Pablo,

5

Tagxedo sembra buono. Peccato che usi Silverlight.


(+1) Sembra buono, anche se sarebbe meglio non fare affidamento su Silverlight.
chl

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.