gpt4 book ai didi

postgresql - 在postgis中沿点查找路径长度

转载 作者:行者123 更新时间:2023-11-29 12:47:39 25 4
gpt4 key购买 nike

我有一个带有 gps 观测值的 postgis 数据库(postgres 8.4.11,postgis 1.5.2),我想在其中计算一些行进距离。

我计算一小时后从一个点到另一个点的行进距离选择 observedid,ST_Distance(p1.shape_utm,p2.shape_utm) from gpspoint p1, gpspoint p2 where p2.datetime=p1.datetime+interval '1 hour'

(当然还有一点,但这是其中的距离部分)我已将其定义为 View ,以便我可以轻松地执行选择 * from movement_view where observedid=42

问题一:是否可以制作 View 以便我也可以定义时间间隔?

例如选择 * 形成 movement_view where observedid=42 and interval='15 minutes' ?

问题二:在 SQL/postgis 中是否可以计算一段时间内行驶的总距离?我每 5 秒有一个 gpspoint 并且想计算例如行驶的距离每个 gps 点后 1 小时。我可以使用与上述相同的方法计算每个点的行进距离,然后我可以使用 sum() 函数,但如何使用?

表定义:id 整数,
gpsstatus 字符(2),
没有时区的 datetime 时间戳,
lat numeric(9,6),
lon 数字 (9,6),
替代数字(9,4),
时间整数,
datafileid 整数,
形状几何,
速度 double ,
dist double ,
shape_utm 几何体,
lokalitet字符(128),
coid 整数

Id: 主键 有datetime,lokalitet,cowid,gpsstatus 索引,shape 和shape_utm 有gist-index。

最佳答案

问题一:

CREATE VIEW movement_view AS
SELECT observedid, ST_Distance(p1.shape_utm,p2.shape_utm) as distance, p1.datetime as datetime1, p2.datetime as datetime2
FROM gpspoint p1, gpspoint p2;

SELECT * from movement_view where observedid = 42 and datetime2 = datetime1 + interval '15 minutes'

问题二:

从您的点创建一条线并计算长度:

SELECT hours,  st_Length(ST_MakeLine(t.shape_utm)) as distance FROM
(SELECT date_trunc('hour', datetime::timestamp) as hours, shape_utm FROM gpspoint order by datetime) as t
GROUP by hours

关于postgresql - 在postgis中沿点查找路径长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10606730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com