INCLUDE 演算子は、指定されたディメンションにおいて、左オペランドのバウンディングボックスが右オペランドのバウンディングボックス内に含まれるかどうかをチェックします。バウンディングボックスは ST_MakeBox 関数によって生成されます。これらの演算子は INCLUDE 演算子 の逆です。つまり、左オペランドはコンテナではなく、包含されるオブジェクトです。
構文
{geometry, trajectory, boxndf} /<@/ {geometry, trajectory, boxndf}
{trajectory, boxndf} #<@# {trajectory, boxndf}
{geometry, trajectory, boxndf} <@ {geometry, trajectory, boxndf}
{geometry, trajectory, boxndf} </@ {geometry, trajectory, boxndf}
{trajectory, boxndf} <#@ {trajectory, boxndf}
{trajectory, boxndf} </#@ {trajectory, boxndf}パラメーター
| パラメーター | 説明 |
|---|---|
| 左オペランド | 比較対象のバウンディングボックスを持つオブジェクト。 |
| 右オペランド | 比較対象のバウンディングボックスを持つオブジェクト。 |
演算子
各演算子は、特定のディメンションのセットにおける包含関係をチェックします。
| 演算子 | ディメンション | サポートされる型 |
|---|---|---|
/<@/ | z | geometry, trajectory, boxndf |
#<@# | t | trajectory, boxndf |
<@ | x and y | geometry, trajectory, boxndf |
</@ | x, y, and z | geometry, trajectory, boxndf |
<#@ | x, y, and t | trajectory, boxndf |
</#@ | x, y, z, and t | trajectory, boxndf |
例
次のクエリは、2 つのバウンディングボックスに対して 6 つすべての演算子をテストします。ボックス a は、x: 0–10、y: 0–10、z: 0–10、t: 2010–2012 の範囲にわたります。ボックス b は、x: 6–8、y: 6–8、z: 3–5、t: 2010–2013 の範囲にわたります。
WITH box AS(
SELECT ST_MakeBox3dt(0,0,0, '2010-01-01 00:00:00',10,10,10, '2012-01-01 00:00:00') a,
ST_MakeBox3dt(6,6,3,'2010-01-01 00:00:00',8,8,5,'2013-01-01 00:00:00') b
)
SELECT b /<@/ a AS OpZ, b #<@# a AS OpT, b <@ a AS Op2D, b </@ a AS Op3D, b <#@ a AS Op2DT, b </#@ a AS Op3DT from box;結果:
opz | opt | op2d | op3d | op2dt | op3dt
-----+-----+------+------+-------+-------
t | f | t | t | f | fopz=t: b の z 範囲 [3, 5] は a の z 範囲 [0, 10] 内にあります。
opt=f: b の t 範囲は 2013 まで拡張されているため、2012 で終了する a の t 範囲外となります。
op2d=t: b の x 範囲 [6, 8] と y 範囲 [6, 8] は、a の x と y の範囲 [0, 10] 内にあります。
op3d=t: b の x、y、z の範囲はすべて、a の対応する範囲内にあります。
op2dt=f: b の t 範囲が a の範囲を超えているため、x-y-t の包含チェックは失敗します。
op3dt=f: b の t 範囲が a の範囲を超えているため、x-y-z-t の包含チェックは失敗します。
次のステップ
ST_MakeBox:指定された時間範囲にわたるオブジェクトのバウンディングボックスを生成します。
INCLUDE 演算子:左オペランドのバウンディングボックスが右オペランドのバウンディングボックスを包含しているかどうかをチェックします。