Ich habe alle fünf Sekunden eine PostGIS-Tabelle mit GPS-Positionen:
2011-01-01 00:00:05, POINT(x1,y1)
2011-01-01 00:00:10, POINT(x2,y2)
2011-01-01 00:00:15, POINT(x3,y3)
...
Ich suche nach einer Abfrage, die Werte (Zeitstempel und Punkt) für jede Sekunde zurückgibt. Es ist in Ordnung anzunehmen, dass Punkte durch eine gerade Linie verbunden sind.
Ich suche speziell nach einer Möglichkeit, dies in der Datenbank zu tun und nicht durch das Schreiben eines externen Skripts.
postgis
sql
interpolation
Underdunkel
quelle
quelle
Antworten:
Hallo
Wenn Ihre ursprüngliche Tabelle gps_p heißt, heißt Ihr Zeitstempelfeld ts und die Punkte th_geom:
Was es tut, ist, dass es Linien zwischen den Punkten baut und st_segmentize verwendet, um die Linie in 5 Segmente zu teilen.
Wenn zwischen den ursprünglichen Punkten nicht genau 5 Sekunden liegen, funktioniert dies nicht. Dann können Sie einfach ein ID-Feld mit einer Sequenz hinzufügen und dieses verwenden, um sich stattdessen mit id1 + 1 = id2 selbst in die Tabelle einzutragen.
HTH
/ Nicklas
quelle
Hier ist ein Code-Entwurf für pl / Python. Es ist nur die Grundidee, die Punkte um eine bestimmte Distanz und einen bestimmten Azimut zu übersetzen.
Um Postgis-Funktionen in pl / python auszuführen, war die einzige Lösung, die ich gefunden habe, die Verwendung von plpy.prepare und plpy.execute (sehr langweilig).
quelle
Wenn ich mich nicht irre ...
Was Sie tun müssten, ist, die Verbindungslinie zu bestimmen und sie dann zu teilen.
quelle