速度、距離、および時間のしきい値を組み合わせて、軌跡オブジェクトからドリフトポイントを削除します。軌跡ポイントは、3 つすべての条件が同時に満たされた場合にのみ削除されます。
構文
trajectory ST_removeDriftPoints(trajectory traj, float8 speed, float8 dist, interval offset);パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
traj | trajectory | ソースの軌跡オブジェクトです。 |
speed | float8 | 速度のしきい値 (単位:メートル/秒)。軌跡ポイントの位置と時間オフセットに基づいてリアルタイムで計算されます。 |
dist | float8 | 距離のしきい値 (単位:メートル)。現在のポイントから前のポイントまでの球面距離として測定されます。 |
offset | interval | 時間間隔のしきい値。PostgreSQL の interval 構文を使用します。例:interval '30 seconds' または interval '1 minute'。 |
軌跡ポイントは、その速度が speed を超え、前のポイントからの距離が dist を超え、かつ時間間隔が offset を超えた場合に削除されます。1 つまたは 2 つの条件しか満たさないポイントは保持されます。
戻り値
更新された軌跡オブジェクトを返します。返されるオブジェクトには、常に少なくとも 2 つの軌跡ポイントが含まれます。入力軌跡にちょうど 2 つのポイントしかない場合、ポイントは削除されません。
注意事項
座標参照系 (CRS):デフォルトでは、軌跡オブジェクトは世界測地系 1984 (WGS 84) を使用します。異なる CRS を使用するには、軌跡オブジェクトの作成時に空間参照系識別子 (SRID) を指定するか、後で ST_SetSRID を呼び出して設定します。球面距離は、設定された SRID に基づいて計算され、メートル単位で表されます。
例
この例では、53 個のポイントを持つ軌跡から、速度のしきい値 25.72 m/s (約 92.6 km/h)、距離のしきい値 9,620 m、時間のしきい値 30 秒を使用してドリフトポイントを削除します。2 つのポイントが 3 つすべての条件を満たしたため削除され、残りのポイント数は 49 になります。
-- 初期のポイント数を確認
SELECT id, st_leafcount(traj) FROM table_name WHERE id = 1;
id | st_leafcount
----+--------------
1 | 53
(1 row)
-- ドリフトポイントを削除:速度 > 25.72 m/s (約 92.6 km/h)、距離 > 9,620 m、時間間隔 > 30 秒
UPDATE table_name SET traj = ST_removeDriftPoints(traj, 25.72, 9620, interval '30 seconds') WHERE id = 1;
-- 2 つのドリフトポイントが削除されました。新しいポイント数:49
SELECT id, st_leafcount(traj) FROM table_name WHERE id = 1;
id | st_leafcount
----+--------------
1 | 49
(1 row)