[postgis-users] sequential query
Kevin Neufeld
kneufeld at refractions.net
Mon Jan 4 14:35:55 PST 2010
I think you can do this with a simple UPDATE statement.
postgis=# select id, asewkt(geom), distance from pts;
id | asewkt | distance
----+---------------+----------
1 | POINT(0 1 7) |
2 | POINT(0 3 7) |
3 | POINT(0 6 7) |
4 | POINT(0 12 7) |
5 | POINT(0 55 7) |
(5 rows)
UPDATE pts a
SET distance = st_length3d(st_makeline(a.geom, b.geom))
FROM pts b
WHERE a.id + 1 = b.id;
postgis=# select id, asewkt(geom), distance from pts order by id;
id | asewkt | distance
----+---------------+----------
1 | POINT(0 1 7) | 2
2 | POINT(0 3 7) | 3
3 | POINT(0 6 7) | 6
4 | POINT(0 12 7) | 43
5 | POINT(0 55 7) |
(5 rows)
-- Kevin
Tomas Lanczos wrote:
> Dear all,
>
> I am not sure whether am I using correct terminology in the subject, so
> I will try to explain my problem:
>
> I am trying to write a spatial query to measure a a 3D distance between
> two neighboring points. The basic query I prepared is the following:
>
> "UPDATE particle_set_3dps set distance = (SELECT
> ST_length3d(ST_MakeLine((SELECT particle_set_3dps.the_geom from
> particle_set_3dps where id = 1), (SELECT particle_set_3dps.the_geom
> from particle_set_3dps WHERE id = 2)))) where id = 1; "
>
> What I need further is the distance between points with id = 2 and id =
> 3, between id=3 and id=4, between id=4 and id=5 etc. ...
>
> I assume that it is not so complicated to write a query for that, but I
> never needed it until now and I don't know what therms to use as
> keywords to find an answer somewhere, also due to my poor English (shame
> on me, I know ... ;)).
>
> Best regards and many thanks in advance
>
> Tomas
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
More information about the postgis-users
mailing list