【问题标题】:PostGIS distance query between actual and previous point in table表中实际点与前一点之间的 PostGIS 距离查询
【发布时间】:2017-05-06 11:47:44
【问题描述】:

早上好, 我正在使用 postgres 数据库中的下表(带有 postgis 函数):

[id],[time],[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
"

因此,我在两个特定点之间只有一个距离,并且很难以这种方式为每一行手动完成。有人知道自动计算每个点之间的距离吗?

非常感谢!

【问题讨论】:

    标签: sql postgresql distance postgis point


    【解决方案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
    

    【讨论】:

    • 是的,非常感谢,它运行良好:) 转换成米后,我得到了我预期的结果:) 谢谢你,周末愉快!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多