このトピックでは、ST_StayPoint関数について説明します。 この関数は、軌道のすべての滞在点を返します。 滞在ポイントは、移動軌跡オブジェクトが長時間滞在するポイントである。
構文
SETOF trstaypoint ST_StayPoint(trajectory traj、interval resample_int、float dr、interval dt、float thres);
TABLE (ポイントジオメトリ、レングスインターバル) ST_stayPointSpatialClustered(trajectory traj, interval resample_int, float dr, interval dt, float thres, float merger)
パラメーター
パラメーター | 説明 |
traj | 軌道オブジェクト。 |
resample_int | 軌道が再サンプリングされる間隔。 再サンプリングは、軌道のサンプリング点をより均一にする。 より短い間隔は、より正確な滞在ポイントを示すが、より長い計算時間を示す。 リサンプリングが不要な場合は、このパラメーターを「100000日」などの大きな値に設定できます。 詳細については、「ST_Resample」をご参照ください。 |
dr | 軌道点間の距離に許容される公差。 空間公差は、軌道の空間参照識別子 (SRID) に使用される単位に基づいて計算される。 例えば、軌道のSRIDが0である場合、空間公差は、軌道点のユークリッド距離に基づいて計算される。 軌道のSRIDが4326の場合、空間公差はメートル単位で測定されます。 |
dt | 軌道点間の時間差に許容される公差。 1回の滞在の期間より少し長い期間を指定します。 |
thres | ある点の周りのサンプリング軌道点の数がthresパラメータの値を超える場合、その点は滞在点とみなされる。 サンプリング軌道点とその点との間の空間距離がdrパラメータの値よりも小さく、それらの間の時間差がdtパラメータの値よりも小さい場合、サンプリング軌道点はその点の周囲にあると考えられる。 複数の連続する点が滞在点として識別される場合、最も多くのサンプリング点によって囲まれる点が最後の滞在点である。 |
合併 | 異なる時点にある2つの滞在ポイント間の距離がマージパラメーターの値より小さい場合、2つの滞在ポイントは1つにマージされます。 |
戻り値はtrstaypoint型です。これは複合型で、次の列で構成されます。
列 | データ型 | 説明 |
ポイント | geometry | 滞在ポイントの位置。 |
スタート | timestamp | 滞在が始まる時間。 値は、滞在ポイントとして識別された最初のポイントに基づいて計算されます。 |
終了 | timestamp | 滞在が終わる時間。 値は、滞在ポイントとして識別された最後のポイントに基づいて計算されます。 |
説明
この関数は、軌道の滞在点を識別する。 たとえば、500メートルの範囲で30分以上滞在するポイントを滞在ポイントとして定義した場合、resample_intを5分、drを250メートル、dtを40分、thresを7に設定できます。 thresの値は、30を5で割り、プラス1で計算されます。
軌道に複数の往復線がある場合、ST_stayPointSpatialClustered関数を使用して、空間的に類似した滞在ポイントを集計し、滞在ポイントの総数と滞在時間の合計を取得できます。 滞在ポイントは、ガソリンスタンドや駐車場など、移動体がよく滞在する場所を示すことができる。
例
SELECT ST_AsText(((ST_StayPoint(traj, '12 hour', 3, '3 day', 3))).point),(ST_StayPoint(traj, '12 hour', 3, '3 day', 3)) * 。FROM (SELECT '{"trajectory":{"version":1、"type":"STPOINT" 、"leafcount":15、"start_time":"2000-01-01 00:00:00" 、"end_time":"2000-01-15 00:00:00" 、"spatial":"LINESTRING(1 1,2 2,3 3,10 10,11 11,12 12,13 13,3 2000 3,2 2,3 3,8 8,10 10,9 9,8 8)" 、"timeline":["2000-01-01 00:00:00","2000-01-02 00:00:00","-01-03 00:00:00:00","2000-01-04 00:00:00:00","2,2-01-05 00:00" 「2000-01-06 00:00:00」、「2000-01-07 00:00:00」、「2000-01-08 00:00:00」、「2000-01-09 00:00:00」、「2000-01-10 00:00:00:00」、「2000-01-11 00:00:00」、「2000-01-12 00:00:00:00」、「2000-01-13 00:00」、"2000-01-14 00:00:00","2000-01-15 00:00:00:00"]}':::trajectory AS traj) tj;
st_astext | point | startt | endt
---------------- + -------------------------------------------- + --------------------- + ---------------------
POINT(1 1) | 0101000000000000000000F03F000000000000F03F | 2000-01-01 00:00:00 | 2000-01-03 00:00:00
ポイント (11) | 010100000000000000000026400000000000002640 | 2000-01-04 00:00:00 | 2000-01-07 00:00:00
ポイント (3 3) | 010100000000000000000008400000000000000840 | 2000-01-08 00:00:00 | 2000-01-11 00:00:00
ポイント (9.5 9.5) | 010100000000000000000023400000000000002340 | 2000-01-12 00:00:00 | 2000-01-15 00:00:00
(4行)
SELECT ST_AsText((ST_stayPointSpatialClustered(traj, '12 hour', 3, '3 day', 3, 3)).point), (ST_stayPointSpatialClustered(traj, '12 hour', 3, '3 day', 3,3)) *.
FROM (SELECT '{"trajectory":{"version":1、"type":"STPOINT" 、"leafcount":15、"start_time":"2000-01-01 00:00:00" 、"end_time":"2000-01-15 00:00:00" 、"spatial":"LINESTRING(1 1,2 2,3 3,10 10,11 11,12 12,13 13,3 2000 3,2 2,3 3,8 8,10 10,9 9,8 8)" 、"timeline":["2000-01-01 00:00:00","2000-01-02 00:00:00","-01-03 00:00:00:00","2000-01-04 00:00:00:00","2,2-01-05 00:00" 「2000-01-06 00:00:00」、「2000-01-07 00:00:00」、「2000-01-08 00:00:00」、「2000-01-09 00:00:00」、「2000-01-10 00:00:00:00」、「2000-01-11 00:00:00」、「2000-01-12 00:00:00:00」、「2000-01-13 00:00」、"2000-01-14 00:00:00","2000-01-15 00:00:00:00"]}':::trajectory AS traj) tj;
st_astext | ポイント | 長さ
-------------------- -------------------------------------------- + -------
ポイント (2) | 010100000000000000000000400000000000000040 | 5日
ポイント (10.25 10.25) | 010100000000000000008024400000000000802440 | 6日
(2行)