首頁
云原生數據庫 PolarDB
云原生數據庫PolarDB PostgreSQL版
時空引擎(GanosBase)
Trajectory SQL參考
SQL參考手冊
空間處理
ST_CrossingPoints
求軌跡的所有采樣點中,所有穿過指定幾何區域的點。
語法
TABLE(idx integer, inside bool, pnt trajectory, t timestamp, x double precision, y double precision) ST_CrossingPoints(trajectory traj, geometry geom)
參數
參數名稱 | 描述 |
traj | 軌跡對象。 |
geom | 幾何區域。 |
返回值
返回一個數據表,包含以下參數:
參數名稱 | 描述 |
idx | 軌跡采樣點的序號,從0開始。 |
inside | 此點是否在區域中。 |
pnt | 此軌跡點,以單點軌跡的形式輸出,包含屬性信息。 |
t | 此點的時間戳。 |
x | 此點的x坐標。 |
y | 此點的y坐標。 |
描述
如果軌跡的前一個采樣點在區域外,而后一個采樣點在區域中,或前一個采樣點在區域中,而后一個采樣點在區域外,則認為此點是軌跡對于區域的跨越點。本函數按行輸出所有的跨越點。
示例
軌跡進入一個區域,再移出:
SELECT * FROM ST_CrossingPoints(
'{"trajectory":{"version":1,"type":"STPOINT","leafcount":7,"start_time":"2000-01-01 00:00:00","end_time":"2000-01-07 00:00:00","spatial":"LINESTRING(0 0,2 1,0 0,3 3,0 0,1 4,0 0)","timeline":["2000-01-01 00:00:00","2000-01-02 00:00:00","2000-01-03 00:00:00","2000-01-04 00:00:00","2000-01-05 00:00:00","2000-01-06 00:00:00","2000-01-07 00:00:00"]}}',
'POLYGON((2 2, 2 3, 3 3, 3 2, 2 2))');
結果:
idx | inside | pnt | t | x | y
-----+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+---+---
3 | t | {"trajectory":{"version":1,"type":"STPOINT","leafcount":1,"start_time":"2000-01-04 00:00:00","end_time":"2000-01-04 00:00:00","spatial":"POINT(3 3)","timeline":["2000-01-04 00:00:00"]}} | 2000-01-04 00:00:00 | 3 | 3
4 | f | {"trajectory":{"version":1,"type":"STPOINT","leafcount":1,"start_time":"2000-01-05 00:00:00","end_time":"2000-01-05 00:00:00","spatial":"POINT(0 0)","timeline":["2000-01-05 00:00:00"]}} | 2000-01-05 00:00:00 | 0 | 0
(2 rows)
文檔內容是否對您有幫助?