ContainsCentroid 演算子

ContainsCentroid は、あるオブジェクトが指定されたジオメトリに完全に含まれているかどうかを評価する空間演算子です。ContainsCentroid は、CentroidWithin の逆演算子です。

例 1:

SELECT city FROM table WHERE obj ContainsCentroid <geometry>

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

データ ソース プロバイダが ContainsCentroid をサポートしない場合、クエリは EnvelopesIntersect に変換され、データ ソース プロバイダに委任されます。EnvelopesIntersects によって返される行数は、ContainsCentroid よりは多いですが、テーブル全体を返すよりは少なくなります。

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

Spectrum Spatial は、データ ソース プロバイダから返された結果を使って ContainsCentroid を評価します。

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

この例は、最初の例とは反対です。また、オペランドを入れ替えると、CentroidWithin 演算子と等価になります。

見てのとおり、このクエリは WHERE 句の規則を満たしません。Boolean 演算子は WHERE <column> operator <geometry> という形式でなければなりません。このクエリは CentroidWithin 演算に書き換えられ、データ ソース プロバイダに委任されます。

SELECT city FROM table WHERE obj CentroidWithin <geometry>