表中实际与前一点之间的PostGIS距离查询

时间:2017-05-06 11:47:44

标签: sql postgresql distance postgis point

早上起来, 我在postgres数据库中使用下表(使用postgis函数):

[id],[时间],[geom](但ID相同)(按时间排序)

这意味着,每个时间戳都有一个特定点! 现在我想计算这些点之间的距离,这意味着与前一个点的实际点。 (并不总是第一个!)。

我使用以下查询手动计算以下两点的距离:

"select id,time,
ST_DISTANCE((SELECT geom FROM table WHERE time = '2017-01-01 07:03:59'),
(SELECT geom FROM table WHERE time = '2017-01-01 07:04:04')) as distance 
from(select id,time,st_dumppoints(geom) as dp from table where id = 145) as t1 order by zeit
"

因此,我在两个特定点之间只有一个距离,并且以这种方式手动为每一行进行操作非常困难。有没有人有想法自动计算每个点之间的距离?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以使用LAG功能将上一行的geom值与每行相关联。然后,您可以查询geom和prev_geom之间的距离。请注意,第一个prev_geom将为NULL,因此您需要根据需要进行处理。

SELECT id
      ,time
      ,geom
      ,ST_DISTANCE(geom, prev_geom) AS distance
  FROM (SELECT id
              ,time
              ,geom
              ,LAG(geom) OVER (ORDER BY time) AS prev_geom
          FROM table
       ) x