Mengembalikan true jika argumen pertama memuat argumen kedua pada sumbu yang ditentukan.
Sintaksis
bool ST_TContains(tsrange r, trajectory traj);
bool ST_TContains(trajectory traj, tsrange r);
bool ST_2DContains(geometry geom, trajectory traj);
bool ST_2DContains(trajectory traj, geometry geom);
bool ST_2DContains(geometry geom, trajectory traj, timestamp ts, timestamp te);
bool ST_2DContains(trajectory traj, geometry geom, timestamp ts, timestamp te);
bool ST_{2D|2DT|3D|3DT}Contains(boxndf box, trajectory traj);
bool ST_{2D|2DT|3D|3DT}Contains(boxndf box, trajectory traj, timestamp ts, timestamp te);Varian
Setiap varian fungsi memeriksa ketercakupan pada himpunan sumbu yang berbeda:
| Varian | Sumbu yang diperiksa | Argumen pertama | Argumen kedua |
|---|---|---|---|
ST_TContains | Waktu (T) | tsrange atau trajectory | trajectory atau tsrange |
ST_2DContains | Ruang 2D (X, Y) | geometry atau trajectory | trajectory atau geometry |
ST_2DTContains | Ruang 2D + waktu (X, Y, T) | boxndf | trajectory |
ST_3DContains | Ruang 3D (X, Y, Z) | boxndf | trajectory |
ST_3DTContains | Ruang 3D + waktu (X, Y, Z, T) | boxndf | trajectory |
Parameter
| Parameter | Deskripsi |
|---|---|
geom | Geometry yang akan dibandingkan. |
traj | Trajectory yang akan dibandingkan, atau trajectory sumber dari mana sub-trajectory diekstraksi. |
box | Kotak pembatas yang akan dibandingkan. |
r | Rentang waktu yang akan dikueri. |
ts | Awal rentang waktu untuk ekstraksi sub-trajectory. Opsional. |
te | Akhir rentang waktu untuk ekstraksi sub-trajectory. Opsional. |
Deskripsi
ST_{T|2D|2DT|3D|3DT}Contains memeriksa apakah argumen pertama memuat argumen kedua pada sumbu yang ditentukan.
Varian rentang waktu (ST_TContains): Memeriksa apakah rentang waktu atau trajectory memuat argumen lainnya pada sumbu waktu.
Varian geometry (ST_2DContains): Membandingkan proyeksi dua dimensi dari trajectory lengkap atau sub-trajectory dalam rentang waktu tertentu. Fungsi ini mengembalikan true jika geometry memuat atau termuat oleh argumen lainnya.
Varian kotak pembatas (ST_2DTContains, ST_3DContains, ST_3DTContains): Memeriksa apakah trajectory (atau sub-trajectory-nya dalam rentang waktu tertentu) sepenuhnya berada di dalam kotak pembatas pada semua dimensi yang ditentukan. Jika kotak pembatas, trajectory, atau sub-trajectory tidak memiliki dimensi tertentu, dimensi tersebut dianggap memiliki nilai apa pun dan secara otomatis memenuhi kondisi ketercakupan.
POLYHEDRALSURFACE dan tipe geometry serupa tidak didukung.Contoh
Contoh berikut menggunakan CTE umum yang membuat trajectory dan kotak pembatas 3D, lalu menguji setiap varian pada tiga rentang waktu.
Persiapan:
WITH traj AS (
SELECT
ST_makeTrajectory(
'STPOINT',
'LINESTRING(0 0, 50 50, 100 100)'::geometry,
('[' || ST_PGEpochToTS(0) || ',' || ST_PGEpochToTS(100) || ')')::tsrange,
'{"leafcount":3,"attributes":{"velocity": {"type": "integer", "length": 2,"nullable" : true,"value": [120,130,140]}, "accuracy": {"type": "float", "length": 4, "nullable" : false,"value": [120,130,140]}, "bearing": {"type": "float", "length": 8, "nullable" : false,"value": [120,130,140]}, "acceleration": {"type": "string", "length": 20, "nullable" : true,"value": ["120","130","140"]}, "active": {"type": "timestamp", "nullable" : false,"value": ["Fri Jan 01 11:35:00 2010", "Fri Jan 01 12:35:00 2010", "Fri Jan 01 13:30:00 2010"]}}, "events": [{"2" : "Fri Jan 02 15:00:00 2010"}, {"3" : "Fri Jan 02 15:30:00 2010"}]}'
) AS b,
ST_MakeBox3dt(0,0,0,ST_PgEpochToTS(0), 50,50,50,ST_PgEpochToTS(49)) AS a
)Kotak pembatas a mencakup koordinat [0–50, 0–50, 0–50] dan waktu [0–49]. Trajectory b bergerak dari (0,0) ke (100,100) selama waktu [0–100].
Rentang waktu [0, 49] — sub-trajectory tetap berada di dalam kotak:
SELECT
ST_2dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(49)),
ST_3dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(49)),
ST_2dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(49)),
ST_3dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(49))
FROM traj;| st_2dcontains | st_3dcontains | st_2dtcontains | st_3dtcontains |
|---|---|---|---|
| t | t | t | t |
Semua varian mengembalikan true: sub-trajectory dari waktu 0 hingga 49 berada di dalam kotak pembatas pada semua sumbu.
Rentang waktu [0, 50] — sub-trajectory mencapai batas kotak pada sumbu waktu:
SELECT
ST_2dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(50)),
ST_3dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(50)),
ST_2dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(50)),
ST_3dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(50))
FROM traj;| st_2dcontains | st_3dcontains | st_2dtcontains | st_3dtcontains |
|---|---|---|---|
| t | t | f | f |
ST_2DContains dan ST_3DContains mengembalikan true karena keduanya tidak memeriksa sumbu waktu—proyeksi spasial sub-trajectory masih sesuai dengan kotak. ST_2DTContains dan ST_3DTContains mengembalikan false karena waktu 50 berada di luar batas waktu kotak, yaitu 49.
Rentang waktu [0, 70] — sub-trajectory melebihi kotak pada sumbu spasial maupun waktu:
SELECT
ST_2dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(70)),
ST_3dContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(70)),
ST_2dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(70)),
ST_3dtContains(a, b, ST_PGEpochToTS(0), ST_PGEpochToTS(70))
FROM traj;| st_2dcontains | st_3dcontains | st_2dtcontains | st_3dtcontains |
|---|---|---|---|
| f | f | f | f |
Semua varian mengembalikan false: pada waktu 70, trajectory telah bergerak ke koordinat (70, 70), yang melebihi batas spasial kotak sebesar 50.