我有一个postgis数据库(postgres 8.4.11,postgis 1.5.2),里面有gps-观察值,我想要计算一些旅行距离。
我计算了一个小时后从一个点到另一个点的行进距离,使用select observedid,ST_Distance(p1.shape_utm,p2.shape_utm) from gpspoint p1,gpspoint p2 where p2.datetime=p1.datetime+interval '1 hour‘
(当然还有一点,但这是其中的距离部分)我将它定义为一个视图,以便可以轻松地执行select * from movement_view where observedid=42
问题1:是否可以创建视图,以便我也可以定义时间间隔?
例如select * form movement_view where observedid=42 and interval='15分钟‘?
问题2:在SQL/postgis中是否可以计算一段时间内行驶的总距离?我有一个gpspoint每5秒,并想计算旅行距离,例如1小时以下的每个gps点。我可以使用与上面相同的方法计算每个点的行进距离,然后我也许能够使用sum()函数,但是如何计算呢?
表定义: id整数,
gpsstatus状态字符(2),
不带时区的datetime时间戳,
最新数字(9,6),
lon数字(9,6),
alt数字(9,4),
时间整数,
数据文件integer整数,
形状几何,
速度双精度,
dist双精度
shape_utm几何,
lokalitet字符(128),
cowid整数
Id:主键有datetime,lokalitet,cowid,gpsstatus,gist-index on shape和shape_utm的索引。
发布于 2012-05-23 17:59:25
问题1:
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'问题2:
从您的点创建一条直线并计算长度:
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 hourshttps://stackoverflow.com/questions/10606730
复制相似问题