J'ai plusieurs fonctionnalités de lignes (également en multipoints ...) représentant un chemin similaire (sentiers de montagne, dans ce cas) avec une précision GPS variée, ce qui entraîne de nombreuses lignes proches les unes des autres, mais pas parfaitement superposées.
Aux fins de ce projet, je cherche un moyen de calculer une ligne «moyenne» à partir de chacun d'eux et de générer une ligne résultante de la position la plus probable du sentier.
Comment procéderiez-vous en utilisant QGIS ou tout autre outil (j'ai pensé à OGR ...)?
Réponses:
Données de test:
JE.)
Créez des points le long de vos traces GPS avec le plug-in QGIS
Locate Points Along Lines
( https://plugins.qgis.org/plugins/LocatePoints/ ). J'ai utilisé un intervalle de 5m dans mon exmaple.II.)
Créez un
Concave Hull
avecProcessing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull
. J'ai utilisé un seuil de0.1
dans mon exemple. Si le seuil est trop bas, il pourrait y avoir des trous dans le polygone de sortie.III.)
Maintenant, vous pouvez calculer la ligne "moyenne" à l'aide de l'algorithme squelette. Recherchez squelette dans le
Processing Toolbox
. Utilisez l'v.voronoi.skeleton
outil duGRASS GIS 7 commands
.la source
L'approche de la carte thermique:
L'approche prend plus de temps, en raison du temps de calcul des étapes de traitement. Cela pourrait être considéré comme une idée, peut-être pour se rapprocher d'une solution plus générale.
Données de test:
JE.)
Créez des points le long de vos traces GPS avec le plugin QGIS Localisez les points le long des lignes ( https://plugins.qgis.org/plugins/LocatePoints/ ). Pour l'approche de la carte thermique, j'ai utilisé un intervalle de 2 m .
II.)
Créez une carte thermique avec le plugin de carte thermique QGIS. J'ai utilisé un rayon de 40 m. J'augmente le rayon jusqu'à ce qu'il n'y ait plus de trous dans le raster en sortie. Vous devez essayer ceci avec différentes valeurs de rayon.
III.)
MODIFIÉ Il n'est pas nécessaire de conserver la valeur raster exacte de la carte thermique.
Maintenant, je veux éclaircir le raster dans les zones "blanches", où se concentrent le plus de points. C'est pourquoi je recalcule le raster en sortie. Les valeurs min / max du raster en sortie sont
0
et89.7935
. J'utilise uniquement les valeurs ci-dessus44
. Pour cela, j'ai utilisé une "règle d'or". Arrondissez la valeur maximale et divisez-la par deux. Arrondissez cette valeur une autre fois.89/2 = 44,5
->44
. Je l' ai utilisé le OSGeo4W Shell:gdal_calc -A heatmap.tif --calc="A>=44" --NoDataValue=0 --outfile=heatmap_44_NoData.tif
.IV.)
ÉDITÉ
a) Polygonisez la carte de chaleur recalculée avec
Raster > Conversion > Polygonize ...
b) Simplifiez le polygone
Vector > Geometry Tools > Simplify geometries
. J'ai utilisé une tolérance de2
. Un polygone plus simple réduit le temps de traitement des squelettes.c) Calculer les squelettes: recherchez le squelette dans la boîte à outils de traitement. Utilisez l'
v.voronoi.skeleton
outil des commandes GRASS GIS 7.Vous pouvez voir que la ligne résultante représente plus la position la plus probable du sentier que dans ma première réponse. Surtout pour le virage au nord, la ligne moyenne suit les trois pistes les plus proches les unes des autres. De même pour le virage à l'Est.
Avantages de l'approche:
Désavantages:
Si quelqu'un peut optimiser les étapes de traitement, bienvenue!
la source
use weight from field
. Des informations telles que la vitesse (traversée lente / rapide) ou d'autres peuvent-elles être utilisées pour pondérer les données d'une manière ou d'une autre? La pondération pourrait être utilisée pour améliorer la carte thermique.