I have a postgres/postgis table containing a series of sequential points. I want to add a new column to the table which contains the distance between each point and the first one, and so forth until all the points are processed (the first point should have a distance of 0). Can this be done with a query or do I need to use Python or equivalent to create a loop? Many thanks
-
1Welcome to gis.stackexchange @william! Do your mean "distance between each point and the first one" or "distance between each point and the previous one"? Are your points numbered, indicating sequence?– underdarkCommented Jul 22, 2011 at 12:29
-
Or are you looking for a matrix, using each point as a start point and measuring the distance to each point in the layer?– RyanKDaltonCommented Jul 22, 2011 at 15:11
Add a comment
|
1 Answer
Hallo
If assume that you have an id field called gid and that the first point has gid 1 then you can do something like:
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;
That will add a column called dist and fill that column with the distance to the point with gid=1
HTH Nicklas