Opérateurs spatiaux Oracle

SDO_RELATE

Opérateur principal pour tester les relations topologiques.

SELECT a.nom
FROM villes a, regions b
WHERE b.nom = 'Île-de-France'
AND SDO_RELATE(
    a.geometry,
    b.geometry,
    'mask=inside'
) = 'TRUE';

Retourne les villes à l’intérieur de la région Île-de-France.

Utilise l’index spatial si disponible.

SDO_FILTER

Opérateur de filtre rapide basé uniquement sur les MBR.

SELECT a.nom
FROM villes a, regions b
WHERE b.nom = 'Île-de-France'
AND SDO_FILTER(
    a.geometry,
    b.geometry
) = 'TRUE';

Plus rapide que SDO_RELATE mais moins précis (approximation).

Utile en première étape avant un filtrage exact.

SDO_NN (Nearest Neighbor)

Trouve les K plus proches voisins d’une géométrie.

SELECT nom, ville_id
FROM villes
WHERE SDO_NN(
    geometry,
    SDO_GEOMETRY(2001, 8307, 
        SDO_POINT_TYPE(2.35, 48.85, NULL), NULL, NULL),
    'sdo_num_res=5'
) = 'TRUE';

Retourne les 5 villes les plus proches du point spécifié.

La colonne geometry doit être indexée.

sdo_num_res : nombre de résultats (défaut = 1).

SDO_WITHIN_DISTANCE

Trouve les géométries dans un rayon donné.

SELECT nom
FROM villes
WHERE SDO_WITHIN_DISTANCE(
    geometry,
    SDO_GEOMETRY(2001, 8307, 
        SDO_POINT_TYPE(2.35, 48.85, NULL), NULL, NULL),
    'distance=10 unit=km'
) = 'TRUE';

Retourne les villes dans un rayon de 10 km.

L’unité doit être compatible avec le SRID.