Intersects 演算子

Intersects は、2 つのオブジェクトがどこかで交差する場合に true を返す Boolean 空間演算子です。つまり、最初のオブジェクトの一部が 2 番目のオブジェクト内にある場合、または、最初のオブジェクトが 2 番目のオブジェクトの一部を含む場合がこれに該当します。

例 1:
SELECT city FROM table WHERE obj Intersects <geometry>

データ ソース プロバイダが Intersects をサポートしている場合、クエリ全体がデータ ソース プロバイダに委任されます。

データ ソース プロバイダが Intersects をサポートしない場合、これは EnvelopesIntersect に書き換えられます。EnvelopesIntersect が返すレコード数は Intersects 演算よりも多いですが、テーブル全体が返された場合は大幅に少なくなります。

SELECT city, obj FROM table WHERE obj EnvelopesIntersect <geometry>

Spectrum Spatial は、データ ソース プロバイダから返された結果を使って全体のクエリを実行します。

SELECT city FROM <results from the delegation> WHERE obj Intersects <geometry>
例 2:
SELECT city FROM table WHERE <geometry> Intersects obj

この例は、最初の例とは反対です。見てのとおり、このクエリは WHERE 句の規則を満たしません。Boolean 演算子は WHERE <column> operator <geometry> という形式でなければなりません。このクエリはオペランドを入れ替えて書き換えられ、データ ソース プロバイダに委任されます。Intersects を逆にしても Intersects なので、これは結果に影響しません。

SELECT city FROM table WHERE obj Intersects <geometry>