Folien

Werbung
5 Indexierung von Geodaten
5.1 Quadtree
5.2 R-Baum
5.3 K-D‐Baum
5.4 BSP‐Baum
5.5 Gridfile
5.6 Zusammenfassung
B
4
7
J
3
27
17
5
26
11
E
A
13
28
G
9
31
D
K
29
18
24
28
8
17
I
21
22
C
15
23
H
F
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
415
Indexierung von Geodaten
→Beschleunigung von Anfragen durch gezieltes
Zugreifen auf relevante Tupel
Anfragetypen
• Punktanfrage
• Bereichsanfrage
• Nächster Nachbar Anfrage
Probleme:
•
•
•
•
Erhaltung der topologischen Struktur
stark variierende Dichte der Objekte
dynamische Reorganisation
Objektdarstellung: Punktobjekte sowie Objekte mit
Ausdehnung
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
416
Indexierung von Geodaten
→für eindimensionale Daten: B-Baum
obere (U) und untere (L)
Grenze für Anzahl der
Zeiger meist : 2*L = U
einfügen
Schlüsselwert
Datenzeiger
Knoten
• immer auf Blattebene
• aufteilen falls mehr als Knotenzeiger
U – 2 Schlüssel, Median in den Elternknoten verschieben,
kann sich bis zur Wurzel fortsetzen
löschen
• interner Knoten: durch Wert eines Kindes ersetzen, kann
sich bis zu Blättern fortsetzen
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
417
Indexierung von Geodaten
• Blatt: Neuverteilung zwischen Geschwisterknoten falls
möglich, ansonsten Verschmelzen, kann sich bis zur
Wurzel fortsetzen
sehr effiziente Datenstruktur für Plattenspeicher
• O(log n) für alle Operationen (suchen, einfügen,
löschen)
• für das Auffinden eines Schlüssels kann als maximale
Anzahl von Knotenzugriffen
garantiert
werden
keine degenerierten Fälle
• balancieren selten notwendig, da Updates meist nur
einen Knoten betreffen
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
418
Indexierung von Geodaten
• gute Platzausnutzung auf Grund des garantierten
minimalen Belegungsfaktors
→B+-Baum
Unterscheidung zwischen inneren Knoten und Blättern
• Datenzeiger befinden sich ausschließlich in Blattknoten
Blätter untereinander verkettet
Vorteile
• bessere Durchlaufzeiten (traversal performance)
• höhere Sucheffizienz
• höhere Speichereffizienz
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
419
Indexierung von Geodaten
→eindimensionale Einbettungen
Transformation mehrdimensionaler Punktobjekte für
eindimensionale Repräsentation, z.B. mit B+-Bäumen
möglichst Wahrung der topologischen Struktur
Ansatz
• Partitionierung des Datenraums D durch gleichförmiges
Raster
• eindeutige Nummer pro Zelle legt Position in der totalen
Ordnung fest
• Reihenfolge bestimmt eindimensionale Einbettung: space
filling curve
• jede Zelle kann bei Bedarf separat (und rekursiv) unter
Nutzung desselben Grundmusters weiter verfeinert werden
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
420
Indexierung von Geodaten
Beispiele raumfüllender Kurven:
aus: http://dbs.uni-leipzig.de/file/dw-kap5.pdf
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
421
Indexierung von Geodaten
→Beispiel für punktförmige Geodaten:
Wetterstationen
Attribute
•
•
•
•
Position
Eigentümer
Baujahr
analog/digital
D
A
I
E
H
F
C
K
J
B
G
aus: http://de.wikipedia.org/
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
422
Indexierung von Geodaten
→Sortierung von Punkten mittels Z-Ordnung
rekursive Aufteilung
des Raumes in
Quadranten bis jeder
Quadrant max. einen
Punkt enthält
D
E
A
I
01
H
F
11
C
B
K
J
00
G
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
10
423
Indexierung von Geodaten
→Sortierung von Punkten mittels Z-Ordnung
rekursive Aufteilung
des Raumes in
Quadranten bis jeder
Quadrant max. einen
Punkt enthält
D
A 0101
C
0100
B
E
I
H
F
0110
11
K
J
00
G
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
10
423
Indexierung von Geodaten
→Sortierung von Punkten mittels Z-Ordnung
rekursive Aufteilung
des Raumes in
Quadranten bis jeder
Quadrant max. einen
Punkt enthält
D0111
A 0101
C
0100
B
E
F
0110
I 1111
H
1100
K
1110
J
1011
00
G
1000
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
423
Indexierung von Geodaten
→Sortierung von Punkten mittels Z-Ordnung
rekursive Aufteilung
des Raumes in
Quadranten bis jeder
Quadrant max. einen
Punkt enthält
011101
D
A 0101
C
0100
B, C, A, F, D, E,
G, J, H, K, I
B
E
011110
F
0110
I 1111
H
1100
K
1110
J
1011
00
G
1000
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
423
Indexierung von Geodaten
→effiziente Berechnung des Z-Wertes durch BitInterleaving
Binärdarstellung der x- und
y-Koordinate der Quadranten
„Verschränkung“ der Bits
ergibt die Z-Adresse d.h.
x-Koordinate
y-Koordinate
011
010
11 0101
0111
1101
1111
10 0100
0110
1100
1110
01 0001
0011
1001
1011
00 0000
0010
1000
1010
01
10
11
0 0 1 1 1 0
00
Z-Adresse
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
424
Indexierung von Geodaten
Beispiel: Bereichsanfrage
D
• Berechnung der Z-Adressen
des Anfragefensters:
Min= 20, Max=30
• suche nach Min
• alle Punkte deren Adresse ≤
Max ist überprüfen
22
0
16
20
24
B
C
A
31
29
A
Min
I
H
F
C
K
J
B
G
42
30
F
Max
E
32
D
E
40
G
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
44
J
H
K
52
56
I
425
Indexierung von Geodaten
→Probleme
nur für Punktdaten geeignet
keine exakte Lösungsmenge, vom Index gelieferte
Daten müssen überprüft werden
Eignung abhängig von der Lage des Anfragefensters
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
426
Indexierung von Geodaten
→Unterscheidung von Indexen nach
Datentypen, die indiziert werden können
• Punkte (Point Access Method) oder
Flächen (Spatial Access Method)
Prinzip der Raumaufteilung:
datenbasiert
(tree)
raumbasiert
(trie)
Struktur abhängig von Einfügereihenfolge
ja
nein
Verwaltung von „totem Raum“
nein
ja
ja
nein
garantierte Speicherplatzausnutzung
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
427
5.1 Quadtree
→Grundprinzip:
nw
no
sukzessive Aufteilung des Raumes
sw so
in Quadranten
Suchbaum bei dem jeder Knoten 4 Kinder hat
→Aufteilung sowohl raum- als auch datenbasiert
möglich
→kann zur Indexierung von Punkten und Flächen
verwendet werden
→nicht balanciert, kann degenerieren
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
428
Quadtree
→Point-Quadtree (datenbasiert)
Indexierung von Punkten
Datenzeiger sowohl in internen
Knoten, als auch Blättern
Knoten
Schlüsselwert
Datenzeiger
Knotenzeiger
einfügen
• Suche endet bei Nullpointer, an dieser Stelle auf neuen
Knoten verweisen
löschen von Knoten problematisch
• Unterbaum, dessen Wurzel der zu löschende Knoten ist,
entfernen
• Knoten wieder einfügen
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
429
Quadtree
Beispiel Aufbau:
D
11
17
F
I
E
A
H
F
C
K
J
B
G
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
430
Quadtree
Beispiel Aufbau:
D
11
17
F
I
E
A
H
F
C
E
K
10
20
J
B
G
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
430
Quadtree
Beispiel Aufbau:
D
11
17
F
I
E
A
H
F
C
E
K
10
20
J
8
23
2
19
D
A
B
G
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
430
Quadtree
Beispiel Aufbau:
D
11
17
E
A
H
F
C
C
10
20
F
I
E
K
5
15
J
8
23
2
19
4
8
D
A
B
B
G
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
430
Quadtree
Beispiel Aufbau:
D
11
17
E
A
F
H
F
C
10
20
I
E
J
5
15
I
23
9
C
K
21
20
J
8
23
2
19
4
8
15
6
24
14
D
A
B
G
K
19
18
B
G
H
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
430
Quadtree
Bereichsanfrage: Min(5, 16), Max(20,19)
• 4 Vergleiche pro Knoten
F
11
17
E
Min.x > x → w nicht
Min.y > y → s nicht
Max.x < x → o nicht
Max.y < y → n nicht
E
A
J
5
15
23
9
Max
I
H
F
C
C
10
20
D
K
Min
I
21
20
J
B
G
8
23
2
19
4
8
15
6
24
14
19
18
D
A
B
G
K
H
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
431
Quadtree
ungünstige Einfügereihenfolge
B
4
8
D
J
2
19
15
6
23
9
E
A
10
20
G
8
23
K
24
14
E
A
Max
H
F
C
I
K
Min
21
20
5
15
J
D
I
19
18
C
11
17
B
G
H
F
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
432
Quadtree
→Nachteile
hoher Speicherplatzverbrauch
• 4 Nullpointer pro Blatt, weitere in inneren Knoten
Löschen aufwändig
k Vergleiche bei Punktanfragen, 2k bei Bereichsanfragen pro Knoten
12
16
Variante: Pseudo-Quadtree
• zur Unterteilung werden nicht
die Datenpunkte verwendet
9
20
→ beim Löschen keine ReD E
A F
organisation notwendig
• Speicherung der Daten nur in Blättern
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
6
10
C
B
20
10
20
21
G J
H I
433
Quadtree
→Point-Quadtree (raumbasiert)
rekursive Aufteilung des Raumes in Quadranten, bis
jeder Quadrant die maximal vorgegebene Anzahl von
Punkten enthält
Ausdehnung des Raumes muss bekannt sein
D
B
A
C
C
F
G
J
H
K
I
E
A
H
F
K
I
J
B
D
E
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
G
434
Quadtree
interne Knoten enthalten nur
Knotenzeiger
Daten nur in Blättern gespeichert
Struktur abhängig von der Lage
der Punkte
einfügen
• Suche endet auf Null‐Pointer: Blatt einfügen
• Suche endet auf Blatt: Blatt durch neuen internen Knoten
ersetzen, beide Daten einfügen
löschen
• gelöscht wird immer ein Blatt
• falls Elternknoten anschließend nur ein Kind hat, wird er
durch das Kind ersetzt
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
435
Quadtree
→Region-Quadtree (raumbasiert)
Indexierung von Flächen
Zerlegung des Raumes bis der Block komplett leer
oder von einem Objekt komplett überdeckt wird
II
X
II
I
X
III
I
III
I/III
X
I
III
IX
IX
IX
IX
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
436
5.2 R-Baum
→der R-Baum ist der Prototyp einer mehrdimensionalen Erweiterung der klassischen B-Bäume
die Wurzel hat mindestens zwei Kinder
jeder innere Knoten hat zwischen m und M Kinder
(Mehrwegbaum)
Knotenzeiger
M und m ≤ M / 2 sind dabei vorher
interner
festgelegte Parameter
Knoten
…
für jeden Eintrag in einem inneren
MUR
Knoten ist das kleinste Rechteck,
Blatt
das die Rechtecke im
…
Kindknoten beinhaltet, angegeben
Datenzeiger
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
437
R-Baum
lokale Gruppierung zur Clusterbildung
überlappende Cluster (je mehr Überlappung desto
ineffizienter)
Objektspeicherung nur in den Blättern, innere
Knoten dienen zur Navigation
höhenbalancierte Baumstruktur (d.h. alle Kinder
jedes Knotens im Baum haben jeweils etwa gleich
viele Nachkommen)
dynamische Indexstruktur (Insert, Update und
Delete möglich)
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
438
R-Baum
Aufbau
a
e
c
A
B
g
j
f
D
h
b
C
a
c
f
e
g
j
b
d
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
i
d
h
i
439
R-Baum
Aufbau
a
e
B
g
c
A
I
j
f
II
D
h
b
C
A
a
c
f
B
C
e
g
j
i
d
D
b
d
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
h
i
439
R-Baum
Aufbau
a
e
B
g
c
A
I
j
f
II
D
h
b
I
II
C
A
a
c
f
B
C
e
i
g
j
d
D
b
d
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
h
i
439
R-Baum
→Suche
der Baum wird von der Wurzel zu den Blättern
rekursiv durchsucht
• es wird stets nur ein Pfad durchlaufen
• wenn der gesuchte Datensatz nicht in diesem Unterbaum ist,
wird der nächste Suchpfad durchlaufen
die Pfadauswahl ist willkürlich
keine Garantie für eine gute Performance
im worst case müssen alle Pfade durchsucht werden
(wegen Überlappungen)
Suchalgorithmen versuchen, möglichst viele
irrelevante Regionen auszuschließen („Pruning“)
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
440
R-Baum
Suche in inneren Knoten:
• prüfe jeden Eintrag darauf,
ob dieser S schneidet
• für alle schneidenden Einträge
setze die Suche in deren Kindern fort
Suche in Blattknoten:
• prüfe alle Einträge darauf, ob sie S schneiden
• übernehme alle korrekten Objekte in die Ergebnismenge
bestmögliche Suche in R-Bäumen bei minimalen
Überlappungen und minimalem toten Raum
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
441
R-Baum
in einem R-Baum seien alle
Index-Einträge gesucht, die
ein Suchrechteck S schneiden
a
e
c
A
I
B
S g
j
f
II
D
h
b
I
II
C
A
a
c
f
B
C
e
i
g
j
d
D
b
d
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
h
i
442
R-Baum
→einfügen
nach räumlichen Kriterien wird die beste Kindseite
gesucht (ChooseLeaf)
das Objekt wird dort eingefügt, falls Platz ist
falls dort kein Platz ist, wird die Speicherseite mit
einer Überlaufbehandlung (SplitNode) geteilt
(minimale Überlappung, toter Raum möglichst klein)
Intervall des Elternknotens muss dem neuen Objekt
angepasst werden (AdjustTree)
wird die Wurzel durch Teilung erreicht, erstelle eine
neue Wurzel, deren Kinder die zwei geteilten Knoten
der alten Wurzel sind
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
443
R-Baum
einfügen von k entweder in C oder D
in D braucht k mehr Fläche, aber erzeugt keine
Überlappung
a
e
D
h
b
i
d
k
A
j
f
II
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
D
h
b
C
B
g
c
j
I
e
B
f
II
C
a
g
c
A
I
i
d
k
444
R-Baum
Heuristik
• füge ein neues Objekt immer in den Knoten ein, bei dem es
die kleinste Volumenvergrößerung bewirkt
• fällt es ins Innere eines MUR, ist keine Vergrößerung nötig
• wenn es mehrere Möglichkeiten gibt, wähle den Knoten mit
kleinstem Volumen
Überlaufbehandlung
• soll ein neuer Eintrag in einen vollen Knoten erfolgen, müssen die M + 1 Einträge auf zwei Knoten aufgeteilt werden
• bei nachfolgenden Suchvorgängen sollten möglichst selten
beide Teilbäume durchsucht werden müssen
• möglichst kleine MURs bedeuten möglichst geringe
Überlappung mit anderen MURs
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
445
R-Baum
• berechne die minimale Gesamtfläche der beiden Rechtecke
und minimiere den toten Raum
schlechter
Split
besserer
Split
• Entscheidung, wie genau Splits aussehen, ist nicht trivial
• alle Objekte des alten MURs können auf verschiedene Arten
auf zwei neue MURs aufgeteilt werden
• das Volumen beider MURs soll möglichst klein bleiben
• naive Überprüfung von Zerlegung in alle möglichen Untermengen hat exponentiellen Aufwand (praktisch unmöglich)
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
446
R-Baum
Verfahren zur Überlaufbehandlung mit quadratischem
Aufwand
• berechne für jedes Objektpaar das nötige MUR, wähle das
Paar mit größtem MUR
• da diese beiden Objekte nicht in einem MUR vorkommen
sollten, benutze sie als Startpunkte für zwei neue MURs
• berechne für alle anderen Objekte die Differenz der
notwendigen Volumenvergrößerung bezüglich beider MURs
• füge das Objekt mit der größten Differenz in das
entsprechende MUR ein und berechne das MUR neu
• wiederhole das Verfahren für alle noch nicht zugewiesenen
Objekte
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
447
R-Baum
Verfahren mit linearem Aufwand zur Bestimmung der
Startpunkte
• in jeder Dimension:
finde das Rechteck mit der größten kleineren Koordinate
sowie das Rechteck mit der kleinsten größeren Koordinate
bestimme den Abstand zwischen diesen beiden Koordinaten
und normalisiere ihn bezüglich der Gesamtausdehnung
der Menge aller Rechtecke in dieser Dimension
• bestimme die beiden Startpunkte für die MURs als zwei
extrem außen liegende Objekte (größter normalisierter
Abstand über alle Dimensionen)
das lineare Verfahren ist meist ausreichend wegen
ähnlicher Qualität der Zerlegung, d.h. Minimalität der
entstehenden Überlappung
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
448
R-Baum
→Beispiel Überlaufbehandlung
I
II
m
A
B
C
D
a
e
a
c
f
b
d
j
f
k
II
e
g
j
B
g
c
A
I
h
i
b
C
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
D
h
i
d
k
449
R-Baum
→Beispiel Überlaufbehandlung
x-Richtung:
• wähle e und j
• dx = 2/11 ≈ 0,18
y-Richtung:
9
m
• wähle m und j
• dy = 3,5/9 ≈ 0,43
da dy > dx
werden m und j gewählt
3,5
e
g
2
j
11
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
450
R-Baum
→Beispiel Überlaufbehandlung
einfügen von g
• zu m: 24
• zu j: 41,5
• Differenz der Volumenvergrößerung: 17,5
9
m
einfügen von e
• zu m: 14
• zu j: 52
• Differenz der Volumenvergrößerung: 38
3,5
e
g
2
j
11
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
451
R-Baum
→Beispiel Überlaufbehandlung
einfügen von g
• zu m: 24
• zu j: 41,5
• Differenz der Volumenvergrößerung: 17,5
9
m
einfügen von e
• zu m: 14
• zu j: 52
• Differenz der Volumenvergrößerung: 38
3,5
e
g
2
j
11
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
451
R-Baum
→Beispiel Überlaufbehandlung
E
a
II
I
e
g
c
I
m
f
A
II
D
h
b
A
B
E
C
B
j
i
D
C
d
k
j
a
c
f
e
m
g
b
d
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
k
h
i
452
R-Baum
löschen
• suche das Blatt mit dem Eintrag (FindLeaf)
• lösche den Eintrag aus Blatt (DeleteRecord)
• Baum wird verdichtet (CondenseTree), falls der Knoten nun
zu wenige Einträge hat
• beim Verdichten wird ein Knoten komplett gelöscht und alle
nicht zu löschenden Einträge des Knoten wieder eingefügt
• hat die Wurzel nur noch ein Kind, wird das Kind die neue
Wurzel
Updates
• wird ein Datensatz aktualisiert, kann sich sein MUR ändern
• der Indexeintrag muss dann gelöscht, aktualisiert und wieder
neu eingefügt werden
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
453
R-Baum
→R+‐Baum
a
Überlappungen benachbarter
MURs sind grundsätzlich verboten
dadurch kann es dazu kommen,
dass gleiche Blätter mehrfach im
Baum auftreten
Verbesserung der Sucheffizienz,
aber ähnliche Skalierbarkeit wie
R-Bäume
A
a
e
e
g
j
c
B
e
A
B
I
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
j
f c
D
h
b
i
C
I
II
C
b
d
II
k
d
E
f
g
E
D
h
i
k
454
R-Baum
Unterschiede zum R-Baum
• einfügen: Datenobjekt kann in mehreren Blättern eingefügt
werden
• einfügen: Splitting setzt sich abwärts fort, da keine
Überlappungen zugelassen sind
• Löschen: es gibt keine minimale Anzahl von Kindern mehr
der Hauptvorteil von R+-Bäumen ist die verbesserte
Suchleistung
bei Punktanfragen bis zu 50 % Zugriffsersparnis
Nachteil ist die chronische Unterbelegung von Knoten
durch sehr viele Splits
R+-Bäume degenerieren häufig mit steigender Anzahl
von Änderungen
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
455
5.3 K-D‐Baum
→ k-dimensionaler, binärer Suchbaum
→auf jeder Ebene erfolgt die Aufteilung des
Raumes orthogonal in einer Dimension Diskriminante:
Datenzeiger die zur Teilung
→ ein Vergleich
verwendete
Schlüssel
Dimension
→zur Indexierung von Punkten
Knoten
→Variante für Flächen: Bintree
Knotenzeiger
→nicht balanciert
→ein K-D-Baum für n Punkte benötigt
O(n) Platz und kann in
O(n log n) Zeit konstruiert werden
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
456
K-D‐Baum
→Beispiel: datenbasiert, abwechselnd in x- und yDimension unterteilt
F
15
23
D
x
C
K
8
17
B
29
18
y
D
4
7
9
31
x
A
3
27
y
24
28
x
G
13
28
y
17
5
y
K
x
J
H
21
22
H
C
I
26
11
E
y
F
J
x
I
E
A
B
G
y
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
457
K-D‐Baum
Aufteilung durch Datenpunkte oder beliebig
Wahlmöglichkeit bei der Dimension für die Aufteilung
• alternierend oder Dimension mit der größten Ausdehnung
Wahl der Splitposition
• Median oder Mittelwert
65
4
1
2
3
4 3
2
2
2
3
1
3
1
3
3
2
1
2
3
2
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
458
K-D‐Baum
→Bestimmung der Splittinggeraden
erfordert die Bestimmung des Medians von n
Elementen
komplexe Verfahren zur Medianbestimmung in O(n)
oder:
• Sortierung aller Punkte vorher in zwei Listen, jeweils für xund y-Koordinate
• bei jeder Teilung Bildung der entsprechend sortierten
Teillisten → Durchlauf in linearer Zeit möglich
• Medianbestimmung geht dann in O(1) und Erzeugung der
Teillisten in O(n)
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
459
K-D‐Baum
→Bintree
analog zum Region-Quadtree, nur dass die Unterteilung
nicht in Quadranten sondern abwechselnd nach einer
der k Dimensionen erfolgt
20 x
8
12 y
20
28
20 y
II
4 x
10 y
2 x
8 x
8 y
2 x
8 y
I
III
23 x
24 y
8 x
I/III
10 y
4 x
16 y
III
I
II
24
28 x
X
20
24 y
x
X
12
I
III
IX
8 y
IX
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
4
23
460
K-D‐Baum
→löschen
beim binären Suchbaum: der zu löschende Knoten
wird entweder durch seinen direkten Vorgänger bzw.
F
Nachfolger ersetzt
15
x
23
Problem: Ordnung der Elemente
K
29
nach mehreren Dimensionen C 8 y
y
17
18
• gesucht wird der Knoten der
B
D
J
I
bzgl. der Diskriminante
4
9
26
24
x
x
x
x
des zu löschenden
7
31
11
28
Knotens den nächstE
G
H
größeren bzw. kleineren
A
3
13
17
21
y
y
y
y
Wert hat
27
28
5
22
• bei gleicher Diskriminante
muss nur ein Teilbaum betrachtet werden, andernfalls beide
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
461
K-D‐Baum
→löschen
beim binären Suchbaum: der zu löschende Knoten
wird entweder durch seinen direkten Vorgänger bzw.
F
Nachfolger ersetzt
15
x
23
Problem: Ordnung der Elemente
K
29
nach mehreren Dimensionen A 3 y
y
27
18
• gesucht wird der Knoten der
B
D
J
I
bzgl. der Diskriminante
4
9
26
24
x
x
x
x
des zu löschenden
7
31
11
28
Knotens den nächstE
G
H
größeren bzw. kleineren
13
17
21
y
y
y
Wert hat
28
5
22
• bei gleicher Diskriminante
muss nur ein Teilbaum betrachtet werden, andernfalls beide
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
461
5.4 BSP-Baum
→Binary Space Partitioning (BSP)
rekursive Zweiteilung des n-dimensionalen Raumes
durch (beliebige) (n-1)-dimensionale Hyperebenen (in
2D: Geraden) → verallgemeinerter K-D‐Baum
→meistens zur Speicherung von Flächen oder
Geraden verwendet
→Klassenvariablen der Knoten eines BSP-Baums
class Node{
Hyperebene ph;
Node leftChild;
Node rightChild;
Set oSet;
}
//Splitebene (anstelle der Diskriminante)
//linkes Kind, liegt „vor“ der Splitebene
//rechtes Kind, liegt „hinter“ der Splitebene
//Menge der Objekte, die in der Splitebene liegen
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
462
BSP-Baum
→Pseudocode für den Aufbau eines BSP-Baumes
Node buildBSPtree(o) {
// o ist die Menge der Objekte
if o.isEmpty() return null;
Node N = new Node();
N.ph = choosePartitioningHyperplane(o);
Set fSet = new Set();
//zur Speicherung der Objekte vor ph
Set bSet = new Set();
//zur Speicherung der Objekte hinter ph
for each Object z in o do{
if z is coincident to ph, add z to N.oSet;
if z is in front of ph, add z to fSet;
if z is behind ph, add z to bSet;
if z spans ph, split z and add pieces to fSet and bSet;
}N.leftChild = buildBSPTree(fSet);
N.rightChild = buildBSPTree(bSet);
return N;
}
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
463
BSP-Baum
→Bestimmung der Lage eines Objektes z zur Splitebene g
im zweidimensionalen Splitgerade: ax + by + c = 0
berechne ax + by + c für alle Knoten von z
• falls alle Werte < 0
y
befindet sich z „vor“ g
• falls alle Werte > 0
4
befindet sich z „hinter“ g
• falls alle Werte = 0
2
liegt z auf g
• andernfalls, wird das Objekt
von der Splitgeraden geschnitten
und muss aufgeteilt werden
O2
O1
Splitgerade
x
2
4
6
Splitgerade: 4x – 3y +3 = 0
Einsetzen der Punkte von O2 (1,5) (4,5)
4-15+3 = -8
16-15 +3 =4
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
464
BSP-Baum
Ziele bei der Wahl von Splitebenen
• balancierter Baum
• aufteilen von Objekten vermeiden
• Splitebenen orthogonal zu den Achsen
Heuristik zur Bestimmung der Kosten einer Splitebene
Differenz der Anzahl von Objekten vor und hinter Splitebene
15 * Anzahl aufzuteilender Objekte
5 falls Ebene nicht orthogonal zu einer Achse
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
465
BSP-Baum
→eine Splitebene, die keine Objekte aufteilt, wird
als Free Partition bezeichnet
wählt man den Teil einer Objektumrandung, der eine
BSP-Region schneidet als Splitebene, erhält man eine
Free Partition bzgl. dieser Region
Voraussetzung ist, dass sich die Objekte nicht
schneiden
Objekt
Region
Splitgeraden
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
466
BSP-Baum
→Anwendungen in der Computergraphik
z.B. Sichtbarkeitsbestimmung, Ray Tracing
Flächen auf derselben Seite wie der Augpunkt
• können Flächen auf der anderen Seite verdecken
• können von Flächen auf der anderen Seite nicht verdeckt
werden
Bestimmung der Zeichenreihenfolge
• Back-to-front: Objekte im Hintergrund
werden zuerst gezeichnet und durch die
Objekte im Vordergrund übermalt
→ gesucht: Ordnung der Objekte nach
der „relativen Entfernung“ zum Betrachter
1
2
3
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
4
467
BSP-Baum
• bestimme die Lage des Augpunkts zu der Splitebene jedes
Knotens
• bestimme Ordnung der Objekte durch Inorder Durchlauf im
BSP-Baum
1. Teilbaum der nicht
4
auf der Seite des
6
3
Betrachters liegt
5
7
1
2. Knoten
8
2
3. Teilbaum der auf der
Seite des Betrachters liegt
5
2
1
4
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
7
3
• Inorder Durchlauf im binären Suchbaum
1. linken Teilbaum
2. Knoten
3. rechten Teilbaum
8
6
5
2
1
6
4
3
8
7
468
BSP-Baum
→Beispiel
Aufbau eines BSP-Baumes durch Einfügen der Objekte
(ohne Verwendung der Heuristik)
• 3-dimensionale Objekte (senkrechte Wände)
0
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
0
469
BSP-Baum
→Beispiel
Aufbau eines BSP-Baumes durch Einfügen der Objekte
(ohne Verwendung der Heuristik)
• 3-dimensionale Objekte (senkrechte Wände)
0
0
1
1
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
469
BSP-Baum
→Beispiel
Aufbau eines BSP-Baumes durch Einfügen der Objekte
(ohne Verwendung der Heuristik)
• 3-dimensionale Objekte (senkrechte Wände)
0
0
1
2
2
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
1
469
BSP-Baum
→Beispiel
Aufbau eines BSP-Baumes durch Einfügen der Objekte
(ohne Verwendung der Heuristik)
• 3-dimensionale Objekte (senkrechte Wände)
3
0
1
0
3
2
2
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
1
469
BSP-Baum
→Beispiel
Aufbau eines BSP-Baumes durch Einfügen der Objekte
(ohne Verwendung der Heuristik)
• 3-dimensionale Objekte (senkrechte Wände)
3
0
1
0
3
2
2
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
4
1
469
BSP-Baum
→Beispiel
Aufbau eines BSP-Baumes durch Einfügen der Objekte
(ohne Verwendung der Heuristik)
• 3-dimensionale Objekte (senkrechte Wände)
3
0
0
1
3
4b
2
2
4b
4f
1
4f
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
469
BSP-Baum
→Beispiel
Aufbau eines BSP-Baumes durch Einfügen der Objekte
(ohne Verwendung der Heuristik)
• 3-dimensionale Objekte (senkrechte Wände)
3
0
0
1
3
5f
2
4f
6ff
6b
2
4b
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
5f
1
5b
6fb
5b
4b
4f
6ff
6fb
6b
469
BSP-Baum
Zeichenreihenfolge: 3 , 4b , 5b , 0
6fb
6ff
2
1
0
4f
4b
3
aus: http://www-lehre.inf.uos.de/~cg/2008/skript/Applets/bsp-tree/bsp-tree.html
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
470
BSP-Baum
Zeichenreihenfolge: 3 , 4b , 5b , 0 , 2 , 6ff
6fb
6ff
2
1
0
4f
4b
3
aus: http://www-lehre.inf.uos.de/~cg/2008/skript/Applets/bsp-tree/bsp-tree.html
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
470
BSP-Baum
Zeichenreihenfolge: 3 , 4b , 5b , 0 , 2 , 6ff , 4f, 6fb
6fb
6ff
2
1
0
4f
4b
3
aus: http://www-lehre.inf.uos.de/~cg/2008/skript/Applets/bsp-tree/bsp-tree.html
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
470
BSP-Baum
Zeichenreihenfolge: 3 , 4b , 5b , 0 , 2 , 6ff , 4f, 6fb , 1 , 5f, 6b
6fb
6ff
2
1
0
4f
4b
3
aus: http://www-lehre.inf.uos.de/~cg/2008/skript/Applets/bsp-tree/bsp-tree.html
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
470
5.5 Gridfile
→Grundidee:
k-dimensionaler, dynamischer Array als Index (auf
Platte)
Index enthält (außer ggf. Verwaltungsinformation) nur
Verweise auf Datenseiten (Buckets)
die Daten selbst sind in (großen) Buckets gespeichert
→zwei Plattenzugriffe für exakte Anfragen:
unabhängig von Werteverteilungen, Operationshäufigkeiten und Anzahl der gespeicherten Sätze
→nur für Punktdaten
→Aufteilung erfolgt datenbasiert
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
471
Gridfile
→Komponenten:
k Skalierungsvektoren (Scales)
Si (mit i von 1 bis k)definieren
die Zellen (Grid) auf dem kdim. Datenraum D
Zell- oder Grid-Directory (GD):
dynamische k-dim. Matrix zur
Abbildung von D auf die
Menge der Buckets
Bucket: Speicherung der
Objekte einer oder mehrerer
Zellen (Bucketbereich BB)
Datenraum
d2
Zelle
Scales
S1
Grenzwert im d1
Datenraum
Position im GD
S2
Grid-Directory
Buckets
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
472
Gridfile
→Eigenschaften
1:1-Beziehung zwischen Zellen und Elementen von GD
Element von GD = Zeiger auf Bucket
n:1-Beziehung zwischen Zellen und Buckets
Zellen die in einem Bucket zusammengefasst werden,
müssen ein Rechteck bilden
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
473
Gridfile
→exakte Anfrage
bestimme mittels der Scales für jede Dimension den
Bereich, in dem Punkt liegt (binäre Suche) und lese die
Positionen des dazugehörigen GD-Eintrags aus (→ kein
Plattenzugriff , wenn Scales im Hauptspeicher)
einlesen des Grid Directory (→ erster Plattenzugriff)
zur Bestimmung des Buckets
einlesen des Buckets (→ zweiter Plattenzugriff)
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
474
Gridfile
→einfügen
suche nach dem einzufügenden Punkt und falls
möglich, Punkt im gefundenen Bucket einfügen
bei Bucketüberlauf
• neuen Bucket hinzufügen, GD aktualisieren
• falls Dimensionsverfeinerung notwendig, Scales aktualisieren
• Wahl der Dimension für die Dimensionsverfeinerung z.B.
alternierend oder “längstes” Intervall
• Wahl der Position an der geteilt wird z.B. Mitte oder lokaler
Median
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
475
Gridfile
Beispiel:
einfügen eines Punktes
mit Bucketüberlauf
ohne Dimensionsverfeinerung
S1
S2
0
6
1
2
0
10
1
2
d2
D
E
A
H
10
F
I
C
J
III
ADE
2
B
G
II
HIG
1
1
2
BCF
I
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
d1
6
476
Gridfile
d2
Beispiel:
einfügen eines Punktes
mit Bucketüberlauf
ohne Dimensionsverfeinerung
S1
S2
0
6
1
2
0
10
1
2
D
E
A
H
10
F
I
C
J
III
ADE
2
B
IJG
1
1
2
BCF
G
IV
II
H
I
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
d1
6
476
Gridfile
Beispiel:
einfügen eines Punktes
mit Bucketüberlauf mit
Dimensionsverfeinerung
S1
S2
0
6
1
2
0
10
1
2
IJG
JG
1
2
E
A
H
10
F
K
I
5
BCF
J
III
IV
H
1
D
C
ADE
2
d2
B
G
II
I
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
d1
6
477
Gridfile
Beispiel:
einfügen eines Punktes
mit Bucketüberlauf mit
Dimensionsverfeinerung
S1
S2
0
6
1
2
0
5
10
1
3
2
IJG
1
1
2
E
A
H
10
F
K
I
5
BCF
J
III
B
IV
H
2
D
C
ADE
3
d2
II
G
V
I
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
d1
6
477
Gridfile
Beispiel:
einfügen eines Punktes
mit Bucketüberlauf mit
Dimensionsverfeinerung
S1
S2
0
6
1
2
0
5
10
1
3
2
IJG
JG
1
1
2
E
A
H
10
F
K
I
5
BCF
J
III
B
IV
H
2
D
C
ADE
3
d2
II
G
V
IK
I
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
d1
6
477
Gridfile
→löschen
verschmelzen von Buckets
• idealerweise mit Splitpartner (Buddy),
sofern dieser nicht weiter aufgeteilt
wurde → Buddy-Baum
• mit Nachbarzellen, aufwändig
• nicht in allen Fällen möglich
Bucketbereich
I
I
III
II
II
IV
IV
III
V
V
IV
Dimensionsverfeinerungen werden
i.A. nicht zurückgenommen
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
I
II
478
5.6 Zusammenfassung
→Eindimensionale Einbettungen
lineare Sortierung mehrdimensionaler Punkte
Z-Ordnung, Hilbert‘s Kurve , Gray Code
→Quadtree
Point-Quadtree: Aufbau, Bereichsanfrage
Region-Quadtree
→R-Baum
Aufbau
Suche
Einfügen, Überlaufbehandlung
R+-Baum
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
479
Zusammenfassung
→K-D-Baum
Bestimmung der Splitgeraden
Löschen
Bintree
→BSP-Baum
Datenstruktur
Wahl der Splitebene
Rendering
→Gridfile
Einfügen, Überlaufbehandlung
Löschen
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
480
Zusammenfassung
präsentieren
GIS
erfassen
verwalten
analysieren
Auswertung
von
Anfragen
Objekte
Geometrie
Indexe
Vektor
Spatial Databases und GISe, Kap.5 / K.N., S.T. / SomSem 2009
Approximationen
481
Herunterladen