All Products
Search
Document Center

ApsaraDB RDS:ST_{T|2D|2DT|3D|3DT}Contains

Last Updated:Mar 28, 2026

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:

VarianSumbu yang diperiksaArgumen pertamaArgumen kedua
ST_TContainsWaktu (T)tsrange atau trajectorytrajectory atau tsrange
ST_2DContainsRuang 2D (X, Y)geometry atau trajectorytrajectory atau geometry
ST_2DTContainsRuang 2D + waktu (X, Y, T)boxndftrajectory
ST_3DContainsRuang 3D (X, Y, Z)boxndftrajectory
ST_3DTContainsRuang 3D + waktu (X, Y, Z, T)boxndftrajectory

Parameter

ParameterDeskripsi
geomGeometry yang akan dibandingkan.
trajTrajectory yang akan dibandingkan, atau trajectory sumber dari mana sub-trajectory diekstraksi.
boxKotak pembatas yang akan dibandingkan.
rRentang waktu yang akan dikueri.
tsAwal rentang waktu untuk ekstraksi sub-trajectory. Opsional.
teAkhir 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_2dcontainsst_3dcontainsst_2dtcontainsst_3dtcontains
tttt

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_2dcontainsst_3dcontainsst_2dtcontainsst_3dtcontains
ttff

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_2dcontainsst_3dcontainsst_2dtcontainsst_3dtcontains
ffff

Semua varian mengembalikan false: pada waktu 70, trajectory telah bergerak ke koordinat (70, 70), yang melebihi batas spasial kotak sebesar 50.