postgres连续点之间的距离

时间:2015-11-11 10:26:06

标签: postgresql postgis

我的表格如下

1;"2015-10-02";"POINT(lat,lon) as geometry"
2;"2015-10-03";"POINT(lat,lon) as geometry"
3;"2015-10-04";"POINT(lat,lon) as geometry"

如何找到两个连续点之间的距离?

所以我有id = 1和id = 2它们之间的距离= 99m(距离可以在[1,2],[2,3],[3,4]之间找到等等

然后如果距离< 100米汇总他们

我还没走得很远

这给了我距离,但我不知道如何获得下一行的几何

SELECT st_distance_sphere(t.latlon,next.latlon) from test as t where id=1

然后我尝试将距离作为附加列读取,但可以找出正确的查询

UPDATE test SET dist=ST_Distance(test.latlon, next.geom) 
FROM (SELECT latlon FROM test WHERE id = test.id + 1) into b;

1;"2015-10-02";"POINT(lat,lon) as geometry";distance between 1 and 2
2;"2015-10-03";"POINT(lat,lon) as geometry";distance between 2 and 3
3;"2015-10-04";"POINT(lat,lon) as geometry";distance between 3 and 4

1 个答案:

答案 0 :(得分:3)

要获取当前点与下一点之间的距离,您可以使用window function lead,如下所示:

select
        test.*,
        st_distance(latlon, lead(latlon, 1, latlon) over(order by id)) as distance
    from test;