Créer une ligne «moyenne» à partir de plusieurs lignes à l'aide de QGIS

12

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 ...)?

entrez la description de l'image ici

Horizen
la source
Jetez un œil aux pistes moyennes sur le wiki OpenStreetMap, qui décrit une méthode utilisant R.
Jake
2
Cela ressemble à une "confusion" et sur ce site, il y a eu quelques discussions à ce sujet: gis.stackexchange.com/search?q=conflation les questions et les réponses vous rapprochent-elles?
SaultDon
Je vais jeter un œil à la "confusion" aujourd'hui, mais jusqu'à présent, les "pistes moyennes" proposées plus tôt semblent faire l'affaire. Je regarde simplement un peu plus pour voir si cela peut être fait directement via QGIS, mais vos deux réponses sont excellentes, merci!
Horizen
Vous pouvez consulter ce fil et ses liens: gis.stackexchange.com/questions/70623/…
johns

Réponses:

9

Données de test:

  • QGIS 2.18.16, GRASS GIS 7
  • 4 pistes GPS
  • dans une grille de 1x1km

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.

entrez la description de l'image ici

entrez la description de l'image ici

II.)

Créez un Concave Hullavec Processing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull. J'ai utilisé un seuil de 0.1dans mon exemple. Si le seuil est trop bas, il pourrait y avoir des trous dans le polygone de sortie.

entrez la description de l'image ici

III.)

Maintenant, vous pouvez calculer la ligne "moyenne" à l'aide de l'algorithme squelette. Recherchez squelette dans le Processing Toolbox. Utilisez l' v.voronoi.skeletonoutil du GRASS GIS 7 commands.

entrez la description de l'image ici

Stefan
la source
7

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:

  • QGIS 2.18.16, GRASS GIS 7
  • 4 pistes GPS
  • dans une grille de 1x1km

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.

entrez la description de l'image ici

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 0et 89.7935. J'utilise uniquement les valeurs ci-dessus 44. 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.

entrez la description de l'image ici

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 de 2. 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.skeletonoutil des commandes GRASS GIS 7.

entrez la description de l'image ici

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:

  • bons résultats raisonnables en utilisant exclusivement QGIS

Désavantages:

  • temps de traitement pour les ensembles de données volumineux
  • vous devez essayer les paramètres a priori (rayon de la carte thermique, valeurs min / max)
  • difficile d'automatiser les étapes de traitement
  • non testé pour les virages / courbes étroits et pour les pistes qui sortent vraiment de la ligne

Si quelqu'un peut optimiser les étapes de traitement, bienvenue!

Stefan
la source
+1. Il s'agit d'une approche efficace pour trouver une «ligne moyenne». Ce n'est pas nécessairement la meilleure estimation de la ligne correcte , cependant. Pour voir pourquoi, imaginez que la plupart des chemins ont été parcourus très rapidement, mais l'un d'eux a été parcouru extrêmement lentement, suffisamment lentement pour que les erreurs à n'importe quel endroit se soient moyennées. Ce chemin unique fournirait la représentation la plus fiable de la vérité, mais en rééchantillonnant chaque chemin, ces informations seraient perdues et moyennées avec les nombreuses représentations les plus pauvres. C'est évidemment un cas extrême, mais en réalité, certains chemins peuvent être meilleurs que d'autres.
whuber
Je comprends. Merci pour votre réponse. Le plugin Heat Map dans QGIS fournit des options avancées, où vous le pouvez 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.
Stefan
Oui, vous pouvez le faire - mais aucune de ces techniques ne répond au souci que les données puissent avoir une autocorrélation (fortement positive). Pour y faire face, il faudrait quelque chose comme une analyse chronologique des chemins individuels.
whuber