Berechnen Sie die Abstände zwischen Punktserien in Postgis

8

Ich habe eine Postgres / Postgis-Tabelle mit einer Reihe aufeinanderfolgender Punkte. Ich möchte der Tabelle eine neue Spalte hinzufügen, die den Abstand zwischen jedem Punkt und dem ersten usw. enthält, bis alle Punkte verarbeitet sind (der erste Punkt sollte einen Abstand von 0 haben). Kann dies mit einer Abfrage erfolgen oder muss ich Python oder ein gleichwertiges Element verwenden, um eine Schleife zu erstellen? Danke vielmals


quelle
1
Willkommen bei gis.stackexchange @william! Ist Ihre mittlere "Entfernung zwischen jedem Punkt und dem ersten" oder "Entfernung zwischen jedem Punkt und dem vorherigen"? Sind Ihre Punkte nummeriert und geben die Reihenfolge an?
underdark
Oder suchen Sie nach einer Matrix, die jeden Punkt als Startpunkt verwendet und den Abstand zu jedem Punkt in der Ebene misst?
RyanKDalton

Antworten:

4

Hallo

Wenn Sie davon ausgehen, dass Sie ein ID-Feld namens gid haben und der erste Punkt gid 1 hat, können Sie Folgendes tun:

ALTER table my_table ADD COLUMN dist DOUBLE PRECISION;

UPDATE my_table SET dist=ST_Distance(my_table.geom, b.geom) 
FROM (SELECT geom FROM my_table WHERE gid = 1) b;

Dadurch wird eine Spalte mit dem Namen dist hinzugefügt und diese Spalte mit dem Abstand zum Punkt mit gid = 1 gefüllt

HTH Nicklas

Nicklas Avén
quelle