1

私はいくつかの移動距離を計算したいgps-observationsを備えたpostgisデータベース(postgres 8.4.11、postgis 1.5.2)を持っています。

gpspoint p1、gpspoint p2からselectobservedid、ST_Distance(p1.shape_utm、p2.shape_utm)を使用して、ある地点から別の地点までの移動距離を計算します。ここで、p2.datetime = p1.datetime +interval'1時間'

(もちろんもう少しですが、これは距離の部分です)これをビューとして定義したので、observedid=42のmovement_viewから*を簡単に選択できます。

質問1:時間間隔も定義できるようにビューを作成することは可能ですか?

例:select * form motion_view whereobservedid = 42 andinterval = '15minutes'?

質問2:SQL / postgisで一定期間の総移動距離を計算することは可能ですか?私は5秒ごとにgpspointを持っており、各gps-pointに続く1時間などの移動距離を計算したいと思います。上記と同じ方法で各ポイントの移動距離を計算できます。その後、sum()関数を使用できる可能性がありますが、どうすればよいでしょうか。

テーブル定義:id整数、
gpsstatus文字(2)、
タイムゾーンなしの日時タイムスタンプ、
lat数値(9,6)、
lon数値(9,6)、
alt数値(9,4)、
時間整数、
datafileid整数、
形状ジオメトリ、
速度倍精度、
dist倍精度、
shape_utmジオメトリ、
lokalitet文字(128)、
cowid整数

Id:主キーdatetime、lokalitet、cowid、gpsstatus、gist-indexにはshapeとshape_utmのインデックスがあります。

4

1 に答える 1

3

質問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 hours
于 2012-05-23T09:59:24.840 に答える