table 中实际点与前一点之间的 PostGIS 距离查询
PostGIS distance query between actual and previous point in table
早上好,
我在 postgres 数据库中使用以下 table(具有 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
"
因此,我在两个特定点之间只有一个距离,并且很难以这种方式为每一行手动完成。有没有人有想法自动计算每个点之间的距离?
非常感谢!
您可以使用 LAG
函数将前一行的几何值与每一行相关联。然后就可以查询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
早上好, 我在 postgres 数据库中使用以下 table(具有 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
"
因此,我在两个特定点之间只有一个距离,并且很难以这种方式为每一行手动完成。有没有人有想法自动计算每个点之间的距离?
非常感谢!
您可以使用 LAG
函数将前一行的几何值与每一行相关联。然后就可以查询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