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

标签 postgresql postgis

我有一个带有 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/

相关文章:

postgresql - PostGis Erro 几何无效

postgresql - 如何在具有较新版本的系统上从旧版本的 PostGIS 恢复数据库转储?

gis - 使用 PGRouting 基于 GTFS 的交通规划

sql - Postgres 分组依据

ruby-on-rails - 议程日历/花名册 View

ruby-on-rails - 文本字段 : ERROR invalid body size 上的 Heroku Rails 日志错误消息

postgresql - 用户 "postgres"的密码不匹配

java - 如何获取之前的条目作为 id

php - 使用 PostGis 的 ST_AsPNG() 输出通过 PHP 创建图像

gis - postgis使用wgs84获取半径米内的几何图形