Tengo varias características de líneas (también las tengo en multipuntos ...) que representan una ruta similar (senderos de montaña, en este caso) con varias precisión de GPS, lo que resulta en muchas líneas cercanas entre sí, pero que no se superponen perfectamente.
Para el propósito de este proyecto, estoy buscando una manera de calcular una línea "media" de todos ellos y generar una línea resultante de la posición más probable del camino.
¿Cómo procederías, usando QGIS o cualquier otra herramienta (pensé en OGR ...)?
Respuestas:
Datos de prueba:
YO.)
Cree puntos a lo largo de sus pistas GPS con el complemento QGIS
Locate Points Along Lines
( https://plugins.qgis.org/plugins/LocatePoints/ ). He usado un intervalo de 5 m en mi ejemplo.II.)
Crea un
Concave Hull
conProcessing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull
. Usé un umbral de0.1
en mi ejemplo. Si el umbral es bajo, puede haber agujeros dentro del polígono de salida.III.)
Ahora, puede calcular la línea "media" con la ayuda del algoritmo esqueleto. Buscar esqueleto en el
Processing Toolbox
. Use lav.voronoi.skeleton
herramienta deGRASS GIS 7 commands
.fuente
El enfoque del mapa de calor:
El enfoque consume más tiempo, debido al tiempo de cálculo de los pasos de procesamiento. Podría verse como una idea para acercarse a una solución más general.
Datos de prueba:
YO.)
Cree puntos a lo largo de sus pistas GPS con el complemento QGIS Localice puntos a lo largo de las líneas ( https://plugins.qgis.org/plugins/LocatePoints/ ). Para el enfoque del mapa de calor he usado un intervalo de 2 m .
II.)
Cree un mapa de calor con el complemento de mapa de calor QGIS. He usado un radio de 40 m. Aumento el radio hasta que no haya agujeros en el ráster de salida. Tienes que probar esto con diferentes valores de radio.
III.)
EDITADO No es necesario mantener el valor exacto del ráster del mapa de calor.
Ahora quiero reducir la trama a las áreas "blancas", donde se concentran la mayoría de los puntos. Por lo tanto, recalculo el ráster de salida. Los valores min / max del ráster de salida son
0
y89.7935
. Solo uso los valores anteriores44
. Para ello utilicé una "regla de oro". Redondea hacia abajo el valor máximo y divídelo por dos. Redondee este valor en otro momento.89/2 = 44,5
->44
. He usado el Shell OSGeo4W:gdal_calc -A heatmap.tif --calc="A>=44" --NoDataValue=0 --outfile=heatmap_44_NoData.tif
.IV.)
EDITADO
a) Poligonalice el mapa de calor recalculado con
Raster > Conversion > Polygonize ...
b) Simplifica el polígono
Vector > Geometry Tools > Simplify geometries
. He usado una tolerancia de2
. Un polígono más simple reduce el tiempo de procesamiento de los esqueletos.c) Calcular esqueletos: busque esqueletos en la Caja de herramientas de procesamiento. Use la
v.voronoi.skeleton
herramienta de los comandos de GRASS GIS 7.Puedes ver que la línea resultante representa más la posición más probable del camino que en mi primera respuesta. Especialmente para la curva en el norte, la línea media sigue las tres pistas que están más cerca una de la otra. Lo mismo para la curva en el este.
Ventajas del enfoque:
Desventajas
Si alguien puede optimizar los pasos de procesamiento, ¡bienvenido!
fuente
use weight from field
. ¿Se puede utilizar información como la velocidad (marcha lenta / rápida) u otras para ponderar los datos de alguna manera? La ponderación podría usarse para mejorar el mapa de calor.