Geo Clôture: Trouver nombre de caractéristiques (points / lignes / polygones) à l'intérieur d'un polygone à l'aide de l'espace oracle
-
26-09-2019 - |
Question
Comment puis-je écrire une requête SQL (en utilisant Oracle Spatial) pour trouver le nombre de fonctions disponibles à l'intérieur d'un polygone (geofence);
Les caractéristiques peuvent être des points, des lignes ou un polygone lui-même.
Merci.
La solution
Essayez cette déclaration:
select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/
Il est mandetory que le premier paramètre de SDO_RELATE
est la colonne de géométrie avec un index spatial.
Autres conseils
Mise à jour: cette suggestion ne tenir aucun compte, Albert Godfrind a dit qu'il répète ce qui est déjà fait en interne. Il est donc inefficace et lent:
Pour ajouter à la réponse Tims, il est bon de combiner SDO_FILTER et SDO_RELATE pour des raisons de performance. SDO_FILTER est rapide mais retourne trop de géométries, il vous donnera toutes les géométries dont le rectangle englobant minimum (MBR) croise la géométrie de votre clôture. SDO_RELATE est exacte, mais lent. Donc, combiner les deux:
select count(*)
from geometry_table t
where SDO_FILTER(t.geom_column, geofence) = 'TRUE' and SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
Cordialement, Chris