Mengambil titik-titik yang melintasi area geometris tertentu berdasarkan titik-titik sampel lintasan.
Sintaksis
TABLE(idx integer, inside bool, pnt trajectory, t timestamp, x double precision, y double precision) ST_CrossingPoints(trajectory traj, geometry geom)Parameter
Parameter | Deskripsi |
traj | Objek lintasan. |
geom | Area geometris. |
Nilai Pengembalian
Sebuah tabel data yang berisi parameter-parameter berikut dikembalikan.
Parameter | Deskripsi |
idx | Nomor urut titik sampel lintasan, dimulai dari 0. |
inside | Menunjukkan apakah titik tersebut berada di dalam area geometris. |
pnt | Titik yang berbentuk lintasan satu titik dan berisi informasi atribut. |
t | Cap waktu dari titik tersebut. |
x | Koordinat x dari titik tersebut. |
y | Koordinat y dari titik tersebut. |
Deskripsi
Jika titik sampel sebelumnya dari lintasan berada di luar area geometris dan titik sampel berikutnya berada di dalam area geometris, atau sebaliknya, maka titik tersebut sedang melintasi area geometris. Fungsi ini menampilkan titik-titik perlintasan dalam baris yang terpisah.
Contoh
Kueri untuk mendapatkan titik-titik perlintasan objek lintasan yang bergerak masuk dan kemudian keluar dari area geometris yang ditentukan.
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))');Hasil contoh:
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)