使用ST_Distance需要两个几何点,其中我有一个带有50个几何记录的'geom'列,我需要找到连续行之间的距离。
假设我需要找到第一行和第二行之间的距离,然后找到第二行和第三行之间的距离,依此类推。
创建表“gdata” ( device_ID text,data_ID bigserial NOT NULL,geom geometry )
[创建表格]
[http://i.stack.imgur.com/gi9a3.png]
我使用了以下查询来订购。
从“gdata”ORDER BY device_ID
中选择device_ID,geom因此,我获得,
[http://i.stack.imgur.com/6RWig.png]
预期输出是一个名为“distance”的单独列,其中,我计算第一个几何点和第二个几何点之间的距离,然后计算第二个几何值和第三个几何值,依此类推,以获得“的geom”。
提前致谢:)!
答案 0 :(得分:1)
使用lag
函数和1作为偏移量:
SELECT * FROM (
SELECT (lag(data_ID,1) OVER (order by data_ID)) AS from_id,
data_ID as to_id,
ST_Distance(geom, lag(geom,1) OVER (order by data_ID )) AS distance
FROM gdata
) AS foo WHERE distance IS NOT NULL;
不确定data_ID是否是订单的正确字段。也许是device_ID?