Mehr

Zeitdifferenz zwischen aufeinanderfolgenden Punkten der GPX-Datei?

Zeitdifferenz zwischen aufeinanderfolgenden Punkten der GPX-Datei?


Ich befinde mich in einem Kurs zum Erlernen von GIS-Systemen und wir haben kürzlich einen GPS-Track aufgezeichnet. Ich habe diesen Track exportiert als.gpxund importierte die Punkte in QGIS.

Jeder Punkt hat aZeitstempel. Eines der Dinge, die mich interessieren, ist die zeitliche Auflösung meiner Datei zu finden, wodurch eine Art "Deltazeit" zwischen jedem Punktpaar benötigt wird.

Also, was ich wissen möchte: Wie führt man Berechnungen zwischen verschiedenen Punkten in einer Vektorebene durch? Ich habe keine Erfahrung mit Python (aber MatLab wäre wohl möglich), also würde ich es gerne mit dem Feldrechner machen.


Wenn Sie aus Werten in verschiedenen Zeilen Ihrer Daten berechnen möchten, sollten Sie Ihre Datenquelle zweimal in QGIS öffnen und eine Verbindung zwischen den beiden Kopien desselben Layers herstellen. In Ihrem Fall ist es etwas komplizierter, da QGIS nur Equi-Join erlaubt, nicht wie first_table.id = second_table.id-1. Erstellen Sie also zwei Kopien Ihres Layers im Shape-Format, sortiert nach Zeit und legen Sie die IDs so fest, dass sie für den Join nützlich sind. Ich würde Daten in eine Datenbank (SpatiaLite oder PostGIS) laden und SQL verwenden.


Wenn Sie als Backend Zugriff auf PostGIS haben, können Sie die Verzögerung()Window-Funktion, die genau Ihr Problem löst, also den Wert eines vorherigen Datensatzes in die Berechnung des aktuellen Datensatzes einbezieht.

Vorausgesetzt, IhrPunkteSchicht hat dieZeitstempel_Feld. Die SQL wäre ungefähr so:

SELECT timestamp_ - lag(timestamp_) OVER () AS tdiff FROM Punkte ORDER BY timestamp_;

Daslag() über()Funktion gibt die vorherige Zeile zurück, die die vorherige istZeitstempel_wegen derBESTELLEN NACH Zeitstempel_Klausel.

Sie können die Abfrage entweder direkt in PostreSQL oder über das DB Manager-Plugin von QGIS ausführen (nachdem Sie Ihre Punkte direkt in PostGIS oder über QGIS importiert haben).


Wenn es sich um einen GPS-Track handelt, sollten die Punkte in der richtigen Reihenfolge sein. Sie können also einfach den Track ablaufen und die Zeitstempel der beiden benachbarten Punkte vergleichen und die Felder point1id, point2id, deltatime in eine Tabelle ausgeben. Sie könnten in Python tatsächlich direkt auf der gpx-Spur arbeiten, ohne sich mit qgis herumschlagen zu müssen.