查询在postgreSQL中查找连续行中几何之间的距离

时间:2015-10-27 08:43:15

标签: postgresql postgis

使用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”。

提前致谢:)!

1 个答案:

答案 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?