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

Query for finding the distance between geometries from consecutive rows in postgreSQL

使用 ST_Distance 需要两个几何点,其中我有一个包含 50 条几何记录的 'geom' 列,为此我需要找到连续行之间的距离。

假设我需要找到第一行和第二行之间的距离,然后是第二行和第三行等等。

创建 TABLE "gdata" ( device_ID 文本,data_ID bigserial NOT NULL,几何几何 )

[已创建 table]

[http://i.stack.imgur.com/gi9a3.png]

我已使用以下查询进行订购。

select device_ID, geom 来自 "gdata" ORDER BY device_ID

因此我得到,

[http://i.stack.imgur.com/6RWig.png]

预期输出是一个名为"distance"的单独列,其中,我计算第一个几何点和第二个几何点之间的距离,然后是第二个几何值和第三个几何值,依此类推,以获得连续的数字"geom".

中的点数

提前致谢:)!

使用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?