計算兩條軌跡伴隨運動的區間。
文法
Table(timestamp start_time, timestamp end_time) ST_AccompanyIntervals(trajectory traj1, trajectory traj2, double precision tol_dist, interval merge_gap default '0 minute', interval min_length default '0 minute', character(1) dist_config defaut 'A');
Table(trajectory traj1, trajectory subtraj2) ST_AccompanyParts(trajectory traj1, trajectory traj2, double precision tol_dist, interval merge_gap default '0 minute', interval min_length default '0 minute', character(1) dist_config defaut 'A');參數
參數名稱 | 描述 |
traj1 | 軌跡對象1。 |
traj2 | 軌跡對象2。 |
tol_dist | 伴隨距離,小於此距離時認為兩條軌跡伴隨運動。使用對應SRID下預設的距離單位。 說明 通常情況下,當SRID=4326時,使用米為單位。 |
merge_gap |
|
min_length | 當一個伴隨時間段的時間長度小於min_length時,將其捨棄。若不指定,不進行捨棄。 |
dist_config | 距離計算的方式,取值範圍如下:
|
傳回值
返回列名稱 | 描述 |
start_time | 伴隨時間開始。 |
end_time | 伴隨時間結束。 |
traj1 | 軌跡對象1上的子軌跡。 |
traj2 | 軌跡對象2上的子軌跡。 |
描述
同一時刻的提取軌跡上,兩條軌跡之間距離小於tol_dist的軌跡時間段。
在ST_AccompanyIntervals中如果兩個時間段之間距離小於merge_gap,則將兩個時間段合并。執行完合并步驟之後,如果有一個伴隨時間段長度依然小於min_length,將其捨棄。
在ST_AccompanyParts中如果兩個子軌跡之間距離小於merge_gap,則將兩個子軌跡合并。執行完合并步驟之後,如果有一個伴隨時間段長度依然小於min_length,將其捨棄。
ST_AccompanyIntervals返回對應的時間段,而ST_AccompanyParts則返回這些時間段上traj1和traj2的子軌跡。
樣本
ST_AccompanyIntervals
With traj AS ( SELECT ST_MakeTrajectory('STPOINT','LINESTRING(0 0, 1 0, 0 0)'::geometry, '2000-01-01'::timestamp, '2000-01-03', NULL) as a, ST_MakeTrajectory('STPOINT','LINESTRING(0 0, 0 0, 0 0)'::geometry, '2000-01-01'::timestamp, '2000-01-03', NULL) as b ) SELECT (ST_AccompanyIntervals(a,b,0.5)).* from traj;返回結果如下:
start_time | end_time ---------------------+--------------------- 2000-01-01 00:00:00 | 2000-01-01 12:00:00 2000-01-02 12:00:00 | 2000-01-03 00:00:00 (2 rows)區間合并
With traj AS ( SELECT ST_MakeTrajectory('STPOINT','LINESTRING(0 0, 1 0, 0 0)'::geometry, '2000-01-01'::timestamp, '2000-01-03', NULL) as a, ST_MakeTrajectory('STPOINT','LINESTRING(0 0, 0 0, 0 0)'::geometry, '2000-01-01'::timestamp, '2000-01-03', NULL) as b ) SELECT (ST_AccompanyIntervals(a,b,0.5,'2 day')).* from traj;返回結果如下:
start_time | end_time ---------------------+--------------------- 2000-01-01 00:00:00 | 2000-01-03 00:00:00 (1 row)ST_AccompanyParts
With traj AS ( SELECT ST_MakeTrajectory('STPOINT','LINESTRING(0 0, 1 0, 0 0)'::geometry, '2000-01-01'::timestamp, '2000-01-03', NULL) as a, ST_MakeTrajectory('STPOINT','LINESTRING(0 0, 0 0, 0 0)'::geometry, '2000-01-01'::timestamp, '2000-01-03', NULL) as b ) SELECT (ST_AccompanyParts(a,b,0.5)).* from traj;返回結果如下:
traj1 | traj2 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {"trajectory":{"version":1,"type":"STPOINT","leafcount":2,"start_time":"2000-01-01 00:00:00","end_time":"2000-01-01 12:00:00","spatial":"LINESTRING(0 0,0.5 0)","timeline":["2000-01-01 00:00:00","2000-01-01 12:00:00"]}} | {"trajectory ":{"version":1,"type":"STPOINT","leafcount":2,"start_time":"2000-01-01 00:00:00","end_time":"2000-01-01 12:00:00","spatial":"LINESTRING(0 0,0 0)","timeline":["2000-01-01 00:00:00","2000-01-01 12:00:00"]}} {"trajectory":{"version":1,"type":"STPOINT","leafcount":2,"start_time":"2000-01-02 12:00:00","end_time":"2000-01-03 00:00:00","spatial":"LINESTRING(0.5 0,0 0)","timeline":["2000-01-02 12:00:00","2000-01-03 00:00:00"]}} | {"trajectory ":{"version":1,"type":"STPOINT","leafcount":2,"start_time":"2000-01-02 12:00:00","end_time":"2000-01-03 00:00:00","spatial":"LINESTRING(0 0,0 0)","timeline":["2000-01-02 12:00:00","2000-01-03 00:00:00"]}} (2 rows)