全部產品
Search
文件中心

PolarDB:ST_AccompanyIntervals

更新時間:Nov 14, 2024

計算兩條軌跡伴隨運動的區間。

文法

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

  • ST_AccompanyIntervals:如果兩個時間段之間距離小於merge_gap,則將兩個時間段合并。若不指定,不進行合并。

  • ST_AccompanyParts:當兩組伴隨子軌跡之間的距離小於merge_gap時,將兩組子軌跡合并。若不指定,不進行合并。

min_length

當一個伴隨時間段的時間長度小於min_length時,將其捨棄。若不指定,不進行捨棄。

dist_config

距離計算的方式,取值範圍如下:

  • 'W',表示將橫縱座標解讀為按照WGS84座標系下的座標點來計算距離。

  • 'C',表示直接對橫縱座標計算距離。

  • 'M',表示以米為單位進行計算,等價於'W'。

  • 'D',表示以角度為單位進行計算,等價於'C'。

  • 'A'或不指定時,表示自動選擇(SRID為4326時使用'W',其它使用'C')。

傳回值

返回列名稱

描述

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)