Indexation spatiale
Objectif
Limiter les recherches lors des requêtes selon un critère spatial.
Permet de trouver rapidement :
- Objets qui interagissent avec un point ou une surface donnés
- Paires d’objets en relation spatiale
Sans index, Oracle devrait comparer chaque géométrie avec toutes les autres.
Rectangle minimum englobant (MBR)
Approximation d’une géométrie par un rectangle.
graph LR A[Géométrie complexe] --> B[MBR simplifié] B --> C[Recherche rapide]
Les MBR permettent des comparaisons rapides avant les calculs exacts.
R-Tree (méthode par défaut)
Structure d’index hiérarchique basée sur les MBR.
Les MBR sont regroupés dans des nœuds parents qui ont eux-mêmes des MBR.
Recherche efficace par élimination successive de branches.
Quadtree (alternative)
Découpe récursive de l’espace en 4 carrés égaux (pavage/tesselation).
Chaque niveau divise les carrés en 4 sous-carrés.
Moins utilisé qu’R-Tree dans Oracle Spatial moderne.
Création d’un index spatial
CREATE INDEX ville_spatial_idx
ON ville(geometry)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;Index créé automatiquement sur la colonne de type SDO_GEOMETRY.
L’index utilise R-Tree par défaut.
Métadonnées spatiales
Avant de créer un index, les métadonnées doivent être définies :
INSERT INTO USER_SDO_GEOM_METADATA VALUES (
'VILLE', -- nom de la table
'GEOMETRY', -- nom de la colonne
SDO_DIM_ARRAY(
SDO_DIM_ELEMENT('X', -180, 180, 0.005), -- longitude
SDO_DIM_ELEMENT('Y', -90, 90, 0.005) -- latitude
),
8307 -- SRID
);
COMMIT;Définit les dimensions, bornes et tolérance pour la colonne géométrique.