Berechnen Sie die kürzeste Entfernung zwischen Punkt und Linie mit QGIS?


12

Was ist die beste Methode, um die Entfernung von der nächsten Straße für eine Reihe von Adresspunkten in QGIS mit einem sehr großen Datensatz zu berechnen? (QGIS 2.0.1, Win XP)

Ich habe die Antworten auf ähnliche Fragen gelesen:

Messen des Abstands zwischen Linien und Punkten in QGIS

Zeichnen senkrechter Linien in PyQGIS?

Berechnen Sie den Mindestabstand zwischen Punkten und Polygonen in QGIS?

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

Dennoch:

  1. Das MMQGIS-Plugin ermittelt die Entfernung zum nächsten Knoten eines Leitungsnetzes, nicht die kürzeste (senkrechte) Entfernung zu einer Leitung.

  2. Die von R und Python vorgeschlagenen Skripte funktionieren ordnungsgemäß für kleine Datensätze und können im Modellierer implementiert werden. Für meine Arbeit habe ich jedoch 530 Punkte und einen regionalen Straßenlayer mit ca. 135.000 Features. Durchlaufen Sie alle Features und nehmen Sie dann die kürzeste Entfernung für Alle Punkte werden enorm viel Zeit in Anspruch nehmen

  3. Ich habe Probleme, GRASS in QGIS 2.0.1 zum Laufen zu bringen ( GRASS in QGIS funktioniert nicht (Windows XP) ).


1
Ich habe es geschafft, den Mindestabstand in QGIS 1.8.0 mit dem GRASS-Plugin und dem v.distance- Tool zu berechnen . Die Ausführung dauert ca. 15 Minuten (zuzüglich der Zeit, die zum korrekten Festlegen von GRASS und zum Importieren von Layern aufgewendet wurde ...). Warum ist ArcGIS (es, Join nach räumlicher Position) im Vergleich immer noch so schnell?
mic_cord

1
Es geht darum, einen für die Aufgabe optimierten räumlichen Index und Code zu haben. Ich habe gerade mit unserer Routing-Bibliothek (RW Net 4) nachgesehen, und sie kann 2000 solcher Berechnungen pro Sekunde für ein Straßennetz von App ausführen. die gleiche Größe wie deine. Machen Sie es ungefähr 4000-mal schneller als Ihr GRASS-Plugin.
Uffe Kousgaard

3
Postgis sollte es schnell machen
Nicklas Avén

1
@mic_cord Kannst du bitte eine ausführliche Erklärung deiner GRASS Plugin v.distance Methode geben? Ich habe v.distance erfolgreich für die Arbeit mit GRASS außerhalb von QGIS erhalten, kann es jedoch nicht für die Verarbeitungs-Toolbox (QGIS 2.6) verwenden.
user25976

Antworten:


6

Wir haben ein ähnliches Problem gelöst. Der beste und schnellste Weg für uns ist:

  1. Linienebene rastern (Raster / Konvertieren / Rasterisieren ...)
  2. In Nähe konvertieren (Raster / Analyse / Nähe ...)
  3. Verwenden Sie das Punkt-Sampling-Tool des Plugins, um Werte für Ihren gesamten Punkt aus dem Raster abzurufen

4

Einige der Antworten zum Messen des Abstands zwischen Linien und Punkten in QGIS empfehlen das NNJoin QGIS-Plugin ( http://arken.nmbu.no/~havatv/gis/qgisplugins/NNJoin/ ). Es wird eine räumliche Verbindung zum nächsten Nachbarn erstellt und die Entfernung in das Ergebnis einbezogen. Das NNJoin- Plugin verwendet einen räumlichen Index, daher sollte es relativ große Datensätze verarbeiten.


Tveite, ich stimme Ihrem Vorschlag zu. Ich war sehr überrascht, dass dieses Plugin schneller funktionierte als ein empfohlenes Paket in R (dh geosphere :: dist2Line).
Johanness
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.