指定された軸において、第 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 または trajectory | trajectory または tsrange |
ST_2DContains | 2 次元空間 (X, Y) | geometry または trajectory | trajectory または geometry |
ST_2DTContains | 2 次元空間+時間 (X, Y, T) | boxndf | trajectory |
ST_3DContains | 3 次元空間 (X, Y, Z) | boxndf | trajectory |
ST_3DTContains | 3 次元空間+時間 (X, Y, Z, T) | boxndf | trajectory |
パラメーター
| パラメーター | 説明 |
|---|---|
geom | 比較対象のジオメトリです。 |
traj | 比較対象のトラジェクトリ、またはサブトラジェクトリを抽出する元となるトラジェクトリです。 |
box | 比較対象のバウンディングボックスです。 |
r | クエリ対象の時間範囲です。 |
ts | サブトラジェクトリ抽出の時間範囲の開始時刻です(任意)。 |
te | サブトラジェクトリ抽出の時間範囲の終了時刻です(任意)。 |
説明
ST_{T|2D|2DT|3D|3DT}Contains は、指定された軸において、第 1 引数が第 2 引数を含むかどうかをチェックします。
時間範囲のバリエーション(ST_TContains):時間軸上で、時間範囲またはトラジェクトリが他方の引数を含むかどうかをチェックします。
ジオメトリのバリエーション(ST_2DContains):指定された時間範囲における完全なトラジェクトリまたはサブトラジェクトリの 2 次元投影を比較します。ジオメトリが他方の引数を含む場合、または他方の引数に含まれる場合に true を返します。
バウンディングボックスのバリエーション(ST_2DTContains、ST_3DContains、ST_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_2dcontains | st_3dcontains | st_2dtcontains | st_3dtcontains |
|---|---|---|---|
| t | t | t | t |
すべてのバリエーションが 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_2dcontains | st_3dcontains | st_2dtcontains | st_3dtcontains |
|---|---|---|---|
| t | t | f | f |
ST_2DContains および ST_3DContains は true を返します。これらは時間軸をチェックしないため、サブトラジェクトリの空間的投影は依然としてバウンディングボックス内に収まります。ST_2DTContains および ST_3DTContains は false を返します。これは、時間 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_2dcontains | st_3dcontains | st_2dtcontains | st_3dtcontains |
|---|---|---|---|
| f | f | f | f |
すべてのバリエーションが false を返します:時間 70 において、トラジェクトリは座標 (70, 70) まで移動しており、これはバウンディングボックスの空間的上限 50 を超えています。