すべてのプロダクト
Search
ドキュメントセンター

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

最終更新日:Mar 28, 2026

指定された軸において、第 1 引数が第 2 引数を含む場合に true を返します。

構文

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);

バリエーション

各関数のバリエーションは、異なる軸セット上で包含関係をチェックします。

バリエーション確認済みの軸第 1 引数第 2 引数
ST_TContains時間 (T)tsrange または trajectorytrajectory または tsrange
ST_2DContains2 次元空間 (X, Y)geometry または trajectorytrajectory または geometry
ST_2DTContains2 次元空間+時間 (X, Y, T)boxndftrajectory
ST_3DContains3 次元空間 (X, Y, Z)boxndftrajectory
ST_3DTContains3 次元空間+時間 (X, Y, Z, T)boxndftrajectory

パラメーター

パラメーター説明
geom比較対象のジオメトリです。
traj比較対象のトラジェクトリ、またはサブトラジェクトリを抽出する元となるトラジェクトリです。
box比較対象のバウンディングボックスです。
rクエリ対象の時間範囲です。
tsサブトラジェクトリ抽出の時間範囲の開始時刻です(任意)。
teサブトラジェクトリ抽出の時間範囲の終了時刻です(任意)。

説明

ST_{T|2D|2DT|3D|3DT}Contains は、指定された軸において、第 1 引数が第 2 引数を含むかどうかをチェックします。

時間範囲のバリエーションST_TContains):時間軸上で、時間範囲またはトラジェクトリが他方の引数を含むかどうかをチェックします。

ジオメトリのバリエーションST_2DContains):指定された時間範囲における完全なトラジェクトリまたはサブトラジェクトリの 2 次元投影を比較します。ジオメトリが他方の引数を含む場合、または他方の引数に含まれる場合に true を返します。

バウンディングボックスのバリエーションST_2DTContainsST_3DContainsST_3DTContains):トラジェクトリ(または指定された時間範囲におけるサブトラジェクトリ)が、すべての指定ディメンションでバウンディングボックス内に完全に収まっているかどうかをチェックします。バウンディングボックス、トラジェクトリ、またはサブトラジェクトリが特定のディメンションを持たない場合、そのディメンションは任意の値をとるものと見なされ、自動的に包含条件を満たすものとします。

POLYHEDRALSURFACE および同様のジオメトリ型はサポートされていません。

以下の例では、共通の CTE を使用してトラジェクトリと 3 次元バウンディングボックスを作成し、3 つの時間範囲に対して各バリエーションをテストします。

準備手順:

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
)

バウンディングボックス a は座標範囲 [0–50, 0–50, 0–50] および時間範囲 [0–49] をカバーします。トラジェクトリ b は時間範囲 [0–100] において (0,0) から (100,100) まで実行されます。

時間範囲 [0, 49] — サブトラジェクトリがバウンディングボックス内に収まる場合:

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

すべてのバリエーションが true を返します:時間 0 から 49 のサブトラジェクトリは、すべての軸においてバウンディングボックス内に収まります。

時間範囲 [0, 50] — サブトラジェクトリが時間軸上でバウンディングボックスの境界に達する場合:

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 および ST_3DContainstrue を返します。これらは時間軸をチェックしないため、サブトラジェクトリの空間的投影は依然としてバウンディングボックス内に収まります。ST_2DTContains および ST_3DTContainsfalse を返します。これは、時間 50 がバウンディングボックスの時間上限 49 を超えるためです。

時間範囲 [0, 70] — サブトラジェクトリが空間軸および時間軸の両方でバウンディングボックスを超える場合:

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

すべてのバリエーションが false を返します:時間 70 において、トラジェクトリは座標 (70, 70) まで移動しており、これはバウンディングボックスの空間的上限 50 を超えています。