Geo Clôture: Trouver nombre de caractéristiques (points / lignes / polygones) à l'intérieur d'un polygone à l'aide de l'espace oracle

StackOverflow https://stackoverflow.com/questions/4611944

  •  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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top