查询从 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?
使用 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?