Ich habe gerade angefangen, mit räumlichen Datenbanken zu arbeiten, und möchte eine SQL-Abfrage (PostGIS) zur automatischen Verallgemeinerung von rohen GPS-Tracks (mit fester Tracking-Frequenz) schreiben. Das erste, woran ich arbeite, ist eine Abfrage, die Stillstandspunkte in Form einer Abfrage wie "x Punkte in einem Abstand von y Metern" identifiziert, um massive Punktwolken durch repräsentative Punkte zu ersetzen. Ich habe bereits erkannt, dass ich Punkte innerhalb einer bestimmten Entfernung fangen und die gerissenen zählen muss. Im Bild unten sehen Sie eine rohe Beispielspur (kleine schwarze Punkte) und die Zentren der Fangpunkte als farbige Kreise (Größe = Anzahl der Fangpunkte).
CREATE table simplified AS
SELECT count(raw.geom)::integer AS count, st_centroid(st_collect(raw.geom)) AS center
FROM raw
GROUP BY st_snaptogrid(raw.geom, 500, 0.5)
ORDER BY count(raw.geom) DESC;
Ich wäre mit dieser Lösung genauso zufrieden, aber es gibt das Zeitproblem: Stellen Sie sich die Strecke als Ganztagesstrecke in einer Stadt vor, in der die Person zu bereits zuvor besuchten Orten zurückkehren kann. In meinem Beispiel repräsentiert der dunkelblaue Kreis das Haus der Person, die sie zweimal besucht hat, aber meine Anfrage ignoriert das natürlich.
In diesem Fall sollte die anspruchsvolle Abfrage nur Punkte mit zusammenhängenden Zeitstempeln (oder IDs) sammeln, damit hier zwei repräsentative Punkte erzeugt werden. Meine erste Idee war eine Änderung meiner Abfrage auf eine 3D-Version (Zeit als dritte Dimension), aber es scheint nicht zu funktionieren.
Hat jemand einen Rat für mich? Ich hoffe, dass meine Frage klar ist.
Danke für die Line-Idee. Ich habe festgestellt, dass ich einen Linestring erstellen und vereinfachen muss, wie Sie im folgenden Screenshot sehen können (Punkte sind Originalpunkte). Was ich noch brauche, ist die Bestimmung der Ruheplätze (> x Punkte in <x Metern Radius), idealerweise als ein Punkt mit einer Ankunfts- und einer Abfahrtszeit ... irgendwelche anderen Ideen?