Calcul de la distance la plus courte d'un point à une ligne à l'aide de QGIS?

12

Quelle est la meilleure méthode pour calculer la distance de la route la plus proche pour une série de points d'adresse dans QGIS, ayant un très grand ensemble de données? (QGIS 2.0.1, Win XP)

J'ai lu les réponses aux questions similaires précédentes:

Mesurer la distance entre les lignes et les points dans QGIS

Dessiner des lignes perpendiculaires dans PyQGIS?

Calcul de la distance minimale entre des points et des polygones dans QGIS?

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

Cependant:

  1. Le plugin MMQGIS trouve la distance par rapport au nœud le plus proche d'un réseau de lignes, pas la distance la plus courte (perpendiculaire) à une ligne.

  2. Les scripts proposés par R et Python fonctionnent correctement pour les petits ensembles de données et peuvent être implémentés dans le modélisateur, mais pour mon travail, j'ai 530 points et une couche de rue régionale avec environ 135'000 entités, et parcourant toutes les entités, puis en prenant la distance la plus courte pour tous les points prendront énormément de temps

  3. J'ai des problèmes pour faire fonctionner GRASS dans QGIS 2.0.1 ( GRASS dans QGIS ne fonctionne pas (Windows XP) ).

mic_cord
la source
1
J'ai réussi à calculer la distance minimale dans QGIS 1.8.0 via le plugin GRASS et l' outil v.distance . L'exécution prend environ 15 minutes (plus le temps passé à définir correctement GRASS et à importer les couches ...). Pourquoi ArcGIS (es, jointure par emplacement spatial) est-il toujours aussi rapide en comparaison?
mic_cord
1
Il s'agit d'avoir un index spatial et un code optimisés pour la tâche. Je viens de vérifier avec notre bibliothèque de routage (RW Net 4) et elle peut faire 2000 calculs de ce type par seconde pour un réseau routier d'application. la même taille que la vôtre. Le rendant environ 4000 fois plus rapide que votre plugin GRASS.
Uffe Kousgaard
3
Postgis devrait faire vite
Nicklas Avén
1
@mic_cord Pouvez-vous donner une explication détaillée de votre méthode de plugin GRASS v.distance? J'ai réussi à obtenir v.distance pour travailler avec GRASS en dehors de QGIS, mais je ne parviens pas à le faire fonctionner dans la boîte à outils Traitement (QGIS 2.6).
user25976

Réponses:

6

Nous résolvions un problème similaire. Le moyen le meilleur et le plus rapide pour nous est:

  1. Rasteriser le calque de ligne (Raster / Conversion / Rasteriser ...)
  2. Convertir en proximité (raster / analyse / proximité ...)
  3. Utilisez l'outil d'échantillonnage de point plugin pour obtenir des valeurs pour tous vos points à partir du raster
Miro
la source
5

Certaines des réponses à Mesurer la distance entre les lignes et les points dans QGIS recommandent le plugin NNJoin QGIS ( http://arken.nmbu.no/~havatv/gis/qgisplugins/NNJoin/ ). Il fera une jointure spatiale du voisin le plus proche et inclura la distance dans le résultat. Le plugin NNJoin utilise un index spatial, il doit donc gérer des ensembles de données assez volumineux.

Håvard Tveite
la source
Tveite, j'appuie votre suggestion. J'ai été très surpris que ce plugin fonctionne plus rapidement qu'un package recommandé dans R (ie geosphere :: dist2Line).
Johanness