2つの軌道が互いに付随する期間を計算します。
構文
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');Parameters
パラメーター | 説明 |
traj1 | 軌道の番号は1です。 |
traj2 | 軌道番号2。 |
tol_dist | 付随する距離。 2つの軌道間の距離がこの値未満である場合、2つの軌道は互いに付随していると見なされる。 対応する空間参照系におけるデフォルトの距離測定ユニットが使用される。 説明 ほとんどの場合、空間参照システム識別子 (SRID) が4326されるとき、距離はメートル単位で測定されます。 |
merge_gap | ST_AccompanyIntervals: 2つの期間の間隔が指定されたmerge_gapよりも小さい場合、2つの期間がマージされます。 マージは、merge_gapを指定した後にのみ行われます。 ST_AccompanyParts: 付随するサブ軌道の2つのグループ間の距離が指定されたmerge_gapよりも小さい場合、サブ軌道の2つのグループはマージされます。 マージは、merge_gapを指定した後にのみ行われます。 |
min_length | 付随する期間の持続時間が指定されたmin_lengthよりも短い場合、その期間は破棄される。 分割は、min_lengthを指定した後にのみ行われます。 |
dist_config | 距離を計算するために使用される方法。 有効な値:
|
戻り値
戻り値 | 説明 |
start_time | 付随する期間の開始時刻。 |
end_time | 付随する期間の終了時間。 |
traj1 | 軌道1上のサブ軌道。 |
traj2 | 軌道2上のサブ軌道。 |
説明
関数は、2つの軌道間の距離がtol_distよりも小さい期間を返します。
ST_AccompanyIntervals: 2つの付随する期間の間隔が指定されたmerge_gapよりも小さい場合、2つの期間がマージされます。 マージ後の付随する期間の長さが指定されたmin_lengthよりもまだ短い場合、その期間は破棄される。
ST_AccompanyParts: 付随するサブ軌道の2つのグループ間の距離が指定されたmerge_gapよりも小さい場合、サブ軌道の2つのグループはマージされます。 マージ後の付随する期間の長さが指定されたmin_lengthよりもまだ短い場合、その期間は破棄される。
ST_AccompanyIntervals関数は、2つの軌道が互いに付随する期間を返します。 ST_AccompanyPartsは、期間中の軌道1と軌道2のサブ軌道を返します。
例
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)