Ich suche Hilfe bei der Berechnung des Abstands zwischen einer Folge von Punkten, die sich in einem einzelnen Shapefile in QGIS befinden. Im Folgenden sehen Sie, wie meine Daten aussehen, und eine leere Abstandsspalte, die ich hinzugefügt habe, um zu zeigen, wie die Entfernung aussehen soll. Ich möchte den Abstand zwischen Punkt 1 und 2, 2 und 3 usw. wissen. Ich möchte, dass der Abstand in Metern oder km angegeben wird, aber derzeit befindet sich mein Shapefile in einer Projektion, deren Einheiten Dezimalgrade sind.
ID LAT LON TIME DISTANCE
1 10.08527 124.59833 21:24:37 0
2 10.08523 124.59830 21:25:07 ?
3 10.08526 124.59832 21:25:37 ?
4 10.08526 124.59831 21:26:07 ?
Eine Reihe von Leuten haben ähnliche Fragen gestellt, aber keiner versteht genau, was ich tun möchte. Dieser Beitrag ist in der Nähe, aber dies ist in PostGIS, nicht in QGIS. Berechnen Sie die Abstände zwischen Punktserien in Postgis
Dieser Beitrag hat mich auf dem Weg dorthin dorthin gebracht, aber da ich neu bei QGIS bin, bietet die Antwort nicht genügend Details für mich. Wenn ich beispielsweise das GRASS-Plugin installiert habe, muss ich das Shapefile mit meiner Reihe von GPS-Punkten in GRASS speichern / importieren, damit ich das v.distance-Modul verwenden kann, aber ich weiß nicht, wie das geht . QGIS berechnet die Entfernung des Punkts entlang einer Linie
Ist das GRASS v.distance-Modul der einzige Weg? Oder gibt es einen direkteren Weg? Wenn v.distance der einzige Weg ist, kann mich jemand darauf hinweisen oder Schritt für Schritt erklären, wie das geht?
Antworten:
Ich kehre zu diesem Problem zurück, da es sehr ähnlich zu Wie finde ich Vektorlinienpeilung in QGIS oder GRASS? und es kann mit Python auf die gleiche Weise gelöst werden:
1) Haversine Abstand
Man kann viele Skripte finden, indem man die Haversine-Entfernung mit Python im Internet durchsucht, und ich wähle eine davon in der Haversine-Formel in Python (Peilung und Entfernung zwischen zwei GPS-Punkten).
Wir haben eine Reihe von Linien (Punkten) in der Datei, die paarweise behandelt werden müssen (Punkt1 - Punkt2), um die Entfernung zu berechnen. Dazu verwenden wir einen einfachen Iterator von Most Python, um das vorherige Element zu erhalten
Jetzt ist es möglich, die Datei (Beispiel von Kerrie) in Linien- / Punktpaaren zu lesen
Erstellen Sie dann mit den Python-Modulen Shapely und Fiona von Sean Gillies ein Shapefile, das die ursprünglichen Felder der CSV-Datei und ein neues Feld für die Entfernung enthält:
und das Ergebnis:
Es ist auch möglich, dies mit PyQGIS zu tun, aber es ist komplexer als Fiona, das einfache Wörterbücher zum Erstellen von Shapefiles verwendet.
Sie können problemlos eine andere Funktion verwenden, um die Haversine-Entfernung zu berechnen ( Warum ist das Cosinusgesetz bei der Berechnung der Entfernung zwischen zwei Breiten- und Längengradpunkten dem Haversine vorzuziehen? ). Nur die Entfernungsberechnung ändert sich, nicht der Prozess der Erstellung des Shapefiles.
quelle
Wenn Sie mit r vertraut sind, versuchen Sie es mit einer Kombination aus dem Paket 'sp' und 'dismo'.
Zum Beispiel so (vorausgesetzt, es gibt Punkte mit x-, y-Koordinaten):
quelle
Vielleicht hilft das Distanzmatrix-Tool? Es ist unter dem Vektor-Menü. Für jeden Punkt wird der Abstand zu jedem der anderen Punkte berechnet und das Ergebnis in einer CSV-Datei gespeichert.
Wenn Sie die Entfernungen in Metern angeben möchten, ist es meiner Meinung nach sinnvoll, Ihre Punkte von lat / lon in ein projiziertes Shapefile (in Ihrem Fall möglicherweise UTM51) umzuwandeln, bevor Sie das Tool verwenden.
N.
quelle
Verwenden Sie v.to.db in GRASS (z. B. über das Sextante-Plugin) mit der Option = Länge (Zeilenlänge).
Beispiel für das Hochladen von Zeilenlängen (in Metern) jeder Vektorzeile in die Attributtabelle (füllen Sie die entsprechenden Felder in der GUI aus):
v.to.db map=roads option=length type=line col=linelength units=me
quelle
Ich finde, dass dieses Problem am einfachsten zu lösen ist, indem man in einer Tabelle arbeitet. Verwenden Sie nicht das GIS. Ich fand die Arbeit von Chris Veness sehr hilfreich -
http://www.movable-type.co.uk/scripts/latlong.html
Wenn Sie im unteren Absatz scrollen, finden Sie Links zu zwei Excel-Tabellen:
http://www.movable-type.co.uk/scripts/latlong-distance+bearing.xls
http://www.movable-type.co.uk/scripts/latlong-dest-point.xls
Siehe auch;
Warum ist das Kosinusgesetz bei der Berechnung der Entfernung zwischen zwei Breiten- und Längengradpunkten dem Haversinus vorzuziehen?
und Sie können gis.se nach haversine durchsuchen.
Prost
quelle