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>