Identificare i cluster nei dati dei punti vettoriali usando QGIS?


34

Ho un set di dati vettoriali di punti di dati a banda larga rurali (quanto velocemente, ecc.) E mi piacerebbe esplorare se ci sono gruppi di punti con caratteristiche simili e tracciare poligoni che li racchiudono.

Ad esempio, potrei avere 45.000 punti in un singolo set di dati PostGIS distribuito su un paesaggio. Voglio identificare i cluster che si trovano entro x km l'uno dall'altro e in cui la velocità è inferiore a y kbps e produrre scafi convessi per ciascun cluster qualificato.

Esiste un modo semplice per farlo in QGIS, ad esempio?


3
Potresti voler prestare attenzione alla natura della banda larga. Si verificheranno velocità elevate nelle aree urbane; conglomerati industriali; irradiando lungo le strade da CO, modem e altre infrastrutture in fibra / cavo / DSL; e trasmesso da determinate torri cellulari (a seconda della definizione di "banda larga"). Pertanto, le alte velocità sembreranno raggrupparsi e le velocità più basse sembreranno degli spazi vuoti nei cluster. In particolare, è improbabile che gli scafi convessi siano persino descrizioni decenti delle regioni a bassa velocità. Sarebbe bello sapere come intendi interpretare qualsiasi "cluster" che trovi.
whuber

Grazie per l'aiuto. Sto studiando le aree più rurali, in cui l'architettura della banda larga cablata può sollevare situazioni più insolite a causa della distribuzione di armadi stradali e di linee dirette sui poli, nonché la geografia delle aree, ad esempio. Di conseguenza, trovi cluster che possono essere un utile punto di partenza per la creazione di soluzioni locali e possono essere un passo importante nello sviluppo di una strategia. In effetti, puoi persino trovarli nelle aree urbane, spesso a causa del patrimonio industriale o di cose come linee ferroviarie e fiumi che si rivelano difficili da attraversare.
Adrian,

Risposte:


15

Ho combinato alcuni suggerimenti e ho aggiunto alcuni dei miei e ho trovato una soluzione che funziona bene per me - e tutto all'interno di QGis!

Per prima cosa ho eseguito PostGis SELECT per trovare i punti che hanno gli attributi comuni giusti e si trovano a x km l'uno dall'altro:

SELEZIONA DISTINCT s1.postcode, s1.the_geom, s1.gid FROM broadband_data AS s1 JOIN broadband_data AS s2 ON ST_DWithin (s1.the_geom, s2.the_geom, 1000) DOVE s1.postcode! = S2.postcode AND s1.fastest_broadband <= 2000

(Praticamente dall'ottimo PostGis in Action di Manning , aggiungendo solo un self-join)

Ho quindi caricato il plug-in ManageR di Carson Farmer e importato il layer. Da qui ho seguito il processo di clustering PAM suggerito qui , ed esportato il risultato in un file di forma, su cui Convex Scafi sono stati calcolati in pochi secondi utilizzando FTOOLS (Carson fa andare in giro!).


La prima edizione di PostGIS in azione è ora fuori stampa. Ecco un link alla seconda edizione manning.com/books/postgis-in-action-second-edition e un link al primo capitolo che è free manning-content.s3.amazonaws.com/download/a/… che è ottimo per iniziare a scattare una foto di PostGIS
Martin Hügi il

8

Sebbene non sia una soluzione QGIS, opterei personalmente per alcune analisi esplorative usando SaTScan . È veloce, ben documentato e ampiamente applicato, quindi non dovresti avere problemi con l'avvio. 45k punti potrebbero richiedere un po 'di RAM.

Non sono sicuro che possa leggere direttamente da Postgres ma può essere facilmente importato da dbf e file di testo.

L'output dell'analisi può essere facilmente riletto su Postgres o QGIS. Puoi decidere di cercare ammassi o ellissi circolari (potrebbe essere utile usarli se c'è un particolare tipo di insediamenti nei tuoi dati, ad esempio città / villaggi a forma lunga nelle valli ecc.). È quindi possibile generare poligoni o ellissi o visualizzare solo le posizioni che sono membri dei cluster.

Per una rapida anteprima dei risultati in Google Earth puoi anche utilizzare lo strumento di conversione SaTScan in Google Earth di NAACCR .

È importante sottolineare che se decidi di eseguire simulazioni Monte Carlo (minimo 99, credo) sarai anche in grado di dire qualcosa sul significato statistico dei tuoi cluster. L'interpretazione e la giustificazione di questi cluster saranno un altro problema in quanto è stato discusso nelle scienze spaziali almeno negli ultimi due decenni (credo;).

Potresti provare a eseguire analisi puramente spaziali alla ricerca di gruppi di valori alti, bassi o alti e bassi. Se hai alcuni attributi temporali nei tuoi dati * aggregazioni giornaliere, settimanali) penso che sarebbe davvero interessante eseguire alcuni modelli spazio-temporali.


2
Sembra buono - Buona risposta
Mapperz

5

SciPy ha un pacchetto di clustering (per Python), puoi usarlo nella console di Python, scrivere un semplice plugin per farlo o usare PL / python all'interno di Postgis.

http://docs.scipy.org/doc/scipy/reference/cluster.html

Dopo l'analisi basta usare gli strumenti f per creare gli scafi convessi.


Sono un utente semplice con pochissima esperienza di Python ma darò un'occhiata - So che devo imparare!
Adrian,

il clustering SciPy tiene conto delle relazioni spaziali tra i punti?
Radek,

1
Devi solo aggiungere altre due covariate per le coordinate xey del tuo punto.
Jose,

5

C'è un esempio simile di quello che vuoi fare usando R e GRASS qui . In alternativa, potresti voler utilizzare gli strumenti di raggruppamento di scipy come suggerito, quindi eseguire i calcoli dello scafo convesso usando questo metodo .


3

Puoi provare il plugin Ftools. Vector> Geoprocessing Tools> Convex Hulls.

C'è un'opzione per Create convex hulls based on input field, il parametro del campo di input dovrebbe provenire dagli attributi dei tuoi punti di input.


Grazie per l'aiuto. La punta degli scafi convessi creerà i poligoni ma non identifica se i cluster esistono o dove potrebbero essere. Mi piacerebbe davvero trovare prima un modo per associare punti con caratteristiche simili entro x km l'uno dall'altro. Immagino che dovrei eseguire alcuni script che identificano in modo univoco l'esistenza di cluster e aggiorna un campo aggiuntivo nella tabella postgis per i membri di ciascun cluster. Ad esempio, creando una triangolazione Delaunay e filtrando tutti i punti in cui i lati dei triangoli sono più lunghi di x km, ma non ho idea di come farlo
Adrian,
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.