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