Speichern von GPS-Tracks mit Zeitstempeln in PostGIS


8

Ich muss eine Reihe von GPS-Punkten mit Zeitstempeln in der Datenbank speichern (Spuren verschiedener Fahrzeuge).

Ich frage mich, welchen von zwei Ansätzen ich wählen soll, um sie in der PostGIS-Tabelle zu speichern: 1.) Jeder Punkt in einer eigenen Zeile mit separater Spalte für den Zeitstempel und einer für die Spur-ID

2.) Verwenden Sie Linestring oder MultiLineString mit der vierten M-Koordinate, die den UNIX-Zeitstempel der Zeit für den Punkt auf der Spur enthalten würde. Dies würde eine einzelne Zeile für jede einzelne Spur bedeuten.


Ich verstehe nicht, was Sie unter einer vierten M-Koordinate verstehen, die einen UNIX-Zeitstempel enthalten würde. Kannst du genauer sein? Ist es nicht besser, den Zeitstempel in einem separaten Feld zu speichern?
Benjamin Toueg

Antworten:


2

Dies hängt davon ab, was Sie mit den Daten tun möchten, sobald sie in die Datenbank geladen wurden. Wenn jedem Datenpunkt zusätzlich zur Zeit Attribute zugeordnet sind (z. B. Ablesen der Motortemperatur, ein Foto) oder Sie die Punktdaten in einer Analyse verwenden möchten, ist es eine gute Wahl, jedes Datum in einer eigenen Zeile zu speichern.

Wenn jeder Spur Attribute zugeordnet sind (z. B. Ereignisname) oder Ihre Analysen sich auf Spuren befinden (z. B. Spurkreuzungen finden), ist es sinnvoller, jede als (MULTI) LINESTRING zu speichern.

Wenn Sie sich für einen Ansatz entscheiden, werden Sie nicht daran gehindert, die Analysen im anderen durchzuführen. Es sind nur einige zusätzliche Schritte erforderlich.


4

Persönlich speichere ich die von meinem GPS-Gerät gesammelten Daten als Punktebene mit einem Zeitstempelfeld. Dann kann ich ST_Makeline verwenden, wenn ich die Linienzeichenfolgen benötige. Wenn Sie Postgres 9.0+ haben, können Sie in Ihren aggregierten Aufrufen ein ORDER BY verwenden, um sicherzustellen, dass die Linie in chronologischer Reihenfolge von Punkt zu Punkt verläuft. Ich verliere die M-Werte entlang der erstellten Linien, aber wenn ich sie brauche, habe ich immer die Punktebene, die ich im Hintergrund verwenden kann.


0

Ich habe den Zeitstempelwert des Koordinatenteils 'z' von Punkt xyz verwendet, der auf Sekunden (nicht Millisekunden) minus Beginn der ersten Koordinate gekürzt wurde, um das Speichern des großen 'z'-Werts zu vermeiden.

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.