Calcolare la distanza più breve da un punto all'altro usando QGIS?


12

Qual è il metodo migliore per calcolare la distanza dalla strada più vicina per una serie di punti di indirizzo in QGIS, con un set di dati molto grande? (QGIS 2.0.1, Win XP)

Ho letto le risposte a precedenti domande simili:

Misurare la distanza tra linee e punti in QGIS

Tracciare linee perpendicolari in PyQGIS?

Calcolo della distanza minima tra punti e poligoni in QGIS?

/programming/16448402/distance-of-point-feature-to-nearest-polygon-in-r

Tuttavia:

  1. Il plug-in MMQGIS trova la distanza dal nodo più vicino di una rete di linea, non la distanza più breve (perpendicolare) da una linea.

  2. Gli script proposti da R e Python funzionano correttamente per set di dati di piccole dimensioni e possono essere implementati nel modellatore, tuttavia per il mio lavoro ho 530 punti e un livello stradale regionale con circa 135'000 funzioni, e percorro tutte le funzionalità prendendo quindi la distanza più breve per tutti i punti richiederanno un'enorme quantità di tempo

  3. Ho problemi a far funzionare GRASS in QGIS 2.0.1 ( GRASS in QGIS non funziona (Windows XP) ).


1
Sono riuscito a calcolare la distanza minima in QGIS 1.8.0 tramite il plug-in GRASS e lo strumento v.distance . L'esecuzione richiede circa 15 minuti (oltre al tempo impiegato per impostare correttamente GRASS e importare i livelli ...). Perché ArcGIS (es, unisci per posizione spaziale) è ancora così rapido in confronto?
mic_cord,

1
Si tratta di avere un indice spaziale e un codice ottimizzati per l'attività. Ho appena controllato con la nostra libreria di routing (RW Net 4) e sono in grado di eseguire 2000 calcoli al secondo per una rete stradale di app. delle stesse dimensioni della tua. Rendendolo circa 4000 volte più veloce del tuo plugin GRASS.
Uffe Kousgaard,

3
Postgis dovrebbe farlo in fretta
Nicklas Avén il

1
@mic_cord Puoi fornire una spiegazione dettagliata del metodo v.distance del tuo plugin GRASS? Sono riuscito a far funzionare v.distance con GRASS al di fuori di QGIS, ma non riesco a farlo funzionare nella casella degli strumenti di elaborazione (QGIS 2.6).
user25976

Risposte:


6

Stavamo risolvendo un problema simile. Il modo migliore e più veloce per noi è:

  1. Rasterizza livello linea (Raster / Conversione / Rasterizza ...)
  2. Converti in Prossimità (Raster / Analisi / Prossimità ...)
  3. Utilizza lo strumento di campionamento Point plugin per ottenere valori per tutto il tuo punto dal raster

5

Alcune delle risposte a Misurare la distanza tra linee e punti in QGIS raccomandano il plug-in QGIS di NNJoin ( http://arken.nmbu.no/~havatv/gis/qgisplugins/NNJoin/ ). Farà un'unione spaziale vicina più vicina e includerà la distanza nel risultato. Il plug-in NNJoin utilizza un indice spaziale, quindi dovrebbe gestire set di dati ragionevolmente grandi.


Tveite, secondo il tuo suggerimento. Sono rimasto molto sorpreso dal fatto che questo plugin abbia funzionato più velocemente di un pacchetto raccomandato in R (cioè geosfera :: dist2Line).
Johanness,
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.