Operator „ContainsCentroid“

ContainsCentroid ist ein räumlicher Operator, der auswertet, ob sich ein Objekt vollständig innerhalb einer bestimmten Geometrie befindet. „ContainsCentroid“ ist der Inverse-Operator von „CentroidWithin“.

Beispiel 1:

SELECT city FROM table WHERE obj ContainsCentroid <geometry>

Wenn der Datenquellenanbieter „ContainsCentroid“ unterstützt, wird die gesamte Abfrage an den Datenanbieter delegiert.

Wenn der Datenquellenanbieter „ContainsCentroid“ nicht unterstützt, wird die Abfrage in EnvelopesIntersect umgewandelt und an den Datenquellenanbieter delegiert. „EnvelopesIntersects“ gibt einen größeren Satz von Zeilen als „ContainsCentroid“ zurück, jedoch weniger als die gesamte Tabelle.

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

Spectrum Spatial wertet „ContainsCentroid“ mithilfe der Ergebnisse des Datenquellenanbieters aus.

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

Dieses Beispiel ist das Gegenteil zum ersten Beispiel. Es entspricht zudem dem Operator CentroidWithin, wenn die Operanden umgekehrt werden.

Im derzeitigen Format entspricht diese Abfrage nicht den Regeln der WHERE-Klausel, bei der boolesche Operatoren die Form WHERE <column> operator <geometry> aufweisen müssen. Die Abfrage wird in einen „CentroidWithin“-Vorgang umformatiert und an den Datenquellenanbieter delegiert.

SELECT city FROM table WHERE obj CentroidWithin <geometry>