N° ordre 2001ISAL0078 Année 2001 Thèse Spécialité Informatique Présentée devant L’Institut National des Sciences Appliquées de Lyon Pour obtenir Le grade de docteur Formation doctorale : Documents multimedia, Images et Systèmes d'Information Communicants (DISIC) École doctorale : Ecole Doctorale Informatique et Information pour la Société (EDIIS) Par Myoung-Ah KANG Attaché Temporaire à l’Enseignement et à la Recherche Indexation et Visualisation des données de Champs Continus dans les SIG (Systèmes d'Information Géographique) Jury MM. P. BERGOUGNOUX Professeur à l'Université Toulouse III Directeur R. LAURINI Professeur à l'Université Lyon 1 K.-J. LI Professeur à l'Université Nationale de Pusan (Corée du Sud) Co-directeur S. SERVIGNE Maître de Conférence à l'INSA de Lyon Rapporteur S. SPACCAPIETRA Professeur à l'Ecole Polytechnique Fédérale de Lausanne (Suisse) Rapporteur G. ZURFLUH Professeur à l'Université Toulouse I Cette thèse a été préparée au Laboratoire d'Ingénierie des Systèmes d'Information (LISI) de l'INSA de Lyon.
210
Embed
Indexation et visualisation des données de champs continus ...theses.insa-lyon.fr › publication › 2001ISAL0078 › these.pdf · concept pour indexer des données sur les valeurs
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
N° ordre 2001ISAL0078 Année 2001
Thèse Spécialité
Informatique Présentée devant
L’Institut National des Sciences Appliquées de Lyon Pour obtenir
Le grade de docteur Formation doctorale : Documents multimedia, Images et Systèmes d'Information
Communicants (DISIC)
École doctorale : Ecole Doctorale Informatique et Information pour la Société (EDIIS)
Par Myoung-Ah KANG
Attaché Temporaire à l’Enseignement et à la Recherche
Indexation et Visualisation des données de Champs Continus dans les SIG
(Systèmes d'Information Géographique)
Jury MM.
P. BERGOUGNOUX Professeur à l'Université Toulouse III Directeur R. LAURINI Professeur à l'Université Lyon 1
K.-J. LI Professeur à l'Université Nationale de Pusan (Corée du Sud) Co-directeur S. SERVIGNE Maître de Conférence à l'INSA de Lyon
Rapporteur S. SPACCAPIETRA Professeur à l'Ecole Polytechnique Fédérale de Lausanne (Suisse)
Rapporteur G. ZURFLUH Professeur à l'Université Toulouse I
Cette thèse a été préparée au Laboratoire d'Ingénierie des Systèmes d'Information (LISI) de l'INSA de Lyon.
1.2.1 Les grilles régulières de cellules ............................................................. 21 1.2.2 Les tessellations polygonales.................................................................. 22 1.2.3 Les réseaux de triangles irréguliers (TIN)............................................... 23 1.2.4 Les grilles de cellules carrées pour DEM (Digital Elevation Model)....... 23 1.2.5 Les courbes de niveau ............................................................................ 24
2. Problématiques dans l'interrogation de BD de champs continus....28
2.1 Requêtes conventionnelles............................................................................ 29 2.2 Requêtes par valeurs..................................................................................... 30
2.2.1 Comment déterminer l'intervalle des valeurs d'une cellule ? ................... 32 2.2.2 Pourquoi ne pas indexer simplement des points-échantillons par un index comme le B-tree ?............................................................................................... 35
2.3 Motivation des travaux ................................................................................. 37 2.4 Remarque et hypothèse ................................................................................. 37 2.5 Limitation de la méthode d’indexation.......................................................... 42 2.6 Requête par valeurs et modèle des courbes de niveau ................................... 43 2.7 Conclusion ................................................................................................... 44
3. Etat de l’art ........................................................................................46
3.1 Indexation par valeurs .................................................................................. 47 3.1.1 Extraction des iso-surfaces ..................................................................... 47
3
3.1.2 Application de Navigation de terrains aidée par l’IP-Index..................... 47 3.1.2.1 IP-index ............................................................................................ 48 3.1.2.2 Comment utiliser l’IP-index dans cette application ? ......................... 49 3.1.2.3 Conclusion ........................................................................................ 49
3.2 Méthode d'indexation des données intervalles............................................... 50 3.2.1 Méthodes d'indexation basées sur les B-trees.......................................... 51
4.2 Sous-champs ................................................................................................ 69 4.2.1 Définition d’un sous-champ.................................................................... 70 4.2.2 Stratégies de traitement des requêtes basées sur l’approche des sous-champs ............................................................................................................... 72 4.2.3 Exemple d’application de la stratégie ..................................................... 73 4.2.4 Intérêts de l'exploitation des sous-champs .............................................. 74 4.2.5 Implémentation des sous-champs............................................................ 75
4.3.1.1 La façon de découper l'espace ........................................................... 76 4.3.1.2 La similarité des valeurs d’un sous-champ ........................................ 76
4.3.2 Exemple de génération des sous-champs par Interval Quadtree .............. 77 4.3.3 Deux implémentations de l’Interval Quadtree ......................................... 79
4.3.3.1 Interval Quadtree implémenté par Pointeur (Pointer-based Interval Quadtree)......................................................................................................... 79
4.3.3.1.1 Structure de données ................................................................... 79 4.3.3.1.2 Procédure de recherche................................................................ 80
4.3.3.2 Interval Quadtree Linéaire (Linear Interval Quadtree) ...................... 82 4.3.3.2.1 Structure de données ................................................................... 82 4.3.3.2.2 Procédure de recherche................................................................ 83
4.3.4 Implémentation, Performance et Remarques ........................................... 84 4.3.5 Conclusion et Critique de l'Interval Quadtree ......................................... 86
4.4.1.1 La façon de découper l'espace ........................................................... 88 4.4.1.2 La similarité des valeurs d’un sous-champ ........................................ 91
4.4.2 Exemples de génération des sous-champs par I-Hilbert .......................... 95 4.4.3 Implémentation....................................................................................... 99
4.4.3.1 Structure de données ......................................................................... 99 4.4.3.2 Procédure de recherche.....................................................................100
5.2 Données simulées par une méthode fractale .................................................108 5.2.1 Génération des données de terrain fractal ..............................................108
5.2.1.1 Midpoint Displacement à 1 dimension..............................................109 5.2.1.2 Génération des données fractales par Diamond-Square.....................111
5.2.2 Expérimentations sur des données de terrains fractals............................114 5.3 Données simulées monotones ......................................................................118
5.3.1 Données monotones dans l'espace d'origine ...........................................119 5.3.2 Données monotones dans l'espace linéarisé ...........................................120
6. Traitement des requêtes par valeurs .............................................. 126
6.1 Transformation des valeurs d'une requête ....................................................128 6.2 Procédure de traitement des requêtes par valeurs .........................................132 6.3 Conclusion ..................................................................................................133
7.1.1.1 Formules de calcul du niveau sonore ................................................135 7.1.1.2 Carte horizontale ..............................................................................135
7.1.2 Problématiques ......................................................................................137 7.1.3 Comment utiliser la méthode I-Hilbert dans MITHRA ? ........................137 7.1.4 Performances.........................................................................................138 7.1.5 Perspectives...........................................................................................138
7.2 Visualisation des données spatio-temporelles de l'environnement ................139 7.2.1 Modèle de volume .................................................................................139 7.2.2 Visualisation par la méthode d'indexation I-Hilbert ...............................141
7.3 Application de Navigation sur des terrains...................................................143
PARTIE 2 Visualisation dynamique de la temporalité :
Application à un SIG sonore urbain......................................... 144
8. Problématique de la visualisation des données sonores urbaines..146
8.1 Carte de son et visualisation de la continuité spatiale : Cartes statiques .......147 8.2 Visualisation de la temporalité : Cartes animées ..........................................148 8.3 Problématiques et caractéristiques de l'animation des données sonores ........150 8.4 Conclusion ..................................................................................................152
9. Etat de l'art sur les cartes animées ................................................. 154
9.1 Méthodes de génération et d'affichage d'une animation................................154 9.2 Animation temporelle et non temporelle ......................................................155
9.2.1 Animation temporelle ............................................................................155 9.2.2 Animation non temporelle .....................................................................156
9.3 Variables graphiques d'animation et variables dynamiques ..........................157 9.4 Exemples d'applications des cartes animées .................................................160 9.5 Animation cartographie interactive ..............................................................161 9.6 Cartes animées sur Internet..........................................................................164 9.7 Conclusion ..................................................................................................165
10. Visualisation dynamique de la temporalité dans un SIG sonore
10.1 Objectif d'un SIG pour environnement sonore urbain ...............................167 10.2 Les données sonores temporelles utilisées ................................................168
10.2.1 Représentation de la temporalité de chaque type de données ..............168 10.2.2 Mode de visualisation de chaque type de données ..............................172
10.3 Carte animée interactive ...........................................................................173 10.3.1 IHM et paramètres d’animation ..........................................................174 10.3.2 Contrôleur interactif d’animation .......................................................176 10.3.3 Exemple .............................................................................................178
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
28
2. Problématiques dans l'interrogation de BD de champs continus
Comme dit précédemment, l’interrogation et l’analyse de données champs amènent à considérer
deux classes de requêtes. Les requêtes basées sur :
Q1) une condition spatio-temporelle : “ Quelle est la valeur du champ sur un point don-
né v'(x, y, z, t) ? ”
Q2) une condition d'une valeur de champ : “ Quelles sont les régions qui présentent une
température égale à 28° ? ”
La première classe de requêtes (dites requêtes conventionnelles) est classique et
conventionnelle dans une base de données (BD) d’un champ continu. Elle demande la valeur du
champ correspondant à un point donné, ce qui revient à trouver la valeur d’un champ en une po-
sition donnée. A l’inverse, pour la seconde classe, il s’agit de déterminer des régions où le
champ a une valeur donnée. Nous appelons la deuxième classe de requêtes requêtes par valeurs.
Des requêtes complexes peuvent être composées par la combinaison de ces requêtes de base.
Bien que ces deux classes de requêtes impliquent des données de type champs, leurs méthodes
de traitement sont très différentes et induisent des coûts élevés, de par le volume important des
données champs.
Dans ce chapitre, nous présentons la procédure du traitement de requêtes selon leur
classe (présentée ci-dessus). Nous présentons particulièrement les problématiques posées pour
le traitement des requêtes de type Q2. La motivation de cette thèse est donc d'essayer de résou-
dre ces problématiques. Ensuite, nous illustrons la limitation de la méthode et quelques remar-
ques.
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
29
2.1 Requêtes conventionnelles
Ce type de requêtes peut être noté F(v') où v' est la position donnée (la condition de la requête)
et la fonction F représente le champ. La condition de la requête peut être étendue à une ligne ou
une région. Lorsque la condition de la requête est un point, le résultat de la requête peut être une
valeur de champ ou un gradient. Le résultat peut être interprété différemment, lorsque la condi-
tion est une région, par exemple un minimum, un maximum, une intégrale ou une moyenne des
valeurs sur la région. En effet, une autre requête de ce type pourrait être : “ Déterminer la va-
leur moyenne dans une région S ”. Dans tous les cas, retrouver la valeur d’un champ en un point
ou en une région est nécessaire pour le traitement de ces requêtes relatives à un minimum, un
maximum, une intégrale, une moyenne et même les gradients.
Comme nous l'avons vu brièvement dans le chapitre précédent, la procédure de traite-
ment de ce type de requêtes pourrait être définie comme suit :
Etape C1) Déterminer la cellule ci auquel le point v' appartient.
Etape C2) Appliquer F(v') sur la cellule ci de manière à obtenir f (v', points-échantillons
( ci )).
Dans un premier temps, une cellule contenant le point v’ de la requête doit être déter-
minée. Ensuite, la fonction d’interpolation f correspondante doit être appliquée sur les points-
échantillons voisins du point v' à savoir les points-échantillons de la cellule ci issue de l’étape
C1.
La question qui se pose donc dans une Base de Données (BD) contenant un grand
nombre de cellules, est de trouver efficacement la cellule contenant le point de la requête. En
effet, ce traitement implique une opération spatiale courante dans les BD spatiales et ces requê-
tes peuvent donc être supportées par une méthode d’indexation spatiale conventionnelle comme
le R-tree ou une de ses variantes [GUTTMAN 84] [SELLIS et al. 87] [BECKMANN et al. 90].
D’ailleurs dans le cas des cellules régulières comme dans les DEM, nous pouvons ac-
céder directement à la cellule correspondante grâce à l’organisation physique des données. Par
exemple, en ce qui concerne son stockage sur disque, un DEM à 2 dimensions peut être linéarisé
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
30
dans un tableau à une dimension ordonné selon les lignes. Dans ce cas, l’adresse physique d’une
cellule peut être calculée facilement sans aucune méthode d’indexation.
2.2 Requêtes par valeurs
L’objectif des requêtes de type Q2 est de déterminer des régions à partir d’une valeur donnée
w’. La condition de la valeur d’une requête w’ porte soit sur une valeur soit sur un intervalle.
Par exemple, les requêtes telles que “Quelles sont les régions qui présentent des précipitations
supérieures à 2000 mm par an ? ” ou bien “Quelles sont les régions qui présentent une tempé-
rature entre [20oC, 25oC] ? ” appartiennent à ce type de requêtes.
La plupart des applications des champs continus s'intéressent peu aux requêtes exactes
comme "Quelles sont les régions où la valeur est exactement égale à w' ?". En revanche, elles
semblent s'intéresser plutôt aux requêtes du type : "Quelles sont les régions où la valeur est ap-
proximativement égale à w' ?" car les valeurs mesurées sur les points échantillons peuvent
comporter des erreurs et des incertitudes. Ces requêtes peuvent être notées :
F-1(w’- e <w< w’+ e),
où e est la marge d’erreur tolérée. Plus généralement, nous pouvons définir ce type de requêtes
par F-1(w’ < w < w”) représentant une requête d'intervalle.
Contrairement aux requêtes Q1, les requêtes de type Q2 sont plus difficiles à traiter car
il existe plus d’une cellule dans lesquelles la valeur est égale, supérieure ou inférieure à w’. La
Figure 7 illustre l’exemple d’une requête dans un champ continu à 2 dimensions. Notons que le
plan XY a été projeté sur l’axe des V afin de simplifier le schéma. Le deuxième axe des w donne
les valeurs des champs.
Le champ est vu comme continu par ces points-échantillons et par les fonctions
d’interpolation. La cellule c1 contient les points-échantillons <v1, v2 ,v3 > et est représentée par
la fonction d’interpolation f1. La cellule c2 contient <v3, v4, v5> et elle est également représentée
par f2. Nous pouvons remarquer qu’à partir des valeurs des points-échantillons d’une cellule il
est possible de déduire l’intervalle de toutes les valeurs possibles à l’intérieur de la cellule : non
seulement les valeurs explicites mais aussi les valeurs implicites qui seront estimées par une in-
terpolation. Ces intervalles sont représentés par Ii pour chaque cellule ci .
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
31
Figure 7. Exemple d'une requête par valeurs dans un champ continu.
Supposons que la valeur de la requête donnée soit w’ dans la Figure 7. Les points pour
lesquels les valeurs sont égales à w’ sont v’ et v”. Ils sont le résultat de la requête. Ces points du
résultat peuvent être calculés par interpolation après avoir déterminé les cellules <c1, c3> dont
l'intervalle chevauche la valeur de la requête w’. Plus précisément, v’ peut être calculé en appli-
quant la fonction inverse de l’interpolation correspondant, notée f1-1(w’), sur les points-
échantillons de c1, c’est-à-dire < v1, v2, v3>. Et v” peut également être déterminé par la fonction
f3-1(w’) sur les points-échantillons de c3, <v5, v6, v7>.
La procédure de traitement de ce type de requêtes pourrait alors être définie comme
suit :
Etape V1) Déterminer les cellules ci dont les intervalles de valeurs chevauchent la valeur
de la requête w' .
Etape V2) Appliquer F-1(w') sur les cellules ci : f -1(w', points-echantillons (ci)).
Reprenons la Figure 5 représentant un champ continu. Supposons la requête suivante :
“Déterminer les régions où la valeur est comprise entre 55 and 59”. Pour traiter cette requête,
Requête w'
v’ v ”
×
I1 I2 I3
v1
v2
v3
v4
v5
v6
v7
Valeur w
Espace v
( c1, f 1) ( c2, f 2) ( c3, f 3)
×
: point-échantillon
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
32
nous devons premièrement déterminer les carrés <c1, c2, c3, c4 >. Les régions exactes de la ré-
ponse à la requête pourront ensuite être calculées.
Le problème des requêtes par valeurs dans un champ continu se ramène à « trouver
toutes les cellules dont les intervalles de valeurs chevauchent la valeur de la requête ». Sans
indexation, toute la base de données serait à analyser séquentiellement, ce qui entraînerait une
dégradation dramatique de la performance du système. Nous appelons cette méthode, la mé-
thode de ‘Balayage Séquentiel’. Dans ce mémoire, nous allons proposer des méthodes
d’indexation efficaces pour supporter les requêtes par valeurs dans les BD de champ continu en
accélérant la recherche des cellules satisfaisant aux conditions de ces requêtes.
2.2.1 Comment déterminer l'intervalle des valeurs d'une cellule ?
Comme nous l'avons vu, le traitement des requêtes par valeurs se base sur le traitement des in-
tervalles des cellules. L'intervalle d'une cellule ci peut être déterminé comme suit :
Ii = FI(ci) = FI(Ai , PEi , fi),
où FI est une fonction qui détermine un intervalle à partir de : Ai (l'aire couvrant exactement ci),
PEi (points-échantillons de la cellule ci) et fi (la fonction d'interpolation représentant ci).
Afin de déterminer l'intervalle d'une cellule, trois paramètres sont donc nécessaires.
Mais dans le cas où les points-échantillons de la cellules sont les sommets de la cellule (ex. des
TIN), Ai peut être absent car les points-échantillons peuvent représenter l'aire de la cellule.
Quelques exemples de déduction d'intervalles de cellules seront présentés par la suite.
Exemples :
La Figure 8 illustre quelques exemples de champs continus. En effet, cette figure montre com-
ment les intervalles des cellules peuvent être déduits dans un modèle spécifique.
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
33
Figure 8. Détermination de l'intervalle des cellules dans des champs continus.
a) DEM
Les points-échantillons d'une cellule sont les sommets de la cellule. Supposons que la
fonction d'interpolation fi soit une fonction bilinéaire. Les valeurs sur tous les points à l'intérieur
d'une cellule sont délimitées par les valeurs de points-échantillons de la cellule.
Soit Ii l'intervalle de la cellule ci. Les intervalles Ii seront donc [40-60], [48-90], [50-
74], [60-110] pour i=1, 2, 3, 4.
40
c1
48 56
50 60 90
64 11074
c2
c3 c4
c2c1
c3 : 40
c2 : 30c1 : 23
c1
c2
c3
c4
c3
c5
40
48
61 60
50
40
63
80
a. DEM b.TIN
c.Voronoid.Tessellation polygonale
60
36
: point-échantillon
10
9
10
12 4
R : la distance entre le point-échantillonet le point le plus loin dans la cellule
R
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
34
b) TIN
Les points-échantillons d'une cellule sont les sommets de la cellule. Supposons que la
fonction d'interpolation fi soit la fonction linéaire.
Les intervalles Ii seront donc [40-50], [48-60], [48-61] pour i=1, 2, 3.
c) Voronoi
Chaque cellule possède un point-échantillon en son centre. Supposons que la fonction
d'interpolation fi soit une fonction par pondération de la distance. En effet, la distance est défini
comme la distance d entre le point-échantillon et le point à estimer dans la cellule. Par exemple,
la valeur à estimer sur un point est définie comme w/d où w est la valeur du centre. Le maxi-
mum des valeurs possible à l'intérieur d'une cellule sera donc la valeur du point-échantillon. Le
minimum sera la valeur sur le point le plus loin du point-échantillon (c'est-à-dire le point cen-
tral) de la cellule. Pour chaque cellule, la distance entre le point-échantillon et le point le plus
loin est représentée dans la Figure 8.c.
Les intervalles Ii seront donc [36-3], [40-4], [60-15], [80-8], [63-7] pour i = 1, 2, 3, 4,
5.
Les résultats de l'estimation des points sur les frontières entre deux cellules ne sont pas
nécessairement identiques. En effet, les points sur les frontières peuvent être calculés soit à par-
tir de la première cellule soit à partir de la seconde. Une autre définition de l'estimation est donc
nécessaire pour des points sur les frontières (ex. prendre la moyenne de deux valeurs estimées
provenant des deux cellules voisines de la frontière). En d'autre termes, pour certaines méthodes
d'estimation, il se peut que la continuité ne soit pas assurée.
d) Tessellation polygonale
Les cellules sont des zones privilégiées qui possèdent une valeur unique pour tous les
points à l'intérieur de la cellule. La valeur unique pour chaque cellule est représentée dans la
Figure 8.d. La fonction d'interpolation fi peut donc être définie comme une fonction qui retourne
une valeur unique quelque soit le point considéré dans la cellule.
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
35
Les intervalles Ii seront donc [23-23], [30-30], [40-40] pour i = 1, 2, 3.
2.2.2 Pourquoi ne pas indexer simplement des points-échantillons par un index comme le B-tree ?
Nous aurions pu pensé qu’il est possible d'indexer simplement les valeurs de points-échantillons
afin de traiter les requêtes par valeurs. Pour cela, le B-tree (ou le B+-Tree) [KNUTH 73]
[KORTH et SILBERSCHATZ 91] peut être utilisé. En effet, le B-tree est la méthode d'indexa-
tion la plus courante et populaire pour indexer ce genre de données alphanumériques comme des
valeurs de points-échantillons. Dans cette section, nous expliquons la raison pour laquelle nous
ne pouvons pas simplement indexer les valeurs des points-échantillons par le B-tree pour les re-
quêtes par valeurs. Cela signifie que nous devons finalement trouver une autre méthode d'in-
dexation pour accélérer la procédure présentée ci-dessus.
Supposons que la Figure 9 représente un terrain de type DEM et que la fonction d'in-
terpolation bilinéaire soit utilisée pour transformer les altitudes des points-échantillons discrets
en un terrain continu. Les chiffres entre parenthèses représentent les altitudes mesurées sur les
points-échantillons vi aux sommets des cellules. Les méthodes conventionnelles utiliseront les
valeurs discrètes des points-échantillons comme clé. Prenons des exemples de requêtes par va-
leurs :
Figure 9. Terrain de type DEM.
v2(46) v3(54) v4(80)
v5(50)v6(60) v7(90) v8(84)
v12(88)
v15(120)v14(112)v13(80)v12(80)
v9(64) v11(110)v10(74)
xx
x
xx
x
Réponses implicitespour R1
Réponses implicites pour R2
v1(40)
x
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
36
R1 : “ Quelles sont les régions où l'altitude est égale à 115 ? ”
Une méthode d'indexation classique renverra Null car il n’y a aucune valeur explicite
égale à 115. En revanche, nous pouvons obtenir des points à l'intérieur de la cellule en-
tourée par les points-échantillons <v11, v12, v14, v15> en utilisant la procédure de trai-
tement des requêtes présentée précédemment (voir la Figure 9).
R2 : “ Quelles sont les régions où l'altitude est égale à 50 ? ”
Une méthode d'indexation classique renverra uniquement la position du point v5,
alors que la réponse correcte doit aussi inclure des points implicites se trouvant à l'inté-
rieur des cellules entourées par les points-échantillons <v1, v2, v5, v6> et <v2, v3, v6,
v7> (marquées dans la Figure 9).
R3 : “ Quelles sont les régions où l'altitude est entre 115 et 118 ? ”
Par la procédure que nous proposons, il est possible d’obtenir les régions répondant
aux critères de la requête. En revanche, il n'est pas possible de trouver la réponse à la
requête par une méthode d'indexation classique car les valeurs 115 et 118 de la requête
sont implicites.
D'une manière générale, les requêtes R1 et R2 doivent renvoyer une ligne ou un ensem-
ble de lignes de type "courbe de niveaux". Quand à R3, la zone de réponse est définie par l'es-
pace compris entre deux courbes de niveaux.
Par conséquent, nous ne pouvons donc pas utiliser une méthode d'indexation classique
(telle que le B-tree) avec des valeurs de points-échantillons car elle ne permet pas de trouver
des valeurs implicites provenant de la définition de continuité des champs considérés.
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
37
2.3 Motivation des travaux
Comme nous l'avons vu, sans indexation le traitement des requêtes par valeurs requiert un ba-
layage séquentiel de toute la base de données. Malgré l'importance des méthodes efficaces de
traitement des requêtes par valeurs, aucune attention particulière ne leur a été portée, et aucun
travail significatif n'a été effectué sur ces méthodes d'indexation. Dans notre travail, nous vou-
lons donc proposer de nouvelles structures d'index qui améliorent le traitement des requêtes par
valeurs dans les grandes bases de données de champs continus. Ceci constitue la motivation et
la contribution pratique de cette thèse.
2.4 Remarque et hypothèse
Les méthodes d'interpolation peuvent être classifiées en méthodes globales ou locales [JEAN-
SOULIN 91] [PARIENTE 94]. Le modèle générique et les procédures de traitements des requê-
tes présentés dans la section précédente sont basés sur l'hypothèse de l'utilisation d'une méthode
d'interpolation locale. Pour mieux comprendre cette hypothèse, nous présentons d'abord la défi-
nition des méthodes globales et locales.
1) Méthodes globales:
Les méthodes d'interpolation globales tiennent compte de toutes les valeurs échantillon-
nées, donc de tous les points-échantillons (voir Figure 10.a.). Citons quelques méthodes
globales parmi les plus connues, comme les méthodes de pondération de la distance, la
méthode des différences finies [LAM 83], et le krigeage [MATHERON 67].
2) Méthodes locales:
Elles ne prennent en considération que les points-échantillons les plus proches (voir
Figure 10.b). Le nombre de ces points varie selon les méthodes (en général, au minimum
trois points sont nécessaires). Les méthodes locales courantes sont l'interpolation poly-
nomiale [LAM 83], les méthodes reposant sur une triangulation de l'espace d'étude, et
les splines [BARTELS et al. 87], [HERRING 91].
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
38
Figure 10. a) Méthode d'estimation globale. b) Méthode d'estimation locale.
Comme nous l’avons vu dans le modèle proposé, l'espace d'un champ est divisé en un
grand nombre de cellules et la fonction d'interpolation ne considère, pour une requête donnée,
que des points-échantillons d'une cellule. Il est évidemment possible de diviser l'espace en une
seule cellule et d'utiliser une méthode globale qui considère tous les points-échantillons pour les
traitements des requêtes. Dans ce cas, les procédures des requêtes présentées perdent leur intérêt
pour les raisons suivantes :
a) La procédure de traitement des requêtes conventionnelles : l'étape 1 "Déterminer
la cellule ci à laquelle le point v' (à estimer) appartient" n'est plus nécessaire car le ré-
sultat est toujours la cellule qui représente l'espace total. Cela entraîne finalement un
grand temps de calcul pour l'exécution de l'étape 2 à cause du parcours complet du fi-
chier de points-échantillons pour chaque nouvelle estimation.
b) La procédure de traitement des requêtes par valeurs : puisqu'il n’existe qu’une
seule cellule et un seul intervalle de valeurs, et que cet intervalle chevauche toujours les
valeurs des requêtes, nous avons besoin de tous les points-échantillons pour appliquer la
fonction inverse d'interpolation comme c'est le cas pour la résolution des requêtes clas-
siques. Cela signifie qu'une méthode d'indexation est inutile pour améliorer la perfor-
mance des traitements des requêtes. En effet, les données devront obligatoirement être
intégralement parcourues.
? ?
: point-échantillon, : point à estimer?
a) b)
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
39
Nous avons ainsi expliqué la raison pour laquelle nos travaux sont basés sur
l’utilisation d'une méthode d'indexation locale. En revanche, nous voulons insister sur le fait
que notre approche est aussi adaptée pour une méthode globale. En effet :
Les méthodes globales telles que la méthode des différences finies (MDF), Krigeage,
etc. proposent de discrétiser l'espace d'étude en cellules régulières ou non régulières
[KEMP 93] [PARIENTE 94]. En général, la discrétisation se fait sous la forme d'une
grille de cellules.
Les méthodes globales déterminent les points représentant chaque cellule en l'espace.
Les méthodes globales estiment les valeurs sur les points représentant une cellule en
considérant tous les points-échantillons originaux à chaque estimation. Ainsi, cela est
fait pour toutes les cellules. Les points représentant une cellule peuvent être les sommets
de la cellule (comme dans la Figure 11), ou le point au centre, ou bien encore d’autres
points définis par la représentation d'une application.
Les résultats du calcul de l'estimation sont stockés sur le disque dur et le processus de
traitement des requêtes accède à ces résultats plutôt qu’aux données originales. La rai-
son est que le temps de calcul d'une méthode globale est généralement très long pour de
grandes bases de données, et il n'est pas raisonnable d'effectuer le calcul à chaque exé-
cution d’une requête. Lorsque la valeur sur un point doit être estimée, nous déterminons
la cellule à laquelle appartient le point à estimer et nous ne prenons en compte que les
points représentant la cellule pour l'estimation plutôt que la totalité des points-
échantillons originaux. Nous appelons ces points, des représentants de points-
échantillons générés.
Il existe des systèmes qui génèrent une valeur unique pour toute une cellule, en général
au centre, et qui représente la valeur de champ en tous les points à l'intérieur de la cel-
lule (comme dans le modèle Raster) [PARIENTE 94] [BROWN 97]. Comme nous
l’avons vu dans la section 1.1, cette représentation n'est pas adaptée pour représenter un
champ continu. En effet, elle implique une seule valeur homogène pour tous les points
inclus dans une cellule. Celle-ci serait adaptée si la résolution de la discrétisation de
l'espace était suffisamment précise (élevée) pour qu’une cellule ne représente, en fait,
qu’un seul point. Mais malheureusement, cela n'est pas le cas en réalité.
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
40
Il est alors préférable de générer les valeurs sur plusieurs points pour représenter les va-
leurs d'une cellule, et d'appliquer une méthode d'interpolation locale à partir de ces
points générés lors de la demande d'une valeur sur un point.
La Figure 11 représente l'architecture générale de définition d'un champ utilisant une
méthode globale. Dans la Figure 11, la méthode globale s'exécute une fois pour générer des ré-
sultats. Ensuite, le processus de requêtes utilise une méthode locale, comme par exemple, une
interpolation linéaire avec des résultats stockés.
Il est possible de trouver un exemple d’utilisation de cette architecture dans un système
d'information des données spatio-temporelles de l'environnement [BROWN 97], qui sera
présenté dans la section 7.2.
En conclusion, nous remarquerons que les résultats des points-échantillons générés
dans un espace discrétisé peuvent finalement être représentés par le modèle que nous proposons,
et qu’ils doivent également être vus comme continus. Cela signifie qu’il est possible d’adopter
les procédures de traitements des requêtes présentées dans la section précédente et aussi
d’utiliser les méthodes d'indexation qui vont être proposées dans cette thèse pour accélérer le
temps de traitement des requêtes, spécifiquement des requêtes par valeurs.
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
41
Figure 11. Architecture générale d'un champ continu utilisant une méthode globale.
Discrétiser l’espace du champ
Estimer les valeurs sur tous les sommets par uneméthode globale
doit être vucomme continu
= points-échantillons originaux
Résultats
= points-échantillons générés
Stocker les résultatsdu calcul
ou , etc...
Requêtes
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
42
2.5 Limitation de la méthode d’indexation
Dans cette section, nous expliquons la limitation de la méthode d'indexation pour les traitements
des requêtes par valeurs. En effet, pour quelques méthodes d'interpolation, il existe des cas où
l'étape (V1) ne trouve pas certaines cellules, alors qu’elles devraient être prises en compte pour
l'étape (V2). La Figure 12 montre un exemple de ce cas.
Figure 12. Limitation de la méthode d'indexation.
Supposons qu'il existe deux cellules, c1 et c2 possédant les points-échantillons <v1, v2>
et < v2, v3, v4> (comme le montre la Figure 12). Pour répondre à la requête par valeurs "Quelles
sont les régions où la valeur est égale à w' ?", la fonction inverse d'interpolation f2-1(w’) doit
être appliquée sur les points-échantillons de la cellule c2 afin de trouver les positions des points
marqués par le signe "x" dans la Figure 12. Cependant la cellule c2 ne peut pas être trouvée par
l'étape (V1) car l'intervalle des valeurs c1, I1 ne chevauche pas la valeur de la requête w'. Ce
problème provient du fait que cette interpolation introduit de nouveaux points (appelés points
extrêmes) dans la base de données originale.
La limitation de nos méthodes d'indexation est qu’elles ne fonctionnent que pour les
méthodes d'interpolation qui n'introduisent pas de nouveaux points extrêmes. Néanmoins, si des
méthodes d'interpolation peuvent prévoir les points extrêmes par un simple calcul mathémati-
Requête w'
I2
Valeur w
Espace v
( c1 , f1 ) ( c2 , f 2)
I1 v1
v2
v3 v4x x
: point-échantillon
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
43
que, nos méthodes d'indexation peuvent fonctionner en utilisant des intervalles de valeurs pre-
nant en compte les points extrêmes.
2.6 Requête par valeurs et modèle des courbes de niveau
Les courbes de niveau sont des isolignes et chaque ligne relie des points qui ont la même valeur
(voir Figure 6).
Les résultats des requêtes par valeurs dans un champ continu représentent finalement
des courbes de niveau d'une valeur donnée par la requête. Ainsi, nous aurions pu pensé qu’il se-
rait préférable d'utiliser des courbes de niveau pour traiter les requêtes par valeurs. Pourtant,
dans la section 1.2 et la section 1.3, nous n'avons pas pris en compte ce modèle pour définir un
modèle générique de champs continus car il est peu satisfaisant pour la représentation des
champs continus. Les raisons sont les suivantes [van KREVELD 94] :
- Les courbes de niveau ne sont pas adaptées pour calculer facilement des inclinaisons ;
l'inclinaison étant une caractéristique importante à considérer dans un champ continu.
- Les courbes de niveau ne sont pas adaptées pour créer des modèles en relief.
- Les valeurs des points entre les courbes de niveau ont besoin d’être déterminées (esti-
mées). Calculer de nouvelles courbes de niveau (par exemple intermédiaires) qui ne sont
pas définies dans les courbes de niveau stockées constitue un processus difficile et grand
consommateur de temps .
Ainsi, le modèle de courbes de niveau est utilisé plutôt comme une structure intermé-
diaire, car des courbes de niveau peuvent, en effet, être calculées à partir des autres modèles il-
lustrés précédemment (voir 1.2). C’est la raison pour laquelle nous ne considérons pas ce mo-
dèle dans le traitement des requêtes.
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
44
Nous proposons donc une méthode d’indexation qui accélère le calcul des courbes de
niveaux, et qui peut s’appliquer pour plusieurs modèles de représentation comme par exemple
TIN, DEM, etc. Cette approche possède aussi un autre avantage : les courbes de niveau peuvent
être extraites pour n’importe quelle valeur (par des requêtes par valeurs). Ainsi, au lieu de stoc-
ker des courbes de niveau en plus d’un modèle primaire (ex. TIN, DEM, etc.) et de les interpo-
ler, nous utilisons seulement le modèle primaire et une méthode efficace pour extraire de ma-
nière interactive les courbes de niveaux (pour n’importe qu’elle valeur). Cela fournit une
solution flexible et efficace en terme de stockage.
2.7 Conclusion
Dans ce chapitre, nous avons présenté la procédure de traitement des requêtes sur les champs
continus. Les requêtes sur les champs continus peuvent être classées en deux catégories :
- requêtes conventionnelles basées sur une condition spatio-temporelle,
- requêtes par valeurs basées sur la condition d'une valeur de champ.
Contrairement aux requêtes conventionnelles pouvant être supportées par une méthode
d'indexation spatiale existante, les requêtes par valeurs sont plus difficiles à traiter. Nous avons
montré que le traitement de la requête consistait finalement à "trouver les cellules dont l'inter-
valle intersecte la valeur de la requête" (noté "étape V1"). La fonction inverse de l'interpolation
doit être appliquée sur les cellules trouvées pour les régions du résultat. Or, nous ne portons no-
tre attention que sur des méthodes accélérant l'étape V1 car cette étape est grande consomma-
trice de temps pour le cas des bases de données de grand volume. Cela signifie que notre mé-
thode est indépendante de la méthode d'interpolation pouvant être spécifiée selon les
caractéristiques des données. L'objectif de nos travaux est donc de développer une méthode
d'indexation accélérant l'étape V1 pour le traitement efficace des requêtes par valeurs.
Le traitement des requêtes par valeurs repose sur le traitement des intervalles des cel-
lules. L'intervalle des cellules est une information que l'on peut extraire facilement selon diffé-
rents modèles et différentes méthodes d'interpolation.
Chapitre 2. Problématiques dans l’interrogation de BD de champs continus
45
Les méthode d'interpolation peuvent être classées en méthodes globales ou locales se-
lon leurs stratégies de prise en compte des points-échantillons. En effet, nos travaux reposent
sur l'hypothèse de l'utilisation d'une méthode locale. Cela peut impliquer une limitation de nos
travaux. En revanche, en pratique, les applications avec une méthode globale se ramènent au
modèle générique, et à l'utilisation d'une méthode locale pour le traitement des requêtes. Cela
justifie la nécessité et l’utilité de nos travaux.
Le chapitre suivant présente un état de l'art des travaux sur les méthodes d'indexation
par valeurs et les méthodes d'indexation pour les données intervalles.
Chapitre 3. Etat de l’art
46
3. Etat de l’art
Peu de recherche se sont intéressées à l’indexation et au traitement des requêtes des
données champs continus et aucun travail significatif n’a été produit à notre connaissance. Les
recherches actuelles et antérieures se sont focalisées plutôt sur les problèmes de modélisation
conceptuelle et de représentation des données champs continus [KEMP 93] [PARIENTE 94]
[VCKOVSKI 95] [KEMP 97a] [KEMP 97b] [GORDILLO et BALAGUER 98] [OUATIK EL
ALAOUI 99]. Dans [PARIENTE 94], un modèle orienté objet pour implémenter une nouvelle
méthode d’estimation de champs continus basée sur une approche neuronale a été spécifié. Un
raffinement de ce modèle a été étudié dans [GORDILLO et BALAGUER 98] permettant de
changer dynamiquement la méthode d’estimation en fonction des caractéristiques des phénomè-
nes à estimer. [LAURINI et PARIENTE 96] a spécifié un langage pour la déclaration et de ma-
nipulation des champs continus. Le langage proposé est construit sur une extension du langage
de programmation du système de gestion de bases de données orientées objet O2. Toutefois si la
modélisation et la représentation des données champs peuvent être encore approfondies,
l’indexation et le traitement des requêtes restent un domaine inexploré en dépit de son impor-
tance.
Ce chapitre se divise en deux sections. Dans la section 3.1"Indexation par valeurs ,
nous présentons un état de l'art des travaux concernant les traitements des requêtes par valeurs
dans les champs continus. Comme nous l'avons remarqué, le problème des requêtes par valeurs
dans un champ continu se ramène à la recherche des cellules dont les intervalles de valeurs che-
vauchent la valeur de la requête (voir 2.2. Requêtes par valeurs). Cela implique la définition
d'une méthode d'indexation des données intervalles car la condition de la requête concerne les
intervalles (ex. une méthode simple est d'indexer les intervalles de chaque cellule dans l'espace
- voir 4.1. Méthode simple : Méthode I-All). Dans la section 3.2 "Méthode d'indexation des
données intervalles", nous proposons un état de l'art des méthodes d'indexation existantes pour
les données intervalles et nous choisissons une méthode efficace pour indexer des intervalles
Chapitre 3. Etat de l’art
47
dans des champs continus. La méthode choisie pour les intervalles sera utilisée dans des métho-
des d’indexation par valeurs présentées dans cette thèse.
3.1 Indexation par valeurs
Dans cette section, nous présentons des travaux concernant des méthodes d'indexation pour ac-
célérer les traitements des requêtes par valeurs.
3.1.1 Extraction des iso-surfaces
Des approches similaires au traitement des requêtes par valeurs dans les champs continus ont
été proposées pour l'extraction des isosurfaces à partir des données volumétriques scalaires
[CIGNONI et al. 96] [CIGNONI et al. 97] et pour l'extraction des isolignes à partir des TIN
[van KREVELD 94].
Les volumes et les triangles possèdent les altitudes aux sommets. A chaque volume ou
chaque triangle est associé un intervalle d'altitude délimité par le maximum et le minimum des
altitudes aux sommets. En effet, lorsque l'altitude w' donnée comme condition de la requête est
comprise entre le maximum et le minimum d'un intervalle, le volume ou le triangle associé à cet
intervalle contribue aux isosurfaces ou isolignes. L'Interval-tree [EDELSBRUNNER 80] a été
utilisé afin d'indexer les intervalles. En revanche, l'Interval-tree est une méthode d'indexation
basé sur la mémoire ("memory-based"), c'est-à-dire que toutes les données sont censées être
chargées en mémoire pour le traitement des requêtes. Ainsi, cette méthode n'est pas adaptée
dans le cas de grandes bases de données, ce qui est le cas que nous considérons.
3.1.2 Application de Navigation de terrains aidée par l’IP-Index
L’IP-index est une méthode d'indexation par valeurs dans des séquences de temps [LIN 96].
Cette méthode a été utilisée dans [LIN et RISCH 97] pour une application de navigation de ter-
rain. Un avion se localise en comparant l'altitude du terrain (qu’il saisit) avec la carte d'altitude
du terrain embarquée dans l'avion. En volant, l'avion mesure l'altitude du terrain qu’il survole
par un capteur. Ces valeurs mesurées donnent une trajectoire de l'altitude. La succession des al-
titudes mesurées sont comparées aux celles de la carte pour trouver la position de l'avion. Sans
index, la procédure de comparaison doit parcourir séquentiellement toute la carte. L’IP-index
Chapitre 3. Etat de l’art
48
est donc utilisé pour trouver les zones où l'altitude est entre (h-10, h+10), où h est l'altitude
donnée et 10 est l'erreur possible dans la mesure.
3.1.2.1 IP-index
L’IP-index est une méthode d'indexation par valeurs pour de grandes séquences de temps (pour
les requêtes telles que "Quand la valeur est égale à v' ?"). De nombreuses applications des sé-
quences de temps demandent de voir les séquences comme continues (par interpolations)
comme par exemple dans le cas de la température d'une patiente. Dans la Figure 13, les points
s1, s2, s3, et s4 représentent les températures mesurées. Ces points sont vus comme continus par
le biais des segments reliant les points consécutifs. En effet, si on trouve les segments qui cou-
pent la droite définie par la fonction v = v’, les points temporels de la réponse peuvent être cal-
culés (par interpolation). L’IP-index extrait donc les segments qui chevauchent la valeur de la
requête v'.
Figure 13. IP-index.
Lorsqu'on projette les segments des points consécutifs sur l'axe v, on peut obtenir les
intervalles [kj, kj+1[ qui ne se chevauchent pas, où chaque ki est une valeur distincte sur v (voir
k1 ,.., k4 dans la Figure 13). L’IP-index associe chaque intervalle [kj , kj+1[ aux segments qui le
chevauchent. Chaque segment peut être identifié par un point de début (ex. le segment composé
de deux points [s1, s2] est identifié par s1). Aussi chaque intervalle [kj , kj+1[ peut être identifié
par le point de début kj. L’IP-index utilise donc si ( kj ) pour représenter le segment [si, si+1]
(l'intervalle [kj , kj+1[). Nous pouvons extraire les éléments de l’IP-index sous la forme de [ kj,
<s> ], où kj est un intervalle et <s> est la liste des segments chevauchant kj. Dans la Figure 13, [
Elements de IP-index
[ k1 , <S1, S2> ]
[ k2 , <S2> ]
[ k3 , <S2, S3 > ]
[ k4 , nil ]
s1
s4
s3
s2
v
t
k4
k3
k2
k1
Chapitre 3. Etat de l’art
49
k3, <s2, s3> ] représente l'intervalle [k3, k4[ chevauché par les segments [s2, s3] et [s3, s4]. L’IP-
index peut utiliser un B-tree pour indexer des éléments, en utilisant ki comme clé.
Pour traiter la requête " Quand la valeur est-elle égale à v' ?", une recherche dans le B-
tree est exécutée pour trouver l'élément de l’IP-index dont la clé est km , avec km = max{kj | kj ≤
v' }. Ensuite, une méthode d'interpolation est exécutée sur la liste des segments de km.
3.1.2.2 Comment utiliser l’IP-index dans cette application ?
L’IP-index est utilisé pour trouver des zones correspondant à l'altitude donnée par une carte
d'altitude. La carte d'altitude est stockée sous forme de maillage de grilles régulières (une alti-
tude mesurée sur le point central de chaque grille, voir la Figure 14). Puisque l’IP-index est
conçu pour les séquences à 1 dimension, il ne peut pas être appliqué directement à la carte (à
deux dimensions). [LIN et RISCH 97] considère chaque ligne du maillage de la carte comme
une séquence continue du temps (voir la Figure 14). Ainsi, un IP-index est construit pour cha-
que ligne. La recherche relative à une requête est effectuée pour chaque IP-index.
Figure 14. Transformation entre la carte et des séquences de temps.
3.1.2.3 Conclusion
L'application utilisant les IP-index ne respecte que la continuité des altitudes sur l'axe
des X en considérant chaque ligne comme une séquence continue. En pratique, les altitudes sont
aussi continues sur l'axe Y, dans la direction diagonale, etc. Ainsi, on ne peut pas utiliser des IP-
index comme dans l’application pour les données continus multidimensionnelles (ex. terrain)
h11 h12 h1n
h21 h22 h2n
hm1 hm2 hmn
la carte (m*n)
{h11 , h12 ,………….. , h1n}
{h21 , h22 , ………….. , h2n}
{hm1 , hm2 ,………….. , hmn}
les séquences
* hij : l'altitude de terrain dans sur le centre de la grille (i,j)
Chapitre 3. Etat de l’art
50
car ils ne peuvent pas traiter la continuité totale des données (c’est-à-dire les données des
champs continus).
L’IP-index utilise les caractéristiques spéciales des séquences de temps, par exemple
les points mesurés dans une séquences du temps sont ordonnées mais ce n'est pas le cas des
donnée de champs qui sont multidimensionnelles. Il est donc difficile d'étendre l’IP-index aux
données de type champs.
3.2 Méthode d'indexation des données intervalles
Comme nous l'avons vu, dans le cadre du traitement des requêtes par valeurs, nous avons besoin
d'une méthode d'indexation pour indexer des intervalles. Il existe déjà de nombreux travaux sur
les méthodes d'indexation pour des données intervalles, surtout dans le domaine de Base de
Données Temporelles (TDB : Temporal DataBase) [BERTINO et al. 97] [SALZBERG et TSO-
TRAS 97]. Nous utilisons une des méthodes existantes pour l'indexation des intervalles. Il est
alors nécessaire de choisir une bonne méthode parmi les méthodes existantes. Il faut pour cela,
prendre en compte les caractéristiques des données intervalles dans les BD de champs. Dans
cette section, nous proposons un état de l'art sur les méthodes existantes, et nous choisissons
une méthode pour l'indexation des intervalles dans les BD de champs.
Dans une TDB, les évolutions des objets peuvent être maintenues (ce genre de TDB est
appelée BD historique, HDB Historical DataBase). Dans une TDB, un objet peut avoir plusieurs
versions. Chaque version est associée à un intervalle de temps [Ts, Te]. Ainsi, un objet est valide
pendant les intervalles de temps associés. C'est la raison pour laquelle ces intervalles de temps
sont appelés aussi les intervalles de temps valides.
Les méthodes d'indexation pour des intervalles de temps dans les TDB sont utilisées
pour extraire toutes les versions d’objets correspondant à un intervalle donné. Une version va-
lide signifie que son intervalle de temps intersecte l'intervalle donné de la requête [NASCI-
MENTO et al. 96] [BERTINO et al. 97].
Plusieurs classifications des méthodes existantes sont possibles. Selon [BERTINO et
al. 97], la plupart des méthodes d'indexation temporelles proposées jusqu'à maintenant sont
Chapitre 3. Etat de l’art
51
principalement basées sur le B-tree (ou sa variante le B+-tree) ou sur les index spatiaux comme
le R-tree [GUTTMAN 84]. [BERTINO et al. 97] classifie donc les méthodes existantes selon
l'index sur lequel elles reposent :
- Méthodes d'indexation basées sur les B-trees
- Méthodes d'indexation basées sur les R-trees
Examinons - les en détail.
3.2.1 Méthodes d'indexation basées sur les B-trees
Il existe de nombreuses méthodes basées sur le B-tree. Les méthodes les plus connues et les
plus prometteuses dans cette catégorie sont les suivantes : Time Index [ELMASRI et al. 90],
Append-Only tree (AP-tree) [GUNADHI et SEGEV 93], Snapshot Index [TSOTRAS et KAN-
GELARIS 95], Interval B-tree [ANG and TAN 95] et MAP21 [NASCIMENTO et al. 95]. Time-
Split B-tree (TSB tree) [LOMET et SALZBERG 89] est aussi une méthode d'indexation tempo-
relle connue mais elle ne peut pas être utilisée pour des données intervalles [BERTINO et al.
97]. Nous éliminons donc la possibilité d'utiliser le Time Split B-tree.
Certaines méthodes reposent sur l'hypothèse que le minimum d'un intervalle à insérer
dans l'index doit être plus élevé que le maximum de l'intervalle inséré précédemment (insertion
des intervalles dans un ordre croissant - "monotic appending with incremental time values"). Le
AP-tree et le Snapshot Index font partie de cette catégorie [NASCIMENTO et al. 96] [BERTI-
NO et al. 97]. En revanche, les intervalles dans les BD de champs ne satisfont pas cette hypo-
thèse car les intervalles dans les champs ne sont pas des intervalles de temps, et ne sont pas for-
cément insérés de manière croissante. Ainsi, nous éliminons également la possibilité d'utiliser
l'AP-tree et le Snapshot Index.
Dans la suite, nous présentons les autres méthodes et discutons aussi leurs avantages et
leurs inconvénients afin de choisir la meilleure méthode pour indexer des intervalles des valeurs
dans les champs.
Chapitre 3. Etat de l’art
52
3.2.1.1 Time-Index
L'idée du Time index est de maintenir un ensemble de points d'index ordonnés (indexing points)
sur l'axe du temps [ELMASRI et al. 90]. Un point d'index est soit un point du temps où un nou-
vel intervalle commence soit un point du temps qui suit immédiatement un intervalle terminé.
Le concept des points d'index est illustré dans la Figure 15 pour certaines données temporelles.
Dans la Figure 15, les points d'index sont donc BP = { 0, 2, 4, 6, 8, 10, 11, 12, now }. Le point
du temps 6 est un point d'index car e21 s'est terminé au point 5. Ces points sont indexés par un
B+-tree (voir Figure 16).
Figure 15. Intervalles des versions d'objets [ELMASRI et al. 90].
Figure 16. Time-index pour des données de la Figure 15 [ELMASRI et al. 90].
Chapitre 3. Etat de l’art
53
Chaque élément d'une feuille du B+-tree possède un point d'index ti et un pointeur sur
l'ensemble (bucket) de tous les identifiants (Id) dont les versions ont des intervalles de temps
contenant l'intervalle [ti, ti+ - 1] (ti
+ est le point d'index suivant ti dans BP) comme dans la
Figure 16. Un long intervalle apparaît plusieurs fois dans les buckets (ex. e12, e32). Pour réduire
cette duplication, un schéma croissant (incrémental) est utilisé. Dans cette méthode, il n'y a que
le premier élément de chaque feuille qui peut posséder l'ensemble de tous les Ids. Les autres
éléments contiennent seulement le changement des intervalles (comme le montre la Figure 17).
Dans la Figure 17, les signes "+" (resp. "-") représentent l'ajout (resp. la suppression) d'un in-
tervalle de temps par rapport à l'ensemble précédent. De nombreuses duplications sont réduites
mais il existe toujours des duplications pour les longs intervalles.
Figure 17. Stocker le changement des intervalles dans le Time-index.
Pour extraire les Ids dont les intervalles chevauchent l'intervalle de la requête, le buc-
ket complet du premier élément de chaque feuille concernée par la requête doit être lu pour re-
construire la liste des intervalles de la réponse (en considérant les changements des intervalles).
Un Time Index est efficace pour des intervalles de temps courts. En revanche, pour les
longs intervalles (supposons que tous les intervalles commencent à un moment différent et se
terminent à now), les duplications des données peuvent être importantes et dégradent la perfor-
mance de l'index [BERTINO et al. 97] en augmentant la taille de l'index comparativement aux
autres méthodes comme Interval B-tree [ANG and TAN 95], MAP 21 [NASCIMENTO et al.
95].
Chapitre 3. Etat de l’art
54
3.2.1.2 Interval B-tree
L'Interval B-tree est conçu pour améliorer la performance du Time-Index en terme de complexi-
té de temps et d'espace [ANG and TAN 95]. Un Interval B-tree se compose de trois structures:
structure primaire, secondaire et tertiaire.
La structure primaire est un B+-tree pour indexer les bornes des intervalles. Au départ,
il y a un seul nœud vide. Les intervalles sont insérés dans ce nœud. Soit un ensemble de n va-
leurs, on appelle valeur du milieu, le ⎡n/2⎤ ème élément de cet ensemble. Lors du débordement
de capacité de ce nœud, un nœud père est créé. Les bornes des intervalles insérés dans le nœud
sont triés et la valeur m du milieu de ces bornes est stockée dans le nœud père créé (appelé
nœud index). Les intervalles seront stockés dans les deux nœuds ; les intervalles plus grands
que le m seront dans le nœud de droite, et ceux plus petits que m seront dans le nœud de gauche
(comme dans un B+-tree). Les intervalles contenant m sont stockés dans une structure se-
condaire attachée à m. La Figure 18.a montre l'Interval B+-tree après l'insertion des intervalles
e11, e12, e21 de la Figure 15. Supposons que la capacité du nœud est 2. Lors de l'insertion de e21,
le nœud initial est plein. La valeur m est égale à 6 c'est-à-dire la valeur du milieu des bornes
triées {0, 4, 6, now}. m est stocké dans le nœud index. Les intervalles e12, e21 sont stockés dans
la structure secondaire attachée à la valeur 6 car ils contiennent la valeur 6. e11 est stocké dans
le nœud de gauche comme le montre la Figure 18.a.
Figure 18. a) Interval B+-tree après l'insertion de e11, e12, e21 de la Figure 15. b) Interval B+-tree
après l'insertion de toutes les versions et d'un intervalle e81 [5, 12].
6
e11[0, 4]
e12 [0, now]
e21 [0, 6]
feuille àgauche
Nœud index
Structuresecondairedu 6
feuille àdroite
6
e11[0, 4]
e41 [2, 4]
e12 [0, now]
e21 [0, 6]
e31 [0, 10]
e81 [5, 12]
e42 [8, now]
e32 [8, 10]
e61 [11, now]
e71 [12, now]
e42 [8, now]
e32 [8,10]
e51 [10, now]
10
Structure tertiaire
Structureprimaire
Structuresecondaire
a. b.
Chapitre 3. Etat de l’art
55
Toutes les valeurs dans les nœuds index sont maintenues dans un arbre binaire, appelé
structure tertiaire. Lors d'une insertion, si l'intervalle à insérer contient plusieurs valeurs dans
les nœuds index, l'intervalle sera stocké dans la structure secondaire attachée à la première va-
leur rencontrée dans l'arbre binaire. La Figure 18.b illustre l'Interval B+-tree après l'insertion de
toutes les versions de la Figure 15. Les valeurs 6 et 10 sont donc maintenues dans un arbre bi-
naire. La valeur de la racine de cet arbre est 6. Soit un intervalle à insérer e81[5, 12]. Cet inter-
valle sera stocké dans la structure secondaire attachée à la valeur 6 même si e81 contient les va-
leurs 6 et 10 (car cet intervalle rencontre d'abord la valeur 6 dans l'arbre binaire). Cela permet
d'éviter la duplication du stockage des longs intervalles.
En revanche, un Interval B-tree utilise des structures très compliquées. En outre l'effi-
cacité de l'index dépend de la distribution des données et des valeurs choisies pour m c'est-à-
dire la valeur dans les nœuds index. Un mauvais choix pourrait faire stocker un nombre impor-
tant d'intervalles dans les structures secondaires. Cela entraîne un B+-tree de faible taille et des
structures secondaires de taille importante, ce qui donne de mauvaises performances [BERTINO
et al. 97].
3.2.1.3 MAP21
L'idée principale est de transformer chaque intervalle en un point dans un espace à 1 dimension
et d'indexer par un B+-tree ces points transformés. Un intervalle [Ts, Te] est donc transformé en
un point z = Ts*10s + Te, où s est le nombre maximum de chiffres pour transformer tous les in-
tervalles en points [NASCIMENTO et al. 95]. Un avantage de cette méthode est la facilité de
maintenance de l'index (insertion et suppression) [SALZBERG et TSOTRAS 97]. La Figure 19
montre un exemple de transformation des intervalles avec s = 2.
Figure 19. Transformation des intervalles de MAP21.
Intervalles originaux
Points transformés
Chapitre 3. Etat de l’art
56
Cette méthode suppose que la longueur maximale ∆ des intervalles est connue. Pour
extraire les intervalles chevauchant l'intervalle de la requête r = [Ts, Te], il faut déterminer
deux points z1 et z2 délimitant tous les points qui pourraient satisfaire la requête : z1 = ⎡ ⎡(Ts -
∆)*10s + Ts⎤ ⎤ et z2 = ⎣ ⎣Te*10s + (Te + ∆)⎦ ⎦ avec z1 <= z2 (pour plus de détails voir [NAS-
CIMENTO et al. 95]). D'abord une recherche de z1 dans le B+-tree est effectuée. Ensuite, on
parcourt séquentiellement dans le B+-tree les points transformés de z1 à z2. On vérifie si l'in-
tervalle original de chaque point parcouru intersecte ou non r. Il peut arriver que de nombreux
intervalles qui n'intersectent pas r soient rencontrés durant le parcours entre z1 et z2, ce qui
donne de mauvaises performances [SALZBERG et TSOTRAS 97]. Un autre inconvénient est
que les bornes des intervalles doivent être des valeurs entières, ce qui demande une conversion
des intervalles des champs (qui ne sont, à la base, pas forcement des entiers).
3.2.2 Méthodes d'indexation basées sur les R-trees
La dimension temporelle peut être vue comme une dimension d'un espace multidimensionnel.
Elle peut donc être indexée par une méthode existante d'indexation spatiale. Nous présentons
comment le R-tree [GUTTMAN 84] (ou ses variantes comme le R+-tree [SELLIS et al. 87] ou
le R*-tree [BECKMANN et al. 90]) peuvent être utilisés pour indexer des intervalles. En effet,
il existe de nombreuses méthodes d'indexation spatiale [GAEDE et GUNTHER 95]. Nous utili-
sons la famille des R-trees car elle est reconnue comme une des méthodes d'indexation spatiales
les plus performantes [GAEDE et GUNTHER 95], et elle est aussi utilisée dans de nombreuses
méthodes d'indexation temporelle [SALZBERG et TSOTRAS 97] [FALOUTSOS 96].
Il existe deux façons d'utiliser un R-tree pour indexer des intervalles de temps. Le R-
tree peut être utilisé comme un R-tree à 1 dimension (1-D R-tree) ou comme un R-tree à 2 di-
mensions (2-D R-tree). Dans un premier temps, nous présentons le R-tree brièvement. Ensuite,
nous présentons les méthodes d'indexation des intervalles basées sur les R-trees.
Chapitre 3. Etat de l’art
57
3.2.2.1 R-tree
La méthode R-tree est une extension multidimensionnelle de B-tree, et utilise des Rectangles
Englobants Minimaux (MBR, Minimum Bounding Rectangle). Supposons un espace à 2 dimen-
sions. Chaque objet spatial est encadré par un MBR, les MBRs proches étant regroupés dans un
autre MBR, et ceci de manière récursive (voir la Figure 20).
Figure 20. Exemple de R-tree.
Un élément d'un nœud intermédiaire est noté (p, RECT) où p représente le pointeur sur
le nœud fils de l'élément et RECT est le MBR de l'élément. Un élément d'une feuille est noté
(oid, RECT) où oid est l'identifiant de l'objet et RECT est son MBR.
Pour trouver les objets intersectant la zone de la requête, l'algorithme descend dans
l'arbre depuis la racine (on l'appelle l'algorithme 'Intersect'). L'algorithme traverse récursive-
ment les sous-arbres ayant leurs MBRs intersectant la zone de la requête. Au niveau des feuil-
les, chaque objet ayant un MBR intersectant la zone de la requête sera extrait afin de tester s'il
intersecte la zone de requête (voir la Figure 20).
A B C
D E F GN
M M
D
G
I
K
E
F
HJ
H I J K L M N
B
C
A
la zone dela requête
Chapitre 3. Etat de l’art
58
3.2.2.2 1-D R-tree
Pour utiliser un 1-D R-tree, les intervalles de temps [Ts, Te] sont traités comme des segments
de lignes dans un espace à 1 dimension. En effet, dans les TDB un objet temporel possède une
clé (c'est-à-dire un identifiant - les versions d'un même objet possèdent la même clé). Pour in-
dexer les intervalles de temps et les clés des objets en même temps, on utilise le 2-D R-tree plu-
tôt que le 1-D R-tree. Dans ce cas, les intervalles sont considérés comme des segments de ligne
sur un premier axe et les clés sont représentées sur un second axe. En revanche, pour l'indexa-
tion par valeurs dans les champs continus, nous avons seulement besoin d'indexer les interval-
les. Nous utilisons donc un 1-D R-tree.
Pour extraire les intervalles qui chevauchent l'intervalle de la requête, il suffit d'exécu-
ter l'algorithme 'Intersect' dans le R-tree.
Il est connu que cette solution offre en moyenne de bonnes performances [SALZBERG
et TSOTRAS 97]. En revanche, il peut arriver que les longueurs des intervalles ne soient pas
très uniformes (par exemple, dans le cas d'une grande proportion de "courts intervalles" et une
petite proportion de "longs" intervalles). Dans ce cas, les longs intervalles causent des chevau-
chements entre MBRs, lors de l'utilisation d'un 1-D R-tree. Ces chevauchements entre MBRs
peuvent devenir très importants et dégrader les performances de la recherche (comme observé
dans [KOLOVSON et STONEBRAKER 91]). En effet, ces chevauchements entraînent la multi-
plication du nombre des nœuds à tester et dégradent les performances de la recherche dans le R-
trees [SALZBERG et TSOTRAS 97]. Afin de traiter ce problème, la méthode Segment R-tree
(SR-tree) a été proposée.
SR-tree
Contrairement au R-tree, le SR-tree stocke les intervalles non seulement dans les feuilles mais
aussi dans les nœuds intermédiaires [KOLOVSON et STONEBRAKER 91]. Un intervalle I est
stocké dans un nœud intermédiaire N si I couvre au moins un MBR de ses nœuds fils (comme I1
dans la Figure 21). Si un intervalle couvre un MBR d'un nœud et dépasse le MBR de son nœud
père, il sera divisé en partie couvrante et partie restante. Et les deux parties sont stockées dans
différents endroits (comme I2 dans la Figure 21). Les longs intervalles seront donc placés dans
Chapitre 3. Etat de l’art
59
des nœuds plus hauts que dans le cas du R-tree. Ainsi le SR-tree diminue les chevauchements
entre les MBRs.
Figure 21. SR-tree.
L'apparition d'un grand nombre d'intervalles couvrant les nœuds diminue le nombre
des nœuds fils car ces intervalles prennent la place destinée à l'origine aux nœuds fils (ex. poin-
teurs sur les nœuds fils, etc.)
3.2.2.3 2-D R-tree avec transformation
Pour indexer les intervalles de temps par un 2-D R-tree, les intervalles [Ts, Te] sont transformés
en points dans un espace à 2 dimensions [FALOUTSOS 96] [BERTINO et al. 97] [SALZBERG
et TSOTRAS 97]. Les points transformés sont donc indexés dans un 2-D R-tree. La Figure 22.b
illustre les points transformés à partir des intervalles de la Figure 22.a. Les MBRs (représentés
par les rectangles en pointillé) dans le 2-D R-tree sont aussi illustrés dans la Figure 22.b.
racineA
C
DB
I2 I1
racine I1 couvrant C
A C
la parti de I2couvrant B DB
la parti de I2restante
Chapitre 3. Etat de l’art
60
Figure 22. 2-D R-tree avec transformation.
En effet, dans les TDB, les intervalles ayant comme attribut (clé, Ts, Te) peuvent être
transformés en points à 3 dimensions. Les points peuvent alors être indexés dans un 3-D R-tree.
Les intervalles et les clés sont ainsi indexés en même temps. Puisque que nous nous intéressons
seulement à l'indexation des intervalles, nous utilisons un 2-D R-tree.
Notons que tous les points transformés se retrouvent dans la zone où l'axe Te ≥ Ts car
la fin d'un intervalle est toujours supérieure ou égale à son début.
Le traitement des requêtes s'effectue dans l'espace transformé. Soit l'intervalle de la
requête QT = [QTs, QTe]. Pour extraire les intervalles qui chevauchent QT, il faut tester si
chaque intervalle I satisfait la condition suivante : (début de I) ≤ QTe et (fin de I) ≥ QTs. Dans
la Figure 23, cette condition implique la recherche des points contenus dans la zone colorée de
la requête dans l'espace transformé. Cela revient à exécuter l'algorithme 'Intersect' avec la zone
de la requête dans le R*-tree construit à partir des points transformés.
En effet, la zone de la requête transformée est un polygone complexe car elle prend en
compte que tous les points se retrouvent dans la zone où l'axe Te ≥ Ts. Pour simplifier, nous
transformons l'intervalle de la requête en un rectangle donnant les mêmes résultats comme indi-
qué ci-dessous :
Trans_Inter ([QTs, QTe]) = (0, QTs, QTe, Tmax),
Te
0 1 2 3 4 5 6 7 8 temps
I1
I4
I6
a. Dimension originelle des intervalles de temps b. Espace transformé
Ts = Te
I2I6
I4
I1
I5
I3
I5
I3I2
0 1 2 3 4 5 6 7 8 Ts
8
7
6
5
4
3
2
1
I7
I7
Chapitre 3. Etat de l’art
61
où Trans_Inter est la fonction de transformation d'un intervalle de la requête en un rectangle. Le
rectangle transformé est représenté par les deux points extrêmes du rectangle (Tslow, Telow, Tshigh,
Tehigh) (voir la Figure 23). Tmax est une valeur maximale possible dans le champ.
La Figure 23 illustre un exemple du traitement de requêtes avec l'intervalle de requête
[2.5, 4.5] en utilisant les points transformés de la Figure 22. L'intervalle [2.5, 4.5] est transfor-
mé en un rectangle (0, 2.5, 4.5, Tmax). Pour indexer ces points transformés, nous exécutons
donc l'algorithme 'Intersect' dans le 2-D R-tree avec le rectangle de la requête transformée.
Figure 23. Requêtes dans l'espace transformé.
Comme nous l'avons présenté (dans la partie dédiée au 1-D R-tree), dans le cas du 1-D
R-tree, les longs intervalles dégradent les performances de la recherche. Ceci est dû aux che-
vauchements des MBRs. Cette approche de la transformation est efficace pour traiter ces longs
intervalles. En effet, les longs intervalles sont regroupés s'ils sont proches. Les courts interval-
les sont aussi regroupés suivant le même critère de proximité [SALZBERG et TSOTRAS 97].
Les MBRs se chevauchent moins que dans un 1-D R-tree. La Figure 24 illustre la comparaison
du 1-D R-tree et du 2-D R-tree (avec transformation) selon leurs chevauchements de MBRs.
Comme le montre la Figure 24, un 2-D R-tree avec transformation peut diminuer les chevau-
chements de MBRs existant dans un 1-D R-tree. Notons que dans la Figure 24.a, les MBRs dans
le 1-D R-tree sont des segments sur la dimension du temps.
* intervalle de la requête[QTs, QTe] = [2.5, 4.5]
QTsQTe
* rectangle de la requête transformé :(0, QTs, QTe,Tmax) = (0,2.5, 4.5, Tmax)
(Tslow, Telow) √
√ (Tshigh, Tehigh)
la zone de larequête transformé
Te
Ts = Te
I2I6
I4
I1
I5
I3
0 1 2 3 4 5 6 7 8 Ts
8
7
6
5
4
3
2
1I7
Tmax
Chapitre 3. Etat de l’art
62
Figure 24. Comparaison entre un 1-D R-tree et un 2-D R-tree avec transformation.
3.2.3 Conclusion
Nous avons présenté les méthodes d'indexation existantes pour des données intervalles (surtout
dans le domaine des TDB). Dans cette sous-section, nous allons choisir une méthode pour in-
dexer des intervalles de champs. Les méthodes que nous avons présentés sont : Time Index, In-
terval B-tree, MAP21, 1-D R-tree, SR-tree, 2-D R-tree avec transformation. Parmi ces métho-
des, nous choisissons le 2-D R-tree avec transformation pour les raisons suivantes :
a) Il fallait choisir une méthode telle que le B-tree ou le R-tree c'est-à-dire une méthode
pouvant être aussi utilisée pour d'autres types de requêtes dans les BD de champs conti-
nus (par exemple, le R-tree peut être utilisé pour les requêtes conventionnelles basé sur
une condition spatiale - voir section 2.1). En effet, nous souhaitons éviter de gérer si-
multanément plusieurs méthodes d'indexation. Les deux méthodes citées ci-dessus sont
reconnues comme étant les plus efficaces, respectivement, pour l'indexation alphanumé-
rique et pour l'indexation spatiale. De plus, elles ont déjà été implémentées dans plu-
sieurs SGBD. Nous éliminons Interval B-tree et SR-tree car ils n'utilisent pas le B-tree
ou le R-tree tel quel. De plus, l'Interval B-tree utilise une structure plus complexe que
les autres.
0 1 2 3 4 5 6 7 8 temps
I1
I5
I3 I4
I2
b. 2-D R-tree avec transformation
Te Ts = Te
I5
I2
I4I3
0 1 2 3 4 5 6 7 8 Ts
8
7
6
5
4
3
2
1
I1
chevauchementde deux MBRs
a. 1-D R-tree
MBRs
MBRs
Chapitre 3. Etat de l’art
63
b) Le Time Index n'est pas efficace à cause des duplications des données pour les longs
intervalles. Le 1-D R-tree n'est pas non plus très efficace à cause des chevauchements
des MBRs pour les longs intervalles. Il est possible que certains intervalles de champs
soient beaucoup plus longs que d'autres. Il fallait ainsi prendre en compte cet aspect. Les
méthodes efficaces pour les longs intervalles sont le SR-tree et le 2-D R-tree avec trans-
formation. Puisque nous avons éliminé le SR-tree, nous choisissons finalement le 2-D R-
tree pour indexer les intervalles de champs continus.
Dans le contexte de l'indexation des intervalles dans les TDB, la famille des R-trees
possède des limites. En effet, les intervalles de temps peuvent avoir les bornes fin non définies,
(représentées par la valeur "now") car le temps est un espace en continuelle expansion. En re-
vanche, le R-tree (et aussi la plupart des autres méthodes d'indexation spatiale) considèrent que
l'espace est délimité. Un R-tree ne peut donc pas traiter des intervalles ayant les bornes fin non
définies [BERTINO et al. 97]. En revanche, ce n'est pas le cas pour les intervalles des champs
continus car les valeurs qui déterminent les intervalles sont bien des valeurs définies. Ainsi
cette limite du R-tree dans les TDB ne pose pas de problème pour indexer des intervalles de
champs. Nous utilisons donc un 2-D R-tree.
Note) [SELLIS et al. 87] et [BECKMANN et al. 90] ont proposé des variantes du R-tree, (res-
pectivement le R+-tree et le R*-tree). Dans un R+-tree, les MBRs ne doivent pas se chevaucher
pour que les chemins d'accès dans un R-tree ne soient pas multipliés. Si un MBR chevauche un
autre MBR, on le découpe en deux nouveaux MBRs de façon à éviter les chevauchements. La
différence entre le R-tree et le R*-tree est la suivante. Le R*-tree essaie de construire des MBRs
plus efficaces en prenant en compte de plusieurs critères comme par exemple, minimiser la zone
couverte par les MBRs, minimiser la superposition entre les MBRs, etc.
Dans la littérature, il est bien montré que le R*-tree fonctionne mieux que le R-tree et
le R+-tree [BECKMANN et al. 90] [THEODORIDIS et PAPADIAS 95] [KIM et al. 95]. Ainsi,
nous utilisons le R*-tree plutôt que le R-tree original. Nous allons donc considérer le 2-D R*-
tree avec transformation pour l'indexation des intervalles. La structure et les algorithmes de trai-
tements des requêtes du R-tree et du R*-tree sont identiques. Donc les explications ci-dessus
concernant le R-tree sont aussi appliquées au R*-tree.
Chapitre 3. Etat de l’art
64
3.3 Conclusion
Dans ce chapitre, nous avons présenté dans un premier temps, l'état de l'art des travaux sur les
méthodes d’indexation par valeurs dans plusieurs applications de champs continus. Les travaux
présentés nous ont conduit à développer une autre méthode d’indexation car ils ne sont pas
adaptés à nos objectifs : 1) l’indexation par valeurs dans une base de données de grand volume
2) la prise en compte de la continuité des données.
Dans un deuxième temps, nous avons étudié des méthodes d’indexation existantes pour
des données intervalles. Ces études proviennent de la réflexion sur la nécessité d’une méthode
d’indexation des intervalles. Par exemple, pour l’indexation par valeurs, la méthode la plus
simple et intuitive est d’indexer l’intervalle de chaque cellule (méthode I-ALL qui va être pré-
sentée dans le chapitre suivant) par une méthode existante. Une méthode de type 2-D R*-tree
avec transformation a été choisie pour indexer les intervalles dans un champ continu. Ainsi,
nous allons appliquer cette méthode à chaque fois que nous en avons besoin.
Dans le chapitre suivant, nous abordons le développement des méthodes d’indexation
par valeurs.
Chapitre 4. Indexation par valeurs
66
4. Indexation par valeurs
Dans ce chapitre, nous proposons de nouvelles méthodes d'indexation par valeurs reposant sur
le concept de sous-champs. Ce nouveau concept est basé sur l’exploitation de la caractéristique
principale des données champs, à savoir la continuité dans l’espace et parfois dans le temps.
Nous définissons le concept de sous-champ et nous décrivons les procédures de traite-
ment de requêtes dans les bases de données champs. L’intérêt de l’utilisation des sous-champs
est mis en évidence pour l’indexation par valeur.
Ensuite, nous présenterons deux méthodes d’indexation basées sur le concept de sous-
champs qui se distinguent par une implémentation différente des sous-champs.
4.1 Méthode simple : Méthode I-All
Comme mentionné dans le chapitre précédent, répondre aux requêtes par valeurs re-
vient à trouver un moyen afin d'indexer des cellules dont les intervalles chevauchent la valeur
des requêtes.
Considérons une base de données stockant un champ continu. Nous pouvons associer
un intervalle à chaque cellule. Les bornes d'un intervalle sont les valeurs minimale et maximale
de l'ensemble de toutes les valeurs possibles à l'intérieur de la cellule associée. L'intervalle
d'une cellule peut être déterminé par une fonction FI définie dans chaque application en fonc-
tion du modèle utilisé (voir la section 2.2.1).
Une méthode simple et intuitive consiste à indexer tous les intervalles associés aux cel-
lules couvrant l'espace du champ. Nous avons choisi une méthode 2-D R*tree avec transforma-
tion pour indexer des intervalles (voir section 3.2.3). Tous les intervalles sont donc transformés
Chapitre 4. Indexation par valeurs
67
en points à 2 dimensions. Un 2-D R*-tree est utilisé pour indexer ces points. Nous appelons
cette méthode la méthode I-All, où I représente le terme Intervalle.
4.1.1 Structure des données
Un intervalle d'une cellule est formé de :
(obj_ptr, min, max),
où obj_ptr est un pointeur sur la cellule associée à l’intervalle à insérer et min et max sont des
bornes de l'intervalle de la cellule.
Nous transformons l'intervalle de chaque cellule en un point et insérons chaque point
transformé dans un 2-D R*-tree pour les indexer. La structure d'un 2-D R*-tree pour les points
transformés est de la forme :
Nœud intermédiaire : ptr, RECT …….. identique
Feuille : obj_ptr, RECT …… identique
où ptr est un pointeur sur le nœud fils et RECT représente un MBR ( RECT d'une feuille est un
MBR d'un point transformé à partir de l'intervalle d'une cellule).
Notons que le obj_ptr d'un intervalle est stocké dans une feuille de R*-tree. Ce poin-
teur est nécessaire pour extraire l'information d'une cellule (ex. les points-échantillons de la cel-
lule, etc.) pour l’interpolation.
4.1.2 Procédure de recherche
Considérons w comme la valeur d’une requête. Le w peut être soit une valeur soit un intervalle.
Pour la généralisation, nous considérons w comme un intervalle [min, max] car une valeur uni-
que est le cas où min = max.
Pour trouver les régions où la valeur est égale à w, il faut trouver les cellules dont les
intervalles chevauchent w. Ainsi, w sera d'abord transformé en un rectangle de la requête rw par
la fonction Trans_Inter(w) (voir la section 3.2.2.3). Ensuite, il suffit d'exécuter l'algorithme 'In-
tersect' dans le R*-tree construit par les points transformés avec la condition r pour trouver des
Chapitre 4. Indexation par valeurs
68
points contenu dans rw , ce qui donne en effet les intervalles chevauchant w. La procédure pour
le traitement des requêtes par valeurs avec l'indexation I-All est présentée ci-dessous.
Algorithme 1. Traitement des requêtes par la méthode d'indexation I-All.
La fonction Trans_Inter-1, qui est la fonction inverse de Trans_Inter, retourne l'inter-
valle d'origine de la requête à partir d'un rectangle. La différence avec l'algorithme originel 'In-
tersect' d'un R*-tree est d'invoquer la procédure Estimer (extraire une cellule désignée et exécu-
ter l'interpolation) pour les intervalles intersectant la valeur de la requête. En effet, les cellules
associées à ces intervalles contiennent les régions de réponse. Nous appelons ces cellules conte-
nant la réponse, des cellules candidates. La réponse exacte doit être calculée dans la procédure
Estimer.
4.1.3 Problèmes
Dans les bases de données de champs, on trouve, pour des questions de précision, de gros vo-
lume de cellules. Si on utilise une méthode d'indexation efficace déjà existante comme le R*-
Tree est un avantage indéniable, la méthode I-All pose deux problèmes :
Procédure Intersect(nœud n du R*-tree, rectangle de la requête rw) : // Rechercher les nœuds intermédiaires Si n est un nœud intermédiaire alors pour chaque élément (ptr, RECT) de n dont le RECT intersecte rw Intersect(fils, rw), où fils est le nœud pointé par ptr
// Rechercher les feuilles Sinon pour chaque élément (obj_ptr, RECT) dont le RECT intersecte rw
Estimer(obj_ptr, Trans_Inter-1(rw)) FinProcédure
Procédure Estimer(pointeur obj_ptr, valeur de la requête w)
Extraire la cellule pointé par obj_ptr et estimer les régions correspondant à w dansla cellule extraite
FinProcédure L'algorithme commence par l'appel suivant : Rechercher (Racine du R*-tree, rectangle de la requête transformé rw)
Chapitre 4. Indexation par valeurs
69
Problème 1). La taille du fichier d'index (R*-Tree) est importante et le temps de la re-
cherche dans la structure du R*-Tree devient long à cause d'un grand nombre de données
(intervalles) à traiter. Ceci n'est pas efficace à la fois en terme d'espace et en terme de
vitesse de recherche. En outre, la vitesse de recherche est d’autant plus ralentie que les
intervalles similaires se chevauchent, ce qui est une caractéristique courante des données
de types champs continus.
Problème 2). Dans l'étape Estimation, l'extraction des cellules candidates utilisées pour
interpoler la réponse exacte se fait cellule par cellule. Autrement dit, un nouvel accès au disque
dur est nécessaire pour l'extraction de chaque cellule. Parfois, cela entraîne une performance
plus mauvaise que la méthode de Balayage Séquentiel comme l’illustre les figures dans le cha-
pitre 5 "Implémentation et performance"
Afin de résoudre les problèmes de la méthode I-All, nous proposons dans la section
suivante une nouvelle approche basée sur la continuité des données de champs. Ensuite, nous
présentons l’application de cette approche pour une indexation par valeurs.
4.2 Sous-champs
La continuité est une des caractéristiques importantes dans les données de champs continus. Par
continuité, des points proches spatialement dans un champ continu sont censés posséder des va-
leurs plus proches que s’ils sont éloignés [PARIENTE 94]. Cela signifie que des cellules voisi-
nes dans l’espace deviendront probablement des cellules candidates en même temps pour une
requête donnée.
Nous proposons ainsi de diviser un champ en plusieurs sous-champs [LAURINI et al.
99] [KANG et al. 99]. Un sous-champ est défini comme un sous-espace qui possèdent des va-
leurs similaires (proches). Puisque l’espace d’un champ est entièrement couvert par un ensem-
ble de cellules, la division de l'espace total du champs en plusieurs sous-champs peut être inter-
prétée comme une partition des cellules voisines (connectées) en plusieurs sous-champs.
Chapitre 4. Indexation par valeurs
70
4.2.1 Définition d’un sous-champ
Comme présenté plus haut, un sous-champ est un sous-espace homogène au niveau des valeurs.
Autrement dit, c’est un sous-espace dans lequel les valeurs sont proches.
Soit un champ F, le iéme sous-champ de F peut être défini par son intervalle comme
suit :
SFi = (id, Vmin,i, Vmax,i ),
où id est l'identifiant, Vmin,i et Vmax,i représentent respectivement le minimum et le maximum des
valeurs du sous-champ SFi.
Il est possible d’avoir d’autres types de valeurs que Vmin,i et Vmax,i pour d’autres types de
requêtes du champ, par exemple la moyenne des valeurs pour un sous-champ. Pour les requêtes
de valeurs visées par nos travaux, nous utilisons le minimum et le maximum comme définis ci-
dessus.
La Figure 25 montre l’exemple d’un champ à 2 dimensions découpé en sous-champs.
Le plan spatial XY est projeté sur l’axe unidimensionnel Espace V afin de simplifier le schéma.
Figure 25. Sous-champs dans un champ à 2 dimension.
Dans cette figure, un sous-champ est représenté par un rectangle. En fait, chaque rec-
tangle, c’est-à-dire chaque sous-champ, contient (ou chevauche pour le cas où juste une partie
d’une cellule fait partie d’un sous-champ) certaines cellules voisines dans toutes les dimensions
Valeur w
Espace v
sous-champs SF
champ F
Chapitre 4. Indexation par valeurs
71
du champ, donc dans la dimension des Valeurs w et aussi d’Espace v. Ces cellules contenues
dans les sous-champs ne sont pas représentées dans cette Figure afin de simplifier le schéma.
La largeur et la hauteur d’un rectangle représentent la forme de l’aire Ai et l’intervalle
des valeurs d’un sous-champ Fi. Notons que ces hauteurs ne sont pas très élevées car les valeurs
à l’intérieur d’un sous-champ sont proches les unes des autres.
Par ce fait, nous pouvons dire que l’un des critères sur la similarité des valeurs à l'inté-
rieur d'un sous-champ pourrait être défini par la taille de l'intervalle du sous-champ, c’est-à-
dire la différence entre les valeurs minimales et maximales parmi toutes les valeurs possibles à
l'intérieur du sous-champ.
Stockage des sous-champs
En ce qui concerne le stockage des données de cellules regroupées logiquement dans des sous-
champs, nous proposons aussi de rassembler « clusteriser » physiquement des cellules voisines
sur le disque dur. Les cellules voisines à l’intérieur d’un sous-champ sont alors stockées ensem-
ble afin d’éviter un trop grand nombre d’accès au disque dur lors de l’extraction des informa-
tions des cellules pour l’interpolation. Il s’agissait du problème pour la méthode I-All (voir la
section 4.1.3, problème 2). La raison est que les cellules dans un sous-champ sont censées être
proches et qu’elles seront accédées en même temps pour une requête donnée. En étant proches
sur le disque, les cellules à extraire pourront être obtenues par un seul accès sur le disque (ou
par un nombre faible d'accès).
Chapitre 4. Indexation par valeurs
72
4.2.2 Stratégies de traitement des requêtes basées sur l’approche des sous-champs
Nous utilisons les intervalles des sous-champs. L’intervalle d’un sous-champ peut être obtenu
par un simple calcul sur les intervalles des cellules contenues par le sous-champ car il contient
tous les intervalles de ses cellules.
Connaissant une requête par valeurs, nous déterminons d’abord les sous-champs pos-
sédant des intervalles chevauchant la valeur de la requête (Rappellons que la méthode I-All
cherche directement toutes les cellules dont les intervalles chevauchent la valeur de la requête).
En effet, il est évident que si une requête par valeurs chevauche l’intervalle d’une cellule à
l’intérieur d’un sous-champ alors elle doit aussi chevaucher l’intervalle du sous-champ.
Ensuite, les régions exactes répondant à la requête seront calculées par la fonction
d’interpolation sur les cellules à l’intérieur des sous-champs issus de l'étape précédente. Notons
que les cellules à interpoler ne contiennent pas forcément les régions résultats mais elles ont une
forte probabilité de les contenir.
Nous définissons la procédure de traitement de requêtes par valeurs basée sur les sous-
champs comme suit :
[Etape Filtrage] : rechercher les sous-champs dont les intervalles chevauchent la va-
leur de la requête w' .
[Etape Estimation] : extraire les cellules à l’intérieur des sous-champs issus de l’étape
Filtrage et estimer les régions exactes répondant à la requête donnée par une méthode d'interpo-
lation à partir des cellules extraites.
L’étape Filtrage ne sélectionne que les sous-champs contenant des cellules candidates
potentielles, c’est à dire ceux qui satisfont probablement à la condition de la requête ; cette
étape permet d’éviter le parcours de toutes les cellules du champ.
L'étape Filtrage doit être supportée par une méthode d'indexation car les recherches
dans une base de données sont toujours les grandes consommatrices de temps. Nous utilisons
alors une structure d'index construite à partir des intervalles de sous-champs afin d'accélérer
l'étape Filtrage car la recherche se fait par sur intervalles de sous-champs.
Chapitre 4. Indexation par valeurs
73
4.2.3 Exemple d’application de la stratégie
La Figure 26, représentant un champ de température, illustre la procédure du traitement de re-
quête par valeurs définie ci-dessus. Afin de simplifier le schéma, le plan XY a été projeté sur
l’axe Espace v et le deuxième axe donne les valeurs des champs. On prend l’hypothèse que les
cellules sont des triangles irréguliers.
Figure 26. Sous-champs dans un champ de température.
Supposons que la requête donnée soit "Déterminer les régions pour lesquelles la tem-
pérature varie entre 20°C et 25°C".
L’étape Filtrage conduit à sélectionner les trois sous-champs, notés 1, 2 et 6 dans la
Figure 26, et qui ont une intersection avec l’intervalle de requête. L'étape Estimation consiste
alors à extraire les triangles contenus dans (ou intersectant) les trois sous-champs sélectionnés
et à effectuer le calcul de l’estimation sur les triangles extraits pour trouver des régions dont la
température varie entre 20°C et 25°C.
Valeur w
Espace v
20 °
25 °sous-champ 1
2
34
56
7
Chapitre 4. Indexation par valeurs
74
4.2.4 Intérêts de l'exploitation des sous-champs
Comme présentée dans la section 4.1.3, la méthode I-All pose deux grands problèmes. Dans
cette partie, nous rappelons brièvement les problèmes posés et nous montrons comment ils peu-
vent être résolus par l'utilisation des sous-champs.
Problème 1) La taille du fichier d'index : comme la méthode I-All utilise une structure
d'index construite à partir des intervalles de toutes cellules du champ entier, la taille du fichier
d'index devient importante et cela entraîne des recherches lentes dans la structure de l'index.
Résolution du problème 1) : par l'utilisation des sous-champs, nous indexons seu-
lement les intervalles des sous-champs plutôt que les intervalles individuels de toutes les cellu-
les comme dans la méthode I-All. Puisqu’un sous-champ est un ensemble de plusieurs cellules,
il est évident que le nombre des intervalles des sous-champs est beaucoup plus petit que celui de
toutes les cellules du champ. La taille du fichier d'index devient donc très réduite et les recher-
ches dans la structure d’index plus rapides.
Problème 2) Dans la méthode I-All, les cellules participant à l'interpolation durant
l'étape Estimation sont extraites une par une donc un accès au disque dur est requis pour l'ex-
traction de chaque cellule. Cela dégrade dramatiquement la performance.
Résolution du problème 2) : grâce à la proposition de stockage des sous-champs
(voir la section 4.2.1), nous pouvons résoudre le problème 2. Puisque les cellules voisines dans
un sous-champ sont rassemblées (cluster) sur le disque dur, les cellules candidates potentielles
contenues dans les sous-champs issus de l'étape Filtrage peuvent être extraites en masse par un
accès au disque dur. Evidement, le nombre exact des cellules à extraire par un accès au disque
dépend de la taille de page disque du système utilisé.
En effet, cela implique des accès au disque dur par unité de sous-champs plutôt que par
unité de cellule individuelle. Le nombre d'accès au disque dur peut donc être réduit. En outre,
cette proposition de clustering spatial est considéré comme très efficace pour le traitement des
requêtes conventionnelles basées sur la condition spatiale[LI 92].
Chapitre 4. Indexation par valeurs
75
4.2.5 Implémentation des sous-champs
A présent, nous devons définir la méthode d’implémentation des sous-champs. Comment peut-
on diviser l'espace d'un champ en plusieurs sous-champs afin qu’ils puissent posséder des va-
leurs similaires ?
Nous définissons deux aspects à prendre en compte pour implémenter des sous-
champs.
1. La façon de découper l'espace :
Le découpage d’un champ en sous-champs peut être effectué de diverses façons. Aussi,
ce découpage peut être vu comme un regroupement de certaines cellules voisines
(connectées) en sous-champ car l'espace du champ est totalement couvert par les cellu-
les.
2. Le critère de similarité des valeurs d’un sous-champ :
Le découpage spatial (ou le regroupement) doit être effectué à condition que les sous-
champs possèdent des valeurs similaires. Pour cela, il faut définir le critère de similarité
des valeurs d'un sous-champ afin de décider si le découpage (ou regroupement) peut ou
non s'effectuer.
Dans la section suivante, nous présentons plusieurs nouvelles méthodes pour l'indexa-
tion et l'implémentation des sous-champs. Dans un premier temps, nous présentons une méthode
nommée Interval Quadtree reposant sur le découpage spatial du quadtree [SAMET 90a] [SA-
MET 90b] [LAURINI 92]. Nous présentons comment l'indexation pour les requêtes par valeurs
est réalisée dans la méthode Interval Quadtree. Ensuite, les problèmes posés par la méthode In-
terval Quadtree seront mis en évidence et une autre méthode sera proposée afin d’améliorer les
performances de l’Interval Quadtree.
Chapitre 4. Indexation par valeurs
76
4.3 Méthode Interval Quadtree
Après avoir donné la définition de la méthode, nous en présentons deux implémentations.
4.3.1 Définition
Comme nous l'avons défini dans la section précédente, il faut prendre en compte deux critères
pour implémenter des sous-champs. La première méthode nommée Interval Quadtree [KANG et
al. 99] est décrite selon la définition de ces deux critères :
4.3.1.1 La façon de découper l'espace
Le découpage repose sur une division en quadtree de régions. Rappelons qu’à l’origine, le quad-
tree (arbre de quadrants) [SAMET 90a] [SAMET 90b] a principalement été utilisé pour la repré-
sentation d’images « bitmap » ou d’objets spatiaux en mode raster. Le principe du quadtree re-
pose sur un découpage récursif en quadrants. Par exemple, une image bitmap est divisée en
quatre quadrants, puis chaque quadrant est divisé de nouveau en quatre quadrants etc. L’arrêt du
processus intervient lorsque chaque quadrant a satisfait certaines conditions.
Nous appliquons le même principe pour le découpage d’un champ en sous-champs. Le
champ est d’abord divisé en quatre sous-champs et le processus se répète jusqu’à ce que chaque
sous-champ satisfasse une condition donnée (le critère est défini ci-dessous).
Si le champ est tridimensionnel, alors il s'agira d'octrees ou de 2n-trees en généralisant.
Par simplicité, on continuera à parler de quadtrees.
4.3.1.2 La similarité des valeurs d’un sous-champ
Nous utilisons la taille de l'intervalle de sous-champ pour définir le critère de similarité des va-
leurs ; La taille de l'intervalle d'un sous-champ est la différence entre la valeur maximale et la
valeur minimale du champ. Lorsqu'un sous-champ possède des valeurs proches, la taille de l'in-
tervalle du sous-champ ne peut pas être élevée. Nous utilisons une taille maximale prédétermi-
Chapitre 4. Indexation par valeurs
77
née, un seuil, pour les intervalles. Les valeurs dans le sous-champ sont proches si la taille de
l’'intervalle d'un sous-champ ne dépasse pas ce seuil préalablement fixé.
En résumé, un champ est d’abord divisé en quatre sous-champs et le processus se ré-
pète jusqu’à ce que la taille de l'intervalle de chaque sous-champ soit inférieure au seuil préala-
blement fixé.
En effet, un Interval Quadtree est distingué par le critère de division et la structure de
données d'un Quadtree général qui sont définis spécialement pour le traitement de requêtes par
valeurs.
4.3.2 Exemple de génération des sous-champs par Interval Quadtree
Prenons un exemple. La Figure 27 montre le découpage en quadtree d’un champ. Le seuil de di-
vision a été fixé à 10.
La Figure 27.a illustre un champ représenté par un DEM à 2 dimensions. Chaque cel-
lule possède donc des points-échantillons sur les quatre sommets et l'interpolation bilinéaire est
utilisée pour estimer une valeur en un point non échantillonné. Les valeurs du champ oscillent
entre 46 et 80.
Comme présenté sur la Figure 27.b, l'espace est divisé en quatre quadrants car la taille
de l'intervalle du champ (c’est-à-dire [46, 80]) a excédé le seuil fixé dans la Figure 27.a. Les
nombres dans chaque quadrant correspondent à l’intervalle des valeurs du quadrant (minimum,
maximum). Pour qu’un quadrant soit un sous-champ, la taille de cet intervalle ne doit pas excé-
der 10 unités c’est-à-dire le seuil fixé.
La Figure 27.c et d montrent le résultat du découpage étape par étape. La Figure 27.d
est le résultat de la dernière étape car les intervalles de tous les quadrants respectent le seuil
fixé. Ainsi, le découpage s'arrête.
La Figure 28 présente le quadtree correspondant. A chaque nœud est associé un numé-
ro d’identifiant et un intervalle de mesure correspondant au quadrant respectif. Les feuilles du
quadtree en carré coloré dans la Figure 28 représentent les sous-champs obtenus dans la Figure
27.d.
Chapitre 4. Indexation par valeurs
78
Figure 27. Exemple de la procédure de découpage dans la méthode Interval Quadtree.
46
50
55
70
73
73
79
78
49
56
60
64
75
80
79
77
52
59
74
62
76
78
80
78
55
68
78
73
74
75
76
73
60
61
63
65
64
70
73
73
62
64
68
68
66
65
72
68
63
61
62
70
69
68
65
66
66
65
66
69
64
69
64
63
68
70
67
64
60
58
60
61
7976767575696662 64
= points-échantillons
64,70 46,78
73,8058,75
60,66 65,75
64,73
73,80
68,78 64,74
64,70
46,65
58,69
59,68
73,80
64,70
64,7468,78
59,68
65,75
64,73
60,66
58,69
54,62 55,65
49,59 46,56
a) Un champ original à 2 dimensions b) Première étape du découpage
c) Deuxième étape du découpage d) Troisième et dernière étape du découpage :
sous-champs obtenus
Chapitre 4. Indexation par valeurs
79
Figure 28. Quadtree correspondant à l'exemple de la Figure 27
4.3.3 Deux implémentations de l’Interval Quadtree
Après avoir donné la définition de l’Interval Quadtree, nous présentons dans cette partie deux
implémentations différentes de ces quadtrees pour l'indexation par valeur. La première est basée
sur une structure d’arbre de pointeurs. La deuxième repose sur un quadtree linéaire.
4.3.3.1 Interval Quadtree implémenté par Pointeur (Pointer-based Interval Quadtree)
Une implémentation facile et intuitive pour le stockage des quadtrees est une structure de don-
nées en arbres avec des pointeurs (Pointer-based Quadtree) [SAMET 90b]. Un Interval Quadtree
implémenté par pointeurs est nommé Pointer-based Interval Quadtree. Par exemple, le Pointer-
based Interval Quadtree de la Figure 27.d stocke l'arbre de la Figure 28 sur le disque tel qu'il
est. Cela signifie que toutes les étapes du découpage sont stockées.
4.3.3.1.1 Structure de données
Comme le montre la Figure 28, chaque nœud intermédiaire contient :
(id, min, max, ptr1, ptr2, ptr3, ptr4),
4(64, 70)
10(68,78) 11(64,74) 12(59,68)
5(46, 78)
3(73, 80)2(58, 75)
1(46, 80)
6(60,66) 7(65,75) 8(58,69) 9(64,73)
13(54,62) 14(55,65) 15(49,59) 16(46,56)
première étape
deuxième étape
troisième étape
Chapitre 4. Indexation par valeurs
80
où id est l'identifiant du quadrant, min et max sont des bornes de l’intervalle des valeurs du qua-
drant concerné. Et les quatre pointeurs ptr1, ptr2, ptr3, ptr4 sont les pointeurs sur les quadrants
enfants (un pour chaque quadrant enfant).
Une feuille contient :
(id, N, Size, min, max, D),
où id est l’identifiant d'un sous-champ. N et Size représentent l'identifiant spatial de la feuille
correspondante, par exemple N est une clé de Peano [PEANO 1890] [LAURINI 92] et Size est la
longueur de la feuille. Min et max sont des bornes de l'intervalle du sous-champ. D est l’adresse
disque à laquelle les cellules contenues dans le quadrant (sous-champ) concerné sont stockées.
Il permet d'extraire des cellules d'un sous-champ pour l'interpolation.
4.3.3.1.2 Procédure de recherche
Avec cette structure arborescente hiérarchique basée sur les pointeurs, nous pouvons traiter des
requêtes par valeurs (Déterminer les régions correspondant à une valeur donnée), comme décri-
tes dans le chapitre précédent, par notre stratégie de filtrage et estimation.
Supposons que nous désirions trouver des régions où la température varie entre [20oC,
25oC]. Dans ce cas, la valeur de la requête est l’intervalle [20oC, 25oC]. L’exécution de la re-
quête s’effectue alors de la façon suivante : le Pointer-based Interval Quadtree est traversé en
examinant si l’intervalle de chaque nœud chevauche la valeur de la requête à chaque niveau.
Les nœuds dont les intervalles n’ont pas d'intersection avec la valeur de la requête sont exclus,
les nœuds restants correspondent aux sous-champs candidats sélectionnés. Ensuite, les cellules
contenues dans les sous-champs candidats sont extraites et une estimation de régions est effec-
tuée. L’algorithme de recherche par un Pointer-based Interval Quadtree est détaillé dans
Algorithme 2.
Chapitre 4. Indexation par valeurs
81
Algorithme 2. Indexation par valeurs basé sur un Pointer-based Interval Quadtree.
Supposons que la valeur du champ de la requête soit donnée par “ Trouver des zones
où la valeur de champ est 76 ?”. Dans l’exemple de la Figure 28, nous pouvons obtenir les
sous-champs filtrés 3 et 10 par les chemins de recherche {1, 3} et {1, 5, 10} respectivement
après exécution de l’Algorithme 2.
Si cet algorithme se révèle certes efficace, nous avons néanmoins mis en évidence
quelques points faibles qui sont les suivants :
- Le premier est un problème traditionnel du Pointer-based Quadtree. En effet, la struc-
ture du Pointer-based Quadtree requiert un grand volume d’espace de stockage ce qui
entraîne de fréquents accès disque lors du parcours des pointeurs.
- Lorsque les régions satisfaisant la condition de la requête sont dispersées sur plusieurs
branches d’un quadtree, plusieurs cheminements dans le quadtree sont nécessaires ce qui
entraîne une dégradation de la performance. Par exemple, quand nous cherchons les
sous-champs dont les intervalles contiennent la valeur 59 qui est la valeur de la requête
dans la Figure 28, nous voyons que les sous-champs satisfaisant la condition de la re-
quête sont {8, 12, 13, 14, 15}. Bien que les intervalles de ces sous-champs soient simi-
laires tels que (58, 69), (59,68), (54, 62), etc., ces sous-champs sont stockés sur des
branches différentes car le Pointer-based Interval Quadtree n’est pas totalement hiérar-
chique au niveau des intervalles des valeurs du champ.
Procédure Indexation par valeurs par un Pointer-based Interval Quadtree Input : P (racine du quadtree),
I (valeur de la requête) Output : B (ensemble des cellules à participer à l'interpolation) A ← {P}. B ← {}. Pour chaque nœud n dans A .
Si n n’est pas feuille et l’intervalle(n) intersecte I, alors insérer quatre enfants noeuds dans A. Si n est feuille et l’intervalle(n) intersecte I, alors extraire les cellules dans n et les insérer dans B.
FinPour FinProcédure
Chapitre 4. Indexation par valeurs
82
Afin de pallier ces problèmes et d’améliorer la performance de l’indexation des
champs continus, nous proposons, dans la partie suivante, une méthode avancée de Pointer-
Pour éviter les inconvénients de la méthode d’implémentation d’un Pointer-based Quadtree, un
quadtree linéaire représenté par la liste des valeurs des feuilles est souvent utilisé [SAMET
90a][SAMET 90b]. Les éléments de la liste sont habituellement réorganisés en utilisant une
structure en arbre comme un B-tree ou une de ses variations afin d’accélérer la vitesse de re-
cherche. La clé de recherche utilisée pour la structure en arbre est généralement la valeur du
code de localisation de chaque feuille. Cette méthode n’est toutefois pas exploitable pour traiter
les requêtes par valeurs car la condition de la requête ne repose pas sur la localisation des
nœuds mais sur les intervalles de valeurs du champ.
Il faut donc une structure d'index construite à partir des intervalle des sous-champs (les
feuilles) pour utiliser ces intervalles comme clé de recherche, ce qui a été finalement proposé
dans la section 4.2.2. Nous appelons cette implémentation Linear Interval Quadtree.
Dans ces travaux, nous utilisons un 2-D R*-tree par la transformation (voir la section
3.2.2.3) pour indexer les intervalles des sous-champs.
4.3.3.2.1 Structure de données
Un intervalle d'un sous-champ est sous forme de :
(D, min, max),
où D est l’adresse disque à laquelle les cellules dans le sous-champ concerné sont stockées. Et
min et max sont des bornes de l'intervalle des valeurs du sous-champ.
Chaque intervalle du sous-champ est transformé en un point à 2 dimensions et ce point
est inséré dans un 2-D R*-tree. La structure d'un 2-D R*-tree pour les points transformés est de
la forme :
Chapitre 4. Indexation par valeurs
83
où ptr est un pointeur sur le nœud fils et RECT représente un MBR. Notons que l'adresse D
d'un sous-champ est stockée dans une feuille de R*-tree pour extraire l'information des cellules
dans le sous-champ pour l’interpolation.
4.3.3.2.2 Procédure de recherche
La procédure de recherche avec le Linear Interval Quadtree est similaire à celle de la
méthode I-All. Pour trouver les régions où la valeur est égale à w, on transforme w en un rec-
tangle de la requête rw par la fonction Trans_Inter(w) (voir la section 3.2.2.3). L'algorithme 'In-
tersect' dans le R*-tree construit par les points transformés sera exécuté avec la condition rw.
Cela permet de trouver des points contenus dans rw, qui donnent finalement les intervalles che-
vauchant w. La procédure pour les traitements des requêtes par valeur avec l'indexation Linea-
rInterval Quadtree est présentée ci-dessous.
Algorithme 3. Traitement des requêtes par valeur basé sur un Linear Interval Quadtree.
Nœud intermédiaire : ptr, RECT .... identique
Feuille : D, RECT …. identique
Procédure Intersect(nœud n du R*-tree, rectangle de la requête rw) : // Rechercher les nœuds intermédiaires Si n est un nœud intermédiaire alors pour chaque élément (ptr, RECT) du n dont le RECT intersecte rw Intersect(fils, rw), où fils est le nœud pointé par ptr
// Rechercher les feuilles Sinon pour chaque élément (D, RECT) dont le RECT intersecte rw
Estimer(D, Trans_Inter-1(rw))
FinProcédure
Procédure Estimer(pointeur D, valeur de la requête w) Extraire les cellules à l'adresse de disque D Estimer les régions exactes correspondant à w à partir des données des cellulesextraites
FinProcédure L'algorithme commence par l'appel suivant : Rechercher (Racine du R*-tree, rectangle de la requête transformé rw)
Chapitre 4. Indexation par valeurs
84
Trans_Inter-1 retourne la valeur d'origine de la requête à partir d'un (comme dans la
méthode I-All, voir la section 4.1).
4.3.4 Implémentation, Performance et Remarques
Pour mesurer la performance des méthodes d’indexation proposées dans la section précédente
pour des requêtes par valeurs, nous avons utilisé des données réelles d’altitudes de terrain issues
d’une région des villes VICTORIA et SEATTLE aux Etats-Unis. Ces données ont été obtenues
sur le site http://edcwww.cr.usgs.gov. Leur représentation physique se présente sous la forme
d’un DEM (USGS DEM) et la résolution est de 1024 * 1024 cellules.
L’implémentaion permet de comparer le Linear Interval Quadtree basé sur un R*-tree
avec le Pointer-based Interval Quadtree et la méthode de Balayage Séquentiel qui parcourt sé-
quentiellement toutes les cellules du champ sans indexation. Nous avons mesuré le temps
moyen consommé pour la résolution de 50 requêtes générées aléatoirement. La taille d’une page
pour la lecture du disque et la construction d’un R*-tree est de 1024 octets. La Figure 29 donne
les courbes de résultats du temps de traitement des trois méthodes d’indexation.
Figure 29. Temps de traitement des requêtes par les méthodes d’indexation proposées.
Comme nous l'avons défini, le seuil de découpage est la taille maximale de l’intervalle
des sous-champs : la différence maximale entre l’altitude minimum et maximum. Pour le test,
0,000,200,400,600,801,001,201,401,601,802,00
0.05 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.95
Taille relative du seuil
Tem
ps(s
)
Linear Interval Quadtree
Pointer-based Interval Quadtree
Balayage Séquéntiel
Chapitre 4. Indexation par valeurs
85
nous avons fait varier la valeur du seuil par rapport à l’intervalle des valeurs du champ total.
Dans notre exemple, l’altitude varie de 864m à 2701m dans le champ entier. Le seuil de valeur
1 correspond donc à 1837 (la taille de l'intervalle du champ entier : la différence entre 2701 et
864). Celui de valeur 0.2 correspond à 367,4 ( la taille de l'intervalle du champ entier 1837 *
0.2). L’axe des X représente cette variation du seuil relatif de 0.05 à 0.95.
Dans tous les cas, on peut noter la supériorité de la performance du Linear Interval
Quadtree comme le montre la Figure 29.
Comme nous pouvons le constater sur la courbe du Linear Interval Quadtree de la
Figure 29, la définition de la valeur du seuil qui induit le nombre de sous-champs nécessite une
réflexion approfondie pour l’amélioration de la performance. Autrement dit, la performance de
la méthode d’indexation dépend du seuil. Nous découvrons dans le test réalisé que les seuils va-
riant entre 0.2 et 0.8 ont donné les meilleurs résultats. En revanche, ces seuils ne garantissent
pas les mêmes résultats sur les autres données des champs. Nous pouvons également faire les
remarques importantes suivantes :
1 - Lorsque le seuil est fixé à la valeur limite 1, le temps de traitement de requêtes par
Interval Quadtree est presque similaire à celui par Balayage Séquentiel. En effet, un seul sous-
champ correspond au champ total et il est alors nécessaire de tester toutes les cellules du champ.
Cela signifie qu’il n’y a aucun effet de filtrage au niveau des sous-champs.
2 - Lorsque le seuil est fixé à la valeur limite 0, la performance de l'Interval Quadtree
est aussi très mauvaise. Chacune des cellules devient un sous-champ ce qui induit une structure
d'index trop importante qui ne permet donc pas de filtrage approximatif.
Comme mentionné auparavant, le seuil décide du nombre de sous-champs à obtenir
après le découpage du champ. La Table 1 montre le nombre de sous-champs de l’Interval Quad-
tree, le temps nécessaire pour le filtrage par le Linear Interval Quadtree ainsi que celui pour
l'estimation en fonction de la taille relative du seuil.
t11 t9 t10 t12 t1 t0 t2 t3 t4 t5 t8 t7 t 6 sous-champ1 sous-champ3
sous-champ2
c. Regroupement des cellules linéarisées
: points-échantillons
a. Champ de type TIN
: point central×
×t11
t5
t0t1
t2
t3
t4
t9
t8
t12
t10
×
× ×
×
×
×
×
×
×× ×
×
t6
t7
sous-champ2
d. Représentation spatialedes sous-champs
×t11
t5
t0t1
t2
t3
t4
t9
t8
t12
t10
×
× ×
×
×
×
×
×
×× ×
×
t6
t7
sous-champ3
sous-champ1
Chapitre 4. Indexation par valeurs
91
Le champ est représenté par un TIN dans la Figure 32.a. Les cellules sont donc linéari-
sées selon leur clé de Hilbert (Figure 32.b). Comme nous l'avons défini ci-dessus, la clé de Hil-
bert d'une cellule est la clé de Hilbert du centre de la cellule. Ensuite, les cellules linéarisées
sont regroupées en sous-champs (la Figure 32.c). La Figure 32.d montre les cellules regroupées
dans la dimension spatiale.
Un sous-champ se construit de la façon suivante : un sous-champ inclut les cellules li-
néarisées une par une tant que la condition du regroupement est satisfaite (la condition est défi-
nie plus loin). Un sous-champ est donc un regroupement des cellules voisines connectées les
unes aux autres le long de la courbe de Hilbert.
4.4.1.2 La similarité des valeurs d’un sous-champ
Nous devons définir la condition du regroupement pour décider si une cellule peut être regrou-
pée ou non, dans un sous-champ. En effet, les valeurs d'une cellule à inclure dans un sous-
champ doivent être similaires aux valeurs du sous-champ.
Pour la condition de regroupement, nous proposons un modèle de coût qui tente de ne
pas faire augmenter la probabilité d'accès aux sous-champs lors du traitement des requêtes par
valeur.
Comme nous l'avons mentionné (voir la section 4.2.2), nous indexons les intervalles
des sous-champs pour le traitement des requêtes par valeurs. Cela signifie que les sous-champs
sont accédés par leur intervalle. En effet, un intervalle d'un sous-champ peut être interprété
comme un MBR (à 1 dimension) des valeurs que l'intervalle inclut. Nous exploitons donc la no-
tion de probabilité d'accès à un MBR par une requête spatiale à n dimensions (voir [KAMEL et
FALOUTSOS 93]).
Chapitre 4. Indexation par valeurs
92
Probabilité d'accès à un MBR par une requête spatiale (selon [KAMEL et FALOUTSOS
93])
[KAMEL et FALOUTSOS 93] a considéré un espace à 2 dimensions. Les mêmes concepts peu-
vent être généralisés pour les dimensions plus élevées. Supposons que l'espace à 2 dimensions
soit normalisé à ([0,1]2), et considérons un MBR de taille nx × ny.
En supposant une équi-répartition (ce qui revient à supposer une loi uniforme) des re-
quêtes, la probabilité d'accès P au MBR pour une requête de type "Quel MBR contient un point
donné ?" est définie comme suit :
P = nx * ny .
En effet, la probabilité d'accès au MBR pour une requête d'un point correspond à la
probabilité que le point de la requête tombe dans le MBR. Cette probabilité se calcule à partir
de la surface du MBR dans la surface de l'espace normalisé. En généralisant cette notion, la
probabilité d'accès au MBR pour une requête dans un espace normalisé à N dimensions peut
être définie par rapport à la surface du MBR.
Coût d'accès à un sous-champ basé sur la probabilité d'accès à un sous-champ pour une
requête par valeurs
Nous considérons toujours un espace normalisé comme ci-dessus. Lors du traitement des requê-
tes par valeurs, un sous-champ est accédé par son intervalle des valeurs, c'est-à-dire par le do-
maine de valeurs, lequel est un espace à 1 dimension. Cet intervalle peut être considéré comme
un MBR à 1 dimension (comme mentionné ci-dessus). La probabilité d'accès à un sous-champ
pour une requête par valeurs correspond donc à la probabilité d'accès à un MBR à 1 dimension.
Nous pouvons donc définir la probabilité d'accès PSF au sous-champ dont l'intervalle est de
taille L :
PSF = L. ----- définition 1)
Chapitre 4. Indexation par valeurs
93
Comme nous avons vu ci-dessus, la probabilité d'accès à un MBR est définie par rapport à sa
surface. En effet, la surface du MBR (à 1 dimension) d'un intervalle est la taille (longueur) de
l'intervalle.
Nous définissons aussi la taille len(I ) d'un intervalle I = [min, max] d'une cellule ou
d'un sous-champ :
len(I ) = max - min + 1.----- définition 2)
Dans le cas où le maximum et le minimum sont les mêmes, par exemple lorsqu'une
fonction d'interpolation retourne une valeur identique pour tous les points à l'intérieur d'une cel-
lule, la taille de l'intervalle de cette cellule est égale à 1 par définition, et non pas à 0. En effet,
la taille d'intervalle des cellules sera utilisée comme diviseur pour calculer le coût d'accès à un
sous-champ (la définition 3), qui sera présenté ci-dessous. Ainsi, la définition 2 permet de trai-
ter le cas illustré ci-dessus en évitant que le diviseur soit égal à 0.
Enfin, nous définissons le coût d'accès à un sous-champ i comme suit:
CSFi = PSFi / SIi, ----- définition 3)
où SIi est la somme des tailles d'intervalles de toutes les cellules du sous-champ i et PSFi est la
probabilité d'accès au sous-champ i.
Le coût d'accès à un sous-champ signifie donc la division de la probabilité d'accès au
sous-champ par la somme des tailles d'intervalles des cellules inclus dans le sous-champ.
La condition du regroupement
Nous essayons de regrouper le maximum de cellules similaires en sous-champs pour améliorer
la performance d'une méthode d'indexation. Nous pouvons remarquer que plus les valeurs dans
un sous-champ sont similaires, moins le coût d'accès au sous-champ est élevé. Ainsi nous es-
sayons de minimiser le coût d'accès aux sous-champs.
Chapitre 4. Indexation par valeurs
94
Comme il est indiqué plus haut, lors du regroupement des cellules, un sous-champ in-
clut les cellules linéarisées une par une tant que la condition du regroupement est satisfaite. La
condition du regroupement d'une cellule se définit donc comme suit :
l'insertion d'une nouvelle cellule dans un sous-champ contenant déjà certaines cellules
ne doit pas augmenter le coût d'accès au sous-champ tel qu'il était avant son insertion.
Soit c la cellule à inclure dans un sous-champ i. Soit CSFi(c) (resp. CSFi'(c)) le coût
d'accès au sous-champ i avant (resp. après) l'insertion de c. L'acceptation d'une nouvelle cellule
dans un sous-champ i peut donc être effectuée si et si seulement CSFi(c) > CSFi'(c).
L'algorithme pour former des sous-champs à partir des cellules linéarisées est détaillé
dans l'Algorithme 4.
Procédure FormerSous-champ i = 1 Créer un sous-champ i en incluant la première cellule dedans Pour chaque cellule linéarisée {
Si CSFi (cellule courante) ≥ CSFi' (cellule courante) Alors Inclure la cellule courante dans le sous-champ i Sinon Finir le sous-champ i,
i = i + 1 Créer un nouvau sous-champ i
} FinProcédure
Algorithme 4. Algorithme de la génération des sous-champs.
Nous commençons donc avec l'intervalle de la première cellule parmi les cellules li-
néarisées. Nous formons un sous-champ en incluant toutes les cellules successives tant que la
condition du regroupement est satisfaite. Sinon, nous créons un nouveau sous-champ.
Comme le coût d'accès aux sous-champs est basé sur le calcul des intervalles des cellu-
les, nous pouvons représenter des cellules par leur intervalle lors la génération des sous-champs
comme l'illustre la Figure 33.a. Les cellules sont donc linéarisées selon leur clé de Hilbert. La
Figure 33.b représente la procédure de génération des sous-champs. Cette procédure regroupe
les cellules selon la condition du regroupement définie ci-dessus.
Chapitre 4. Indexation par valeurs
95
Figure 33. Exemple de l'exécution de la procédure 'FormerSous-Champ'
Considérons l'état du sous-champ SF1 (Figure 33.b) tel que SF1 = ⟨c1,c2,c3,c4⟩. L'algo-
rithme doit décider si la cellule c5 doit être ajoutée à SF1. Ainsi, CSF1(c5) = 21/(11+10+11+13)
= 0,466 et CSF1'(c5) = 31/(11+10+11+13+13) = 0.534. L'insertion de c5 a donc augmenté le coût
d'accès du sous-champ 1. Donc, c5 ne peut pas être ajoutée à SF1. Ainsi un nouveau sous-champ
SF2 a été créé à partir de la cellule c5.
4.4.2 Exemples de génération des sous-champs par I-Hilbert
Nous présentons dans cette section, deux exemples d'implémentation des sous-champs par la
méthode I-Hilbert décrite dans la section précédente. La Figure 34. (resp. la Figure 35) illustre
un exemple d’un champ continu de type DEM (resp. TIN).
valeur
valeur de Hilbert
20
30
25
40
c1 c2 c3 c4 c5
3438
28
c6 . . . . .
. . .50
valeur
clé de Hilbert
20
30
25
40
c1 c2 c3 c4 c5
3438
28
c6 . . . . .
. . .
sous-champ 1
sous-champ 2
50
a. les intervalles des cellules linéarisées b. des sous-champs générés
intervalle dusous-champ 1
Chapitre 4. Indexation par valeurs
96
Figure 34. Exemple de génération d’un sous-champ continu de type DEM.
La Figure 34.a présente un exemple du champ représenté par un DEM. Après avoir li-
néarisé les cellules selon l'ordre de la clé de Hilbert de chaque cellule, la procédure Former-
Sous-champ s'exécute pour générer des sous-champs. La Figure 34.c représente l'information
spatiale des sous-champs générés dans La Figure 34.b.
valeur
clé de Hilbert
18
16
14
12
10
8
6
4
2
0 c0 c1 c2 c3 c4 c5 c6 ...
. . .sous-champ 1
sous-champ 2
8
8
10
78
7
814
4
c0
c8
c2
c7
c1
c4
c6
c3
c5 c10c9
c11
c12
c14
c13
c15
10
10 9
10 10
4
69
1112
13 17 16 8 9
: points-échantillon
a. Champ de type DEM
b. Génération des sous-champs à partir de l’intervalle descellules linéarisées (la procédure FormerSous-champ)
c. Représentation spatiale des sous-champs
sous-champ 1
sous-champ 2
sous-champ 3
Linéariserles cellules
* l'intervalledes cellules
c0 = [7, 10]
c1 = [4, 10]
c2 = [1, 8]
...
Chapitre 4. Indexation par valeurs
97
La Figure 35 présente un autre exemple d'un champ continu de type TIN. Un champ
continu de TIN est illustré dans la Figure 35. Les triangles dans l'exemple sont, en effet, les
mêmes triangles que dans la Figure 32. La linéarisation des cellules est donc basée sur le calcul
de la clé de Hilbert des cellules, qui est présenté dans la Figure 32.b.
Figure 35. Exemple de génération d’un sous-champ continu de type TIN.
valeur
18
16
14
12
10
8
6
4
2
0 c0 c1 c2 c3 c4 c5 ...
. . .sous-champ 1
sous-champ 2
: points-échantillon
a. Champ de type TIN
c. Représentation spatiale des sous-champs
Linéariserles cellules
: point central×
×
c0
c9
c5 c4
c6
c7
c8
c1
c10
c3 c2
×
× ×
×
×
×
×
×
×× ×
×
c12
c11
b. Génération des sous-champs à partir de l’intervalle descellules linéarisées (la procédure FormerSous-champ)
10
8
8
×
c0
c9
c5 c4
c6
c7
c8
c1
c10
c3 c2
×
× ×
×
×
×
×
×
×× ×
×
c12
c117
sous-champ 1
4
14
* l'intervalledes cellules
c0 = [8, 10]
c1 = [6, 10]
c2 = [4, 11]
...
11
8
16
136
17 12
sous-champ 2
Chapitre 4. Indexation par valeurs
98
La Figure 36 illustre des exemples de sous-champs générés par la méthode I-Hilbert
sur des données réelles. La Figure 36.a représenté des données de terrains sous formes de DEM.
Ces données obtenues depuis http://edcwww.cr.usgs.gov proviennent de la ville de ROSEBURG
(USA). L'altitude des terrains est représentée par différentes couleurs. Les sous-champs sont re-
présentés par des polygones sur les cartes.
Figure 36. Sous-champs générés sur des données réelles (données de terrains ).
Chapitre 4. Indexation par valeurs
99
4.4.3 Implémentation
4.4.3.1 Structure de données
Un intervalle d'un sous-champ est de la forme :
(ptr_début, ptr_fin, min, max),
où ptr_début (ptr_fin) est le pointeur sur la cellule du début (resp. de fin) du sous-champ (dans
l'ordre des clés de Hilbert). Et min et max sont des bornes de l'intervalle du sous-champ.
Les cellules sont linéarisées sur le disque selon l'ordre des clés de Hilbert. Par consé-
quent, les deux pointeurs ptr_début et ptr_fin indiquent l'adresse disque où sont stockées toutes
les cellules contenues dans le sous-champ.
L'intervalle de chaque sous-champ est transformé en un point à 2 dimensions et ce
point est inséré dans un 2-D R*-tree pour l'indexation. La structure d'un 2-D R*-tree pour les
points transformés est de la forme :
où ptr est un pointeur sur le nœud fils et RECT représente un MBR. Et Ptr_début (ptr_fin) est le
pointeur sur la cellule du début (resp. de fin) du sous-champ.
Notons que RECT d'une feuille est un MBR du point transformé à partir de l'intervalle
[min, max] d'un sous-champ. Notons aussi que les feuilles du R*-tree doivent stocker les deux
pointeurs ptr_début et ptr_fin de chaque sous-champ.
Nous aurions pu imaginer que les pointeurs sur ces deux cellules puissent être rempla-
cés par leur clé de Hilbert. Par exemple, dans le cas où les distances entre les clés de Hilbert des
cellules voisines (c'est-à-dire les valeurs de la courbe de Hilbert sur le point central des cellules)
sont identiques comme dans le cas du DEM (la grille régulière), l'adresse disque d'une cellule
peut être calculée par sa clé de Hilbert. En revanche, dans le cas où les clés de Hilbert des cellu-
Nœud intermédiaire : ptr, RECT .... identique
Feuille : ptr_début, ptr_fin, RECT …. identique
Chapitre 4. Indexation par valeurs
100
les ne composent pas une suite régulière (comme dans le cas des TIN), il est nécessaire de stoc-
ker les adresses physiques des cellules sur le disque. C'est la raison pour laquelle nous utilisons
les pointeurs sur les cellules plutôt que les clés de Hilbert.
4.4.3.2 Procédure de recherche
Dans la section précédente, nous avons présenté comment construire l'index par la méthode I-
Hilbert. Nous présentons, dans cette section, comment utiliser cet index pour une requête par
valeurs. Donc, après avoir construit un 2-D R*-tree des points transformés depuis les intervalles
de sous-champs, nous pouvons effectuer une requête par valeurs en utilisant cet index.
De la même façon que pour la méthode I-All, la valeur w de la requête est d'abord
transformée en un rectangle rw par la fonction Trans_Inter(w) (voir la section 2-D R*-tree par
transformation). Ensuite, on exécute l'algorithme 'Intersect' dans le R*-tree avec le rectangle rw
comme la condition de requête pour rechercher des points contenu dans rw. La procédure pour
le traitement des requêtes par valeurs avec l'indexation I-Hilbert est présentée ci-dessous.
Procédure Intersect(nœud n du R*-tree, rectangle de la requête rw) : // Rechercher les nœuds intermédiaires Si n est un nœud intermédiaire
alors pour chaque élément (ptr, RECT) du n dont le RECT intersecte rw Intersect(fils, rw), où fils est le nœud pointé par ptr // Rechercher les feuilles Sinon pour chaque élément (ptr_début, ptr_fin,RECT) dont le RECT intersecte rw Estimer(ptr_début, ptr_fin, Trans_Inter-1(rw))
FinProcédure
Procédure Estimer(pointeur ptr_début, pointeur ptr_fin, valeur de la requête w) Extraire les cellules sur le disque entre ptr_début et ptr_fin Estimer les régions exactes correspondant à w à partir des données des cellules
extraites FinProcédure L'algorithme commence par l'appel suivant : Rechercher (Racine du R*-tree, rectangle de la requête transformé rw)
Algorithme 5. Traitement des requêtes par valeurs basé sur l'indexation I-Hilbert.
Chapitre 4. Indexation par valeurs
101
Trans_Inter-1 retourne la valeur d'origine de la requête à partir d'un rectangle (comme
dans la méthode I-All, voir la section 4.1).
L'algorithme commence par l'exécution de 'Intersect' dans le R*-tree avec rw. Pour les
feuilles dont le MBR intersecte rw, nous appelons la procédure Estimer pour estimer les ré-
gions répondant à la requête. Cet algorithme est aussi représenté par le schéma de la Figure 57
dans la section 6.2
Dans la méthode I-All, la procédure Estimer extrait juste une seule cellule (qui con-
tient les régions de la réponse) et effectue une fonction d'interpolation. En revanche, dans la
méthode I-Hilbert, la procédure Estimer extrait plusieurs cellules (qui contiennent probable-
ment les régions de la réponse) pour effectuer l'estimation.
4.5 Conclusion
Dans ce chapitre, nous avons présenté les méthodes l’indexation développées au sein de nos tra-
vaux. La méthode la plus simple et intuitive est nommée la méthode I-All. Elle indexe
l’intervalle de chaque cellule afin de trouver des cellules dont l’intervalle chevauche la valeur
de la requête. Cela implique, en effet, une recherche exhaustive et précise, car la recherche ex-
trait toutes les cellules contenant les régions de la réponse. En revanche, l'existence d'un grand
nombre de cellules à traiter dans un champ continu ne rend pas cette méthode vraiment efficace.
Un nouveau concept de « sous-champ » est proposé. Un sous-champ est un sous-espace
contenant des valeurs proches. En se basant sur le concept de sous-champs, nous proposons une
stratégie de traitement des requêtes composée de 1) l'étape Filtrage et 2) l'étape Estimation.
L'étape Filtrage conduit une recherche approximative en trouvant des sous-champs satisfaisant
la requête plutôt que les cellules elles-mêmes. En effet, les cellules dans les sous-champs issues
de l'étape Filtrage sont susceptibles de contenir les régions de la réponse. Ainsi, la réponse
exacte est obtenue par l'étape Estimation.
Il existe deux critères à prendre en compte pour implémenter des sous-champs :
- la façon de découper l'espace : comment diviser l'espace en plusieurs sous-champs ?
- le critère de similarité des valeurs d'un sous-champ : ceci représente la condition de
composition d’un sous-champ.
Chapitre 4. Indexation par valeurs
102
Deux méthodes d'indexation sont proposées selon la définition de ces deux critères.
1) Méthode Interval Quadtree :
L'espace se divise en quatre sous-espaces recursivement jusqu'à ce que la taille de l'in-
tervalle des qautre sous-espaces soit inférieure à un seuil pré-déterminé. En effet, la similarité
des valeurs d'un sous-champ est jugée par la taille fixe d'intervalle du sous-champ. Cette mé-
thode n'est pas fiable car les performances sont dépendantes du seuil utilisé et de la distribution
des données. Cela provient de la non existence de moyen justifiable de décider le seuil optimal.
Ainsi, le découpage quadratique n'est pas adapté pour traiter les cellules non quadratiques.
2) Méthode I-Hilbert :
Dans un premier temps, afin de surmonter les inconvénients du découpage quadratique,
nous avons reinterprété le sens du découpage de l'espace (comme le regroupement des cellules
en sous-champs). Les cellules sont linéairsées selon la clé de Hilbert de leur information spa-
tiale (ou spatio-temporelle). Ensuite, les sous-champs se forment en regroupant séquentillement
les cellules linéarisées (selon la condition du regroupement définie dans cette thèse). Dans un
deuxième temps, nous avons essayé de trouver une condition de regroupement qui s'adapte à la
distribution des données (pas une valeur fixe de la condition comme dans la méthode Quadtree).
Nous avons d'abord défini le coût d'accès à un sous-champ pour les requêtes. Ensuite, la condi-
tion du regroupement est définie dans le sens de ne pas augmenter le coût d'accès afin de
maximiser les performances.
Après avoir proposé les méthodes d’indexation par valeurs, nous nous intéressons dans
le chapitre suivant à l'implémentation et aux tests des performances des méthodes proposées.
Chapitre 5. Implémentation et performance
104
5. Implémentation et performance
Nous avons implémenté la méthode I-Hilbert et nous avons effectué des tests sur des données de
champs continus à 2 dimensions spatiales. La méthode est implémentée en C sous Unix. Nous
avons comparé la méthode I-Hilbert avec celle du Balayage Séquentiel, et avec la méthode I-
All.
Pour chaque test, nous avons utilisé des requêtes par valeurs ayant comme condition un
intervalle variable de valeurs du champ ;
Qintervalle : intervalle de la requête variant en considérant une taille normalisée de l'in-
tervalle de l'espace du champ total égale à [0, 1]. Par exemple, les requêtes avec Qintervalle = 0.1
dans un espace dont l'intervalle total est [10, 110], sont des requêtes avec des intervalles de
taille 10 (tels que [25, 35], [43, 53]). Les requêtes avec Qintervalle = 0 correspondent à des requê-
tes par valeurs ayant comme condition une seule valeur (par exemple "Quelles sont les régions
où la valeur est égale à 30").
Nous avons généré aléatoirement 200 requêtes pour quelques valeurs de Qintervalle. Nous
avons mesuré le temps d'exécution des requêtes par valeurs en calculant le temps moyen con-
sommé pour la résolution de 200 requêtes pour chaque valeur de Qintervalle considérée. La taille
de page disque utilisée est 4Ko.
Des données réelles et des données simulées ont été utilisées pour mesurer la perfor-
mance des méthodes. Nous avons utilisé des données réelles afin d'évaluer notre méthode en
pratique. Les données simulées nous ont permis de maîtriser plusieurs paramètres afin de tester
notre méthode sur des données ayant d'autres caractéristiques. Nous avons utilisé une simple in-
terpolation bilinéaire afin d'estimer des valeurs sur les points non échantillonnés.
Chapitre 5. Implémentation et performance
105
5.1 Données réelles
Deux types de données réelles ont été utilisées : des données de terrain et des données sonores
urbaines.
5.1.1 Données de terrain
Des données d'altitudes de terrain (USGS DEM) issues de trois régions différentes (Victoria,
Burns, Pullman) des Etats-Unis ont été obtenues à partir de http://edcwww.cr.usgs.gov. Les par-
ties des régions utilisées pour les tests sont composées chacune de 266.144 cellules rectangulai-
res ayant quatre sommets (la résolution de chaque DEM est 512*512). La Figure 37 montre une
partie des données d’une région.
Figure 37. Partie de la région utilisée pour les tests.
Nous avons effectué des tests pour chaque région en faisant varier Qintervalle de 0 à 0.1. La Figure 38 montre les résultats de la méthode I-Hilbert, de la méthode du Balayage Séquentiel et de la méthode I-All (pour chaque région).
THESE SOUTENUE DEVANT L’INSTITUT NATIONAL DES SCIENCES APPLIQUEES DE LYON
NOM : KANG DATE de SOUTENANCE :
(avec précision du nom de jeune fille, le cas échéant) 20 décembre 2001
Prénoms : MYOUNG-AH
TITRE :
INDEXATION ET VISUALISATION DES DONNEES DE CHAMPS CONTINUS DANS LES SIG
(SYSTEMES D’INFORMATION GEOGRAPHIQUE)
NATURE : Doctorat Numéro d’ordre : 2001ISAL0078
Formation doctorale :
Documents multimedia, Images et Systèmes d'Information Communicants (DISIC)
Cote B.I.U-Lyon : T 50/210/19 / et bis CLASSE :
RESUME :
L’objectif des bases de données de champs continus est la représentation des phénomènes continus (météorologie, géologie, pollution, etc..). Nous proposons une méthode d’indexation pour le traitement efficace des requêtes par valeurs dans une grand base de données de champs. Ces requêtes sont basées sur la condition d’une valeur de champ, telles que “Quelles sont les régions où la température est inférieure à 30° ? ”. Pour cela, nous proposons un nouveau concept de sous-champ. Nous divisons un espace en plusieurs sous-champs pour que toutes les valeurs explicites ou implicites dans un sous-champ soient proches dans le domaine de valeur défini. Ainsi, les intervalles des sous-champs peuvent être indexés par une méthode existante d'indexation d’intervalles. Nous présentons deux nouvelles méthodes d'implémentation de sous-champs : les méthodes "Interval Quadtree" et "I-Hilbert". La méthode "I-Hilbert" est issue de la réflexion sur l’amélioration de la mé-thode "Interval Quadtree"
Par ailleurs, nous nous intéressons à la visualisation de la temporalité des données. Afin de mieux comprendre et ana-
lyser des données selon le temps, il est important de représenter leur évolution temporelle. Du point de vue thématique appli-cative, nous avons travaillé sur un SIG sonore urbain. Après une étude des outils existants, nous avons adopté des techniques d’animation pour représenter l'évolution temporelle du son. Utiliser une carte animée comme outil d'exploration des données nécessite la spécification d’une carte animée interactive permettant aux utilisateurs de contrôler non seulement l'affichage mais aussi la génération de l’animation. Afin de réaliser une telle carte animée, nous proposons des paramètres contrôlant la génération des scènes d’animation et un contrôleur interactif de l’affichage des animations. Ces spécifications d’une carte animée interactive ont été validées dans un prototype développé sous MapInfo et VisualBasic.
MOTS-CLES : Système Information Géographique, Traitement Requête, Indexation, Fractal,
Animation, Visualisation Interactive, Carte Son, Evolution Temporelle
Laboratoire(s) de recherches : Laboratoire d'Ingénierie des Systèmes d'Information (L.I.S.I.) de l’I.N.S.A. de Lyon
Directeur de thèse : R. LAURINI, S. SERVIGNE
Président de jury : P. BERGOUGNOUX
Composition du jury : R. LAURINI, K.-J. LI, S. SERVIGNE, S. SPACCAPIETRA, G. ZURFLUH