Opérateur CentroidWithin

CentroidWithin est un opérateur spatial qui détermine si un objet se trouve entièrement à l'intérieur d'une autre géométrie. CentroidWithin est l’opérateur inverse de ContainsCentroid.

Exemple 1 :

SELECT city FROM table WHERE obj CentroidWithin <geometry>

Si le fournisseur de source de données prend en charge CentroidWithin : la requête toute entière est déléguée au fournisseur de données.

Si le fournisseur de source de données ne prend pas en charge les CentroidWithin, la requête est convertie en EnvelopesIntersect et déléguée comme suit :

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

Spectrum Spatial évalue CentroidWithin en utilisant les résultats à partir du fournisseur de source de données :

SELECT city FROM <results from the delegation> WHERE obj CentroidWithin <geometry>
Exemple 2 :
SELECT city FROM table WHERE <geometry> CentroidWithin obj

Cet exemple est l'inverse de l'exemple 1. Il est également équivalente à la ContainsCentroid opérateur lorsque les opérandes sont inversés.

Comme indiqué, cette requête ne respecte pas la Règle 2 de la clause WHERE selon laquelle les opérateurs booléens doivent se présenter au format WHERE <column> operator <geometry>. La requête est rephrased sous forme d'opération ContainsCentroid et déléguée au fournisseur de source de données.

SELECT city FROM table WHERE obj ContainsCentroid <geometry>