Crea una linea "media" da più linee usando QGIS


12

Ho funzioni a più linee (anche quelle in punti multipli ...) che rappresentano un percorso simile (sentieri di montagna, in questo caso) con varie precisione GPS, risultando in molte linee vicine l'una all'altra, ma non perfettamente sovrapposte.

Ai fini di questo progetto, sto cercando un modo per calcolare una linea "media" da tutti loro e generare una linea risultante della posizione più probabile del percorso.

Come procederesti, usando QGIS o qualsiasi altro strumento (ho pensato a OGR ...)?

inserisci qui la descrizione dell'immagine


Dai un'occhiata ai brani medi sulla wiki di OpenStreetMap, che descrive un metodo usando R.
Jake,

2
Sembra simile alla "conflazione" e su questo sito ci sono stati alcuni thread a riguardo: gis.stackexchange.com/search?q=conflation ti avvicina a qualche domanda e risposta?
SaultDon

Dò un'occhiata alla "conflazione" oggi, ma finora, le "tracce medie" proposte in precedenza sembrano fare il trucco. Sto semplicemente guardando un po 'di più per vedere se può essere fatto direttamente tramite QGIS, ma entrambe le tue risposte sono fantastiche, grazie!
Horizen,

Potresti guardare questa discussione e i suoi collegamenti: gis.stackexchange.com/questions/70623/…
johns,

Risposte:


9

Dati di test:

  • QGIS 2.18.16, GRASS GIS 7
  • 4 tracce GPS
  • all'interno di una griglia di 1x1km

IO.)

Crea punti lungo le tue tracce GPS con il plug-in QGIS Locate Points Along Lines( https://plugins.qgis.org/plugins/LocatePoints/ ). Ho usato un intervallo di 5 m nel mio esempio.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

II.)

Crea un Concave Hullcon Processing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull. 0.1Nel mio esempio ho usato una soglia di . Se la soglia è troppo bassa, potrebbero esserci dei buchi all'interno del poligono di output.

inserisci qui la descrizione dell'immagine

III.)

Ora puoi calcolare la linea "media" con l'aiuto dell'algoritmo scheletro. Cerca scheletro nel Processing Toolbox. Utilizzare lo v.voronoi.skeletonstrumento dal GRASS GIS 7 commands.

inserisci qui la descrizione dell'immagine


7

L'approccio della mappa di calore:

L'approccio richiede più tempo, a causa del tempo di calcolo delle fasi di elaborazione. Potrebbe essere vista come un'idea forse per avvicinarsi a una soluzione più generale.

Dati di test:

  • QGIS 2.18.16, GRASS GIS 7
  • 4 tracce GPS
  • all'interno di una griglia di 1x1km

IO.)

Crea punti lungo le tue tracce GPS con il plugin QGIS Trova punti lungo le linee ( https://plugins.qgis.org/plugins/LocatePoints/ ). Per l'approccio della mappa di calore ho usato un intervallo di 2m .

II.)

Crea una mappa di calore con il plug-in di mappa di calore QGIS. Ho usato un raggio di 40m. Aumento il raggio fino a quando non ci sono buchi nel raster di output. Devi provarlo con diversi valori di raggio.

inserisci qui la descrizione dell'immagine

III.)

MODIFICATO Non è necessario mantenere l'esatto valore raster della mappa di calore.

Ora voglio assottigliare il raster nelle aree "bianche", dove sono concentrati più punti. Pertanto ricalcolo l'output raster. I valori min / max del raster di output sono 0e 89.7935. Uso solo i valori sopra 44. Pertanto ho usato una "regola empirica". Arrotondare il valore massimo e dividerlo per due. Arrotondare questo valore un'altra volta. 89/2 = 44,5-> 44. Ho usato Shell OSGeo4W: gdal_calc -A heatmap.tif --calc="A>=44" --NoDataValue=0 --outfile=heatmap_44_NoData.tif.

inserisci qui la descrizione dell'immagine

IV.)

MODIFICATO

a) Poligonizzare la mappa di calore ricalcolata con Raster > Conversion > Polygonize ...

b) Semplifica il poligono Vector > Geometry Tools > Simplify geometries. Ho usato una tolleranza di 2. Un poligono più semplice riduce i tempi di elaborazione degli scheletri.

c) Calcola scheletri: cerca scheletro nella Casella degli strumenti di elaborazione. Utilizzare lo v.voronoi.skeletonstrumento dai comandi GRASS GIS 7.

inserisci qui la descrizione dell'immagine

Puoi vedere che la linea risultante rappresenta più la posizione più probabile della pista che nella mia prima risposta. Soprattutto per la curva a nord, la linea media segue le tre tracce che sono più vicine l'una all'altra. Lo stesso per la curva in Oriente.

Vantaggi dell'approccio:

  • buoni risultati ragionevoli utilizzando esclusivamente QGIS

svantaggi:

  • tempo di elaborazione per set di big data
  • devi provare i parametri a priori (raggio della mappa di calore, valori min / max)
  • difficile automatizzare le fasi di elaborazione
  • non testato per curve / curve strette e tracce che escono davvero dalla linea

Se qualcuno può ottimizzare le fasi di elaborazione, benvenuto!


+1. Questo è un approccio efficace per trovare una "linea media". Tuttavia, non è necessariamente la migliore stima della linea corretta . Per capire perché no, immagina che la maggior parte dei percorsi sia stata percorsa molto rapidamente, ma che uno sia stato percorso molto lentamente, abbastanza lentamente che gli errori in qualsiasi posizione sarebbero stati mediati. Questo singolo percorso fornirebbe la rappresentazione più affidabile della verità, ma ricampionando ogni percorso questa informazione verrebbe persa e mediata con le molte rappresentazioni più povere. Ovviamente questo è un caso estremo, ma in realtà alcuni percorsi potrebbero essere migliori di altri.
whuber

Capisco. Grazie per la vostra risposta. Il plug-in Heat Map in QGIS offre alcune opzioni avanzate, dove è possibile use weight from field. È possibile utilizzare informazioni come la velocità (corsa lenta / rapida) o altre per ponderare i dati in qualche modo? La ponderazione potrebbe essere utilizzata per migliorare la mappa di calore.
Stefan,

Sì, potresti farlo - ma nessuna di queste tecniche risolve il problema che i dati potrebbero avere un'autocorrelazione (fortemente positiva). Affrontare ciò richiederebbe qualcosa come un'analisi delle serie temporali dei singoli percorsi.
whuber
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.