Sig Cm Iv
- 1. Systèmes d’Information
Géographique
Jean-Yves Antoine
Université François Rabelais de Tours
www.info.univ-tours.fr/~antoine
© J.Y. Antoine — 1
- 2. Systèmes d’Information
Géographique
4. INTERROGATION DES SIG
requêtes en mode vectoriel et indexation
© J.Y. Antoine — 2
- 3. Sommaire
• SIG : implémentation pour requêtes spatiales optimisées 4
• Requêtes en mode vectoriel : cas d’école 7
• Requêtes attributaires : SQL 9
• Requêtes spatiales : SQL étendu 11
• Index spatiaux 16
© J.Y. Antoine — 3
- 4. SIG : implémentation
Modélisation de l’information géogrphique (rappel)
Route
1,n
SEMANTIQUE
Eléments
#N°
1,1
Tronçon
Carrefour
2,2 2,n
Km_deb Extrémité
#N°
Km_fin
1,1
1,1
Représenté
Représenté
GEOGRAPHIE
Segment par
par 1,1
#Id_arc Début 1,1
Fct_Arc 1,1 Point
0,n
1,1
Fin #Id_point
1,1
Polyligne 0,n
Longitude
0,n
1,2
Eléments Latitude
0,n
Point
#Id_ligne
Orientation d’appui
Dte / Gche
En théorie – MCD représentable dans un SGBD relationnel
En pratique – Peu adapté à la représentation de la partie géographique :
• Pas d’optimisation pour l’accès à l’information spatiale
• Requêtes spatiales de trop bas niveau
© J.Y. Antoine — 4
- 5. SIG : implémentation
SIG : couplage SBGD-R / SI spatial
- SGBD-R : information sémantique + lien vers l’information géographique
- SI spatial : information géométrique
Route
Requêtes dans les SIG : extension de SQL #N°
1,n
- types abstraits de données (point, ligne, zone ….)
Eléments
- Fonctions d’interrogation spatiales 1,1
Tronçon
Troncon
Km_deb
{ Km_fin
num_troncon : integer,
1,1
num_route : integer,
km deb : integer, Représenté
km fin : integer, par
obj_geom : ligne
} 1,1
MapInfo
Polyligne
obj
#Id_ligne
Dte / Gche
CREATE TABLE Troncon …
© J.Y. Antoine — 5
- 6. SIG : implémentation
SQL étendu : exemples de fonctions spatiales
MapInfo
Professional
PointInZone(zone,point) → booleen Within
LineInZone(zone,zone) → booleen Contains {Entire}
ZoneInZone(zone,zone) → booleen
IntersectZone(zone,zone) → booleen Intersect
IntersectLineZone(zone,zone) → booleen
Adjacent(zone,zone) → booleen
Surface(zone) → real Area
Perimeter(zone) → real Perimeter
Intersection(zone, zone) → zone
Centroid(zone) → zone Centroid
PointInLine(zone,point) → booleen
IntersectLineZone(zone,zone) → booleen
Length(zone) → real
Distance(point,point) → real Distance
© J.Y. Antoine — 6
- 7. Requêtes en mode vectoriel : cas d’école
Id Long Trafic obj
Type
obj
Id_parcelle Proprietaire Surface
N14 173 Nationale 4 500 *
*
041_345 Ant_1_66_12 483
Cadastre
Voirie
Id Type Superficice obj Id Nom Dep Pop obj
041_26 Mairie 483 * 41000 Blois 41 51500 *
Bâti Communes
© J.Y. Antoine — 7
- 8. Requêtes en mode vectoriel : cas d’école
Exemples de requêtes
AT
RE IB
1. Quelle est la longueur de la nationale 14 ?
TR
Q UT
UA
ET IR
2. Quelle est le trafic moyen des routes départementales ?
ES ES
3. Quelle est la ville la plus peuplée du Loir-et-Cher ?
4. Quelle est la taille moyenne des villes dans chaque département ?
5. Quelles sont les routes qui croisent la nationale 14 ?
RE A
6. Quelles communes disposent encore d’une église ?
SP
Q TI A
UL
7. Quelles sont les communes traversées par la nationale 14 ?
ET E
ES S
8. Combien y-a-t-il d’écoles dans la ville de Blois ?
9. Combien y-a-t-il de propriétés cadastrales à Blois ?
© J.Y. Antoine — 8
- 9. Requêtes attributaires : SQL
Requêtes attributaires unitables Id Long Trafic obj
Type
N14 173 Nationale 4 500 *
Voirie
Quelle est la longueur de la nationale 14 ?
SELECT Long
FROM Voirie
WHERE Id= ‘N14’;
Quel est le trafic moyen des routes départementales ?
AVG(Trafic)
SELECT
Voirie
FROM
Type = ‘Departementale’;
WHERE
© J.Y. Antoine — 9
- 10. Requêtes attributaires : SQL
Jointures et fonctions d’agrégat Id Nom Dep Pop obj
41000 Blois 41 51500 *
Communes
Quelle est la ville la plus peuplée du Loir-et-Cher ?
Nom
SELECT
Communes
FROM
Pop IN (
WHERE
SELECT Max(Pop)
FROM Communes);
Quelle est la taille moyenne des villes dans chaque département ?
Dep, AVG(Pop)
SELECT
Communes
FROM
Pop > 3000
WHERE
GROUP BY Dep;
© J.Y. Antoine — 10
- 11. Requêtes spatiales : SQL étendu
Opérateurs spatiaux Id Long Trafic obj
Type
Nationale 4 500 *
N14 173
Voirie
Quelles sont les routes qui croisent la nationale 14?
SELECT Id
FROM Voirie
WHER obj Intersect(
SELECT obj
FROM Voirie
WHERE Id = quot;N14quot;)
);
© J.Y. Antoine — 11
- 12. Requêtes spatiales : SQL étendu
Jointure spatiale Id Type Superficice obj
041_26 Mairie 483 *
Quelles communes possèdent une église ?
Bati
SELECT Nom
FROM Communes
WHERE obj Contains(
SELECT obj Id Nom Dep Pop obj
FROM Batiments
41000 Blois 41 51500 *
WHERE Type = quot;Eglise« )
);
Communes
SELECT Communes.Nom
FROM Communes, Bati
WHERE Communes.obj Contains Bati.obj
Bati.Type = quot;Eglise« ;
AND
Quelles sont les communes traversées par la nationale 14 ?
Requête semblable à la précédente : la jointure se fait ici avec INTERSECT
© J.Y. Antoine — 12
- 13. Requêtes spatiales : SQL étendu
Jointure spatiale et fonction d’agrégats
Id Nom Dep Pop obj Id Type Superficice obj
41000 Blois 41 51500 * 041_26 Mairie 483 *
Communes Bati
Combien y-a-t-il d’écoles dans la ville de Blois ?
SELECT Count(Bati.obj)
FROM Communes, Bati
WHERE Communes.obj Contains Bati.obj
Bati.Type = quot;Eglise«
AND
Communes.Nom = quot;Bloisquot; ;
AND
Combien y-a-t-il de propriétés cadastrales dans la ville de Blois ?
Requête semblable à la précédente avec les tables Cadastre et Communes
© J.Y. Antoine — 13
- 14. Requêteurs SIG
Requêteur MapInfo Professional (v. 8.0)
opérateurs
spatiaux
fonctions
spatiales
© J.Y. Antoine — 14
- 15. Requêteurs SIG
Requêteur ArcGIS
Requêteur attributaire
Requêteur spatial
© J.Y. Antoine — 15
- 16. Index spatiaux
Optimisation de requêtes Id Nom Dep Pop obj
41000 Blois 41 51500 *
Problème – Temps d’exécution d’une requête
Exemples
Communes
• Liste des villes de plus de 10 000 habitants
Index classique (SGBD-R) sur l’attribut Pop
• Pointé sur une zone dans une couche donnée
• Sélection de zone dans un rectangle donné
Problème : Comparer les coordonnées de la sélection avec celles de tous
les objets de la couche : nombreux tests à faire et test unitaire
d’appartenance très coûteux en temps de calcul
Index spatial
© J.Y. Antoine — 16
- 17. Index spatiaux
Principes
Idée – Partitionner l’espace pour limiter la recherche aux objets d’une sous-zone
considérée index spatial défini sur ces zones
α γ
α,γ
α
γ
β,γ δ
δ
δ,γ
δ
β
Index spatial – Liste des objets en intersection (inclus, coupant, ou contenant)
avec chaque zone. Plus précisément, indexation de leur rectangle englobant
minimal (rem).
© J.Y. Antoine — 17
- 18. Index spatiaux
Sélection d’objets avec indexation : cas du pointage
1. Détermination de la zone concernée par le pointage
2. L’index donne les rem correspondant
3. Recherche des rem englobant bien le point désigné
4. Test d’appartenance du point à l’objet du rem.
γ
α α,γ γ
δ
β,γ δ,γ
δ
β
Principales techniques d’indexation spatiale
Seule la constitution des zones d’indexation varient d’une technique à l’autre
• Structures en grille (grid index)
• Arbres quaternaires (Quadtrees)
• Arbres R (R trees)
© J.Y. Antoine — 18
- 19. Index spatiaux
Index à grille régulière [Bentley & Friedman. 1979]
Structure d’indexation la plus simple : on partitionne une fois pour toute
l’espace par une grille régulière.
Implémentation – Coordonnées grille + tableau 2D de pointeurs vers des
pages mémoires décrivant tous les rem de chaque zone de la grille
α,γ
β,γ
Ajout d’un objet – Ajout dans les pages des zones concernées. Si page déjà
pleine, page(s) de débordement
Pointage – Accès à l’index aisé à partir des coordonnées du point désigné
Efficacité – Puissant si répartition homogène des objets et grille adaptée à la
taille des pages. Bien moins performant sinon
© J.Y. Antoine — 19
- 20. Index spatiaux
Index à grille adaptative [Nivergelt et. al. 1994]
Idée – Redécoupage dynamique de la grille si trop grande densité d’objets
dans une zone donnée
Exemple : index à grille adaptative avec un maximum de 3 éléments par zone
2
1 1,2 2
2,5
5
4
2,3 2,4
2,4,5
4
3
4,6
6
Pointage – Aussi aisé que pour une grille fixe (découpage à instant t connu)
© J.Y. Antoine — 20
- 21. Index spatiaux
Index à grille adaptative [Nivergelt et. al. 1994]
Implémentation – Index composé de trois structures de données :
• Tableau Grille pointant sur les pages de zone comme pour une grille régulière
• Vecteurs Tx et Ty donnant les abcisses et ordonnées de découpage.
Exemple : index à grille adaptative avec un maximum de 3 éléments par zone
Pages
Ty
y2 Grille 1,2 P1
y2
P1 P2
2
1 22,5
2,5 P2
y1
5 P3 P41
P4
y1
2,3 P3
y3
y0
P3 P42
y3
2,4,5
2,4,5
2,4
4
3 P4 1
y0
x0 x1 x2
4,6
P42
6
Tx
y0 x0 x2
x1
© J.Y. Antoine — 21
- 22. Index spatiaux
Index à arbre quaternaire (quadtree) [Samet 1990]
Idée – Découpage dynamique : toute zone saturée est redivisée en 4
Implémentation – Découpage décrit par une structure d’arbre
Exemple : index quadtree avec un maximum de 3 éléments par zone
Quadtree
2
1 5
6
4
3
Pages 1,3,5
1,3 2,4,5
2,4 4 3
© J.Y. Antoine — 22
- 23. Index spatiaux
Index à arbre quaternaire (quadtree) [Samet 1990]
Idée – Découpage dynamique : toute zone saturée est redivisée en 4
Implémentation – Découpage décrit par une structure d’arbre
Exemple : index quadtree avec un maximum de 3 éléments par zone
Quadtree
2
1 5
6
4
3
1,3,5 2,5 4 3 2,6 4,6 2,4
© J.Y. Antoine — 23
- 24. Index spatiaux
Index à arbre quaternaire (quadtree) [Samet 1990]
Pointage – Détermination de la zone de pointage par parcours de l’arbre (un
seul chemin jusqu’à la bonne feuille)
Intérêt et limite – Assez bien adapté aux distributions non homogènes
d’objets. Peu cependant conduire à des arbres déséquilibrés.
Arbre équilibré : index R
© J.Y. Antoine — 24
- 25. Index spatiaux
Index à arbre R (R tree) [Guttman 1984]
Principes – Index dynamique avec arbre équilibré
1. Partition incomplète de l’espace : simples zones englobant tous les objets
2. Organisation hiérarchique des zones suivant un arbre équilibré
Chaque zone est le rem des
éléments (rem ou objet) englobées
2
1
5
6
3
4
7
3,7 1,2,5 4,6
Sélection (pointé) – Plusieurs parcours à étudier dans l’arbre R
© J.Y. Antoine — 25
- 26. Index spatiaux
Index à arbre R (R tree) [Guttman 1984]
Arbre R – Arbre équilibré de degré n fixé avec :
• Le nœud racine possède entre 2 et n fils
• Tout nœud interne a entre m et n fils, avec m entier inférieur à n/2.
Construction dynamique de l’arbre R – Ajout d’un nouvel élément à l’index
non oui
L’objet est-il inclus dans une zone ?
Intégration à la zone dont l’extension
du rem est minimale : rem étendue Intégration à la zone
non oui
La zone est-elle saturée ?
Réorganisation de l’arbre R : éclatement de la
Ajout de la référence à
feuille en plusieurs feuilles. Propagation
l’élément dans la page
éventuelle aux nœuds parents
d’index concernée
analogue arbre B : cf. cours BD Avancées
© J.Y. Antoine — 26
- 27. Index spatiaux
Index à arbre R (R tree) [Guttman 1984]
Construction dynamique de l’arbre R – Ajout d’un nouvel élément à l’index
Exemple : arbre R de degré 3
10
9
2
1
5
6
[3,7,8] [1,2,5] [4,6]
[3,7] [4,6,9]
8
3
7 4
© J.Y. Antoine — 27
- 28. Index spatiaux
Index à arbre R (R tree) [Guttman 1984]
Construction dynamique de l’arbre R
Exemple : arbre R de degré 3
10
[3,7,8] [1,10] [2,5] [4,6,9]
9
2
1
5
6
8
3
7 4
© J.Y. Antoine — 28
- 29. Index spatiaux
Index à arbre R (R tree) [Guttman 1984]
Construction dynamique de l’arbre R
Exemple : arbre R de degré 3
10
[3,7,8] [1,10] [2,5] [4,6,9]
9
2
1
5
6
8
3
7 4
[3,7,8] [1,10] [2,5] [4,6,9]
© J.Y. Antoine — 29
- 30. Index spatiaux
Index à arbre R (R tree) [Guttman 1984]
Construction dynamique de l’arbre R – Suppression d’un élément à l’index
Idem arbre B : fusion éventuelle si une zone a moins de m éléments.
Construction statique de l’arbre R
Lors de la création d’une BD, il est préférable de construire l’index avec une
vision globale plutôt que de s’en remettre à un ajout des objets un à un.
Stratégies en envisageables :
• Minimiser le nombre des recouvrements de zone à un niveau de l’arbre, pour
limiter les parcours multiples ensuite,
• Minimiser la surface totale des zones, pour éviter de couvrir des zones sans
objets
• Maximiser le nombre de fils à chaque nœud, afin de limiter la profondeur du
graphe et accélérer son parcours.
•…
© J.Y. Antoine — 30
- 31. Index spatiaux
Comparaison des différents index
Grille Grille Arbre Arbre R
statique dynamique quaternaire
Complexité
7 7 7
d’implantation
Tolérance à
7
la distribution
des objets
Performance
7 7 7 7
sélection
Situation Distributions Compromis Performances
d’utilisation homogènes simplicité / en toutes
situations
efficacité
© J.Y. Antoine — 31
- 32. Bibliographie
Ouvrages de référence
• Scholl M., Voisard A., Peloux J.P., Raynal L., Rigaux Ph. (1996) SGBD
Géographiques : spécificité. Int. Thomson Publ., Paris, France. Chap. 4
Travaux cités
• Bentley J.L., Friedman J.H. (1979) Data structures for range searching. ACM
Computing Surveys. 11(4).
• Guttman A. (1984) R-trees : a dynamic index structure for spatial searching. Proc.
ACM SIGMOD Int. Symposium on the Management of Data. Pp. 45-67.
• Nievergelt J., Hinterger H., Sevcik K.C. (1994) The grid file : an adaptable symetric
multikey file structure. ACM Trans. on Databases Systems. 9(1). pp. 38-71.
• Samet H. (1990) Application of spatial data structure. Addison-Wesley Publ. 9(1).
© J.Y. Antoine — 32