820 likes | 940 Views
Spatial Join. Berechnung des Spatial Joins/Join Operation. aufgeteilt in zwei Schritte:. Filter Step Refinement Step. Filter Step:. Minimum Bounding Rectangle (mbb) Plane Sweep Algorithmus Ergebnis: Kandidatenmenge. Refinement Step:.
E N D
Spatial Join Berechnung des Spatial Joins/Join Operation • aufgeteilt in zwei Schritte: • Filter Step • Refinement Step • Filter Step: • Minimum Bounding Rectangle (mbb) • Plane Sweep Algorithmus • Ergebnis: Kandidatenmenge • Refinement Step: • Entfernung der mbbs und vergleich der eigentlichen • Objekte
Spatial Join Sweep Algorithmen • Plane-Sweep-Technik verbreitetes Verfahren um den Schnitt • zwischen Objekten zu bestimmen • Um das Rechteck-Schnitt Problem zu lösen, betrachtet man • zunächst das Segment-Schnitt Problem • Gegeben: Menge horizontaler und vertikaler Streifen • Gesucht: alle Paare sich schneidender Segmente • Vertikale Gerade, genannt Sweep- Linie, wird von links • nach rechts durch die Ebene geschoben. Dabei wird der • Schnitt der Geraden mit der Objektmenge beobachtet
Spatial Join Sweep Algorithmen • Alle aktuell die Sweep-Linie schneidenden Elemente werden • im Speicher gehalten Y-Achse Vertikales Segment Sweepline X-Achse
Spatial Join Sweep Algorithmen • Speichere alle Paare, sich schneidende Segmente, in einer • Ergebnismenge ab
Spatial Join Rechteckschnitt-Problem • Drei mögliche Lagen der überlappenden Rechtecke 2. 1. 3.
Spatial Join Rechteckschnitt-Problem 2. 1. • Mittels Segmentschnitt-Problem können die Fälle 1 und 2 • gelöst werden
Spatial Join Rechteckschnitt-Problem 3. • Kann gelöst werden, indem in jedem Rechteck ein innerer • Punkt ausgewählt wird • ist ein Punkt in einem anderen Rechteck enthalten, dann • überschneiden sich auch die Rechtecke
Spatial Join Rechteckschnitt-Problem • ist ein Punkt in einem anderen Rechteck enthalten, dann • überschneiden sich auch die Rechtecke • Ergebnis ist Reduktion auf das Punkteinschlußproblem • Gesucht sind alle Punkte, die links und rechts sowie oben • und unten von Segmenten eingeschlossen sind • Zwei Schritte: • Ergebnisbildung entlang der x-Achse • Überprüfung entlang der y-Achse
Spatial Join Rechteckschnitt-Problem
Spatial Join Partition Based Spatial Merge Join • Annahme: • R und S sind die Eingaben des Joins • Eingaben sind Folge von Tupeln • jedes Tupel hat räumliches Attribut, welches im Join • benutzt wird • jedes Tupel hat eindeutigen Identifizierer • OID des Tupels
Spatial Join Partition Based Spatial Merge Join • Filter Step: • Einlesen aller Tupel der ersten Relation R • Key-Pointer Element bestehend aus OID und mbb RKP • RKP als temporäre Relation auf der Festplatte • speichern • Identisch für Eingabe S • Ziel: mbbs in RKP finden, die mit einem beliebigen • mbb aus SKP in Beziehung stehen • Planesweep Algorithmuen bestimmen alle mbbs aus RKP • und SKP die überlappen und fügen sie der Ergebnismenge • hinzu
Spatial Join Partition Based Spatial Merge Join • Filter Step: • für passende Paare wird die OID Information herausge- • zogen und das OID-Paar wird zur Ausgabe dieses • Schrittes hinzugefügt
Spatial Join Partition Based Spatial Merge Join • Filter Step: Sweepline Ergebnismenge
Spatial Join Partition Based Spatial Merge Join • Filter Step: • Partitionen bilden, falls RKP und SKP nicht vollständig • in den Speicher passen • R1KP, R2KP... RPKP S1KP, S2KP... SPKP Partitionen Universum
Spatial Join Partition Based Spatial Merge Join • Filter Step: • Partitionen werden so gebildet, dass für jedes Schlüssel- • element in einer Partition RiKP alle Schlüsselelemente • aus SKP, die ein überlappendes mbb besitzen, in der • zugehörigen SiKP Partition vorhanden sind • Größe der einzelnen Partitionen so gewählt, dass für • jedes i RiKP und SiKP simultan, komplett in den • Speicher passen • Um Partitionen zu bilden, wird Partitionierungsfunktion • gebildet
Spatial Join Partition Based Spatial Merge Join • Filter Step: • Partitionierungsfunktion: • Algorithmus bestimmt das Universum der Eingabe • Unterteilung des Universums in P Bereiche • Anwendung der räumlichen Partitionierungsfunktion • auf das mbb eines Schlüsselelementes
Spatial Join Partition Based Spatial Merge Join • Das Key-Pointer Element wird dann in jeder überlappten • Partition eingefügt Partition 2 Partition 1 Partition 3 Partition 4 • Bestimmung der Anzahl der benötigten Partitionen:
Spatial Join Partition Based Spatial Merge Join • dieser Ansatz kann zu sehr unterschiedlichen Verteilungen • der mbbs führen • besser: Universum in NT-Teile zerlegen, wobei NT P • Teile werden von links oben nach rechts unten von 0 bis • NT - 1 nummeriert
Spatial Join Partition Based Spatial Merge Join • nun sortiert man diese Teile den einzelnen P Partitionen zu, • wozu man beispielsweise Hashing benutzt • Um diese Partitionierung auf mbbs anzuwenden, muss man alle • Teile, die mit dem mbb überlappen bestimmen und die dazuge- • hörigen key-pointer Elemente in die dazugehörigen Partitionen • einfügen • Überlappt ein ein mbb mit Teilen von mehreren Partitionen, • so wird sein key-pointer natürlich in allen Partitionen eingefügt
Spatial Join Partition Based Spatial Merge Join • Aufteilung mit • 3 Partitionen und • 12 Teilen • man erreicht eine bessere Verteilung der mbbs, woraus • allerdings auch ein erhöhter Speicherverbrauch resultiert
Spatial Join Partition Based Spatial Merge Join • Refinement Step: • Einlesen der Ergebnismenge des Filter Steps • Ergebnis: Relation, deren Tupel die Form <OIDR,OIDS> • haben, sodass die mbbs aller Paare sich überlappen • Sortierung der OID Paare • OIDR als Primärschlüssel • OIDS als Sekundärschlüssel • Während der Sortierung werden auch die Duplikate • eliminiert • Es werden so viele R Tupel zusammen mit dem dazuge- • hörigen Array von <OIDR,OIDS> Paaren von der Fest- • platte gelesen, wie in den Speicher passen
Spatial Join Partition Based Spatial Merge Join • Refinement Step: • Danach leitet man die Pointer um, damit sie auf die • eigentlichen Tupel zeigen und macht dann dasselbe mit • den dazugehörigen Tupeln aus S und vergleicht dann die • eigentlichen Tupel auf Überschneidung
Spatial Join Scalable Sweeping Based Spatial Join • Algorithmus, welcher auf dem PBSM basiert • auch hier wird die Eingabe in einzelne Partitionen aufgeteilt; • der Partitionierungsschritt wird allerdings nur ausgeführt, • wenn er wirklich benötigt wird • Partitionen werden nur entlang einer Achse ausgerichtet • benötigt wird lediglich die Sweep-Struktur, nicht die Daten • im Hauptspeicher • bei einer Datengröße von N beträgt die Sweep Struktur nur • noch
Spatial Join Scalable Sweeping Based Spatial Join • das bietet gute Overall-Performance und dennoch Worst-Case • Effizienz • der eigentliche Algorithmus wird in zwei Schritten ausgeführt: • Eindimensionaler Fall: Finde alle Überschneidungen • zwischen zwei Sätzen von • Intervallen; die Daten werden • anhand einer Achse vejoint • Zweidimensionaler Fall: ausgehend vom Ergebnis des • eindimensionalen Falles werden • die Daten anhand der zweiten • Achse überprüft
Spatial Join Scalable Sweeping Based Spatial Join • Eindimensionaler Fall: Intervall Join X-Achse • jedes Intervall oder ist definiert durch untere • Schranke pmin und obere Schranke pmax • Problem: alle Überschneidungen zwischen einem Intervall in • R und und einem in S zu finden
Spatial Join Scalable Sweeping Based Spatial Join • Eindimensionaler Fall: Intervall Join • Annahme: Intervalle p aus R und S sortiert nach ihren • unteren Schranken in einer Liste L • dazu sind O(n logm n) Schritte erforderlich • O(n+t) I/O Operationen für den restlichen Algorithmus
) Durchsuche die Liste anhand der aufsteigenden unteren Schranken und • erhalte dabei zwei, Anfangs leere, Listen LR und LS mit „aktiven“ • Intervallen aus R und S. Um es genauer zu sagen, mache mit jedem • Intervall p in L folgendes: • ) Wenn p R, dann füge p zu LR hinzu und suche durch die ganze Liste LS • Wenn ein Intervall s in LS sich mit p überschneidet, dann gib die • Überschneidung aus und behalte s in LS, sonst lösche s aus LS • ) Wenn p S, dann füge p zu LS hinzu und suche durch die ganze Liste LR • Wenn ein Intervall r in LR sich mit p überschneidet, dann gib die • Überschneidung aus und behalte r in LR, sonst lösche r aus LR Spatial Join Scalable Sweeping Based Spatial Join • Algorithmus Intervall Join:
Spatial Join Scalable Sweeping Based Spatial Join • Zweidimensionaler Fall: Rechteck-Join • jedes Rechteck wird durch eine untere Schranke auf der • x-Achse und auf der y-Achse definiert, sowie durch eine • obere Schranke sowohl auf der x, als auch auf der y-Achse • Rechtecke anhand ihrer unteren Schranken in Liste L sortiert
Spatial Join Scalable Sweeping Based Spatial Join • Algorithmus Rechteck Join: • ) Partitioniere den zweidimensionalen Raum in k vertikale Streifen, so dass • in jedem Streifen max. 2N/k Rechtecke anfangen oder aufhören, für ein • noch zu bestimmendes k • ) Ein Rechteck wird als klein bezeichnet, wenn es komplett in einem • einzigen Streifen enthalten ist. Sonst wird es als groß bezeichnet. Teile • jedes große Rechteck in exakt 3 Teile, zwei Endstücke im ersten und • letzten Streifen der Überschneidung und ein Mittelstück dazwischen. • Dieses Mittelstück wird an die Anzahl der Streifen angepaßt, also bei • allen eingefügt. Das Problem wird in zwei Schritten gelöst: • ) Zuerst berechne alle Überschneidungen zwischen einem Mittelstück • aus R und einem Mittelstück aus S und alle Überschneidungen zwischen • einem Mittelstück aus R und einem kleinen Rechteck aus S oder einem • Mittelstück aus S und einem kleinen Stück aus R
Spatial Join Scalable Sweeping Based Spatial Join • a) Durchsuche die Liste L in aufsteigender Reihenfolge nach unteren • Schranken. Für jedes Intervall p in L tue folgendes: • 1. Wenn p P und p ist komplett enthalten in einem Streifen i, dann • füge p in Lr i,i ein. Durchsuche jede Liste LS h,j mit h<i<j, berechne • die Überschneidungen und lösche jedes Element der Liste, das nicht • mit p überlappt. Schreibe p auf die Festplatte um sie später in den • rekursiven Suchproblemen benutzen zu können • 2. Wenn p R und p ist groß und die Mittelstücke bestehen aus den • den Streifen i, i+1,...j dann füge p in Lr i-1,j+1 ein. Durchsuche dann • die ganzen Listen LS i´,j,´ mit i<j´ und j>i´, berechne die Überschnei- • dungen und lösche jedes Element einer Liste, das nicht mit p • überlappt. Speichere die Endstücke von p auf der Festplatte um sie • später in den entsprechenden Subproblemen einsetzen zu können
Spatial Join Scalable Sweeping Based Spatial Join • a) Durchsuche die Liste L in aufsteigender Reihenfolge nach unteren • Schranken. Für jedes Intervall p in L tue folgendes: • 3. Wenn p R und p ist klein, dann führe 1. aus und vertausche die • Rollen von R und S • 4. Wenn p R und p ist groß, dann führe 2. aus und vertausche die • Rollen von R und S • b) In jedem Streifen berechne rekursiv alle Überschneidungen zwischen einem • Endstück oder kleinem Rechteck aus R und einem Endstück oder kleinen • Rechteck aus S
Spatial Join Scalable Sweeping Based Spatial Join • man geht anhand der unteren Schranken vor und berechnet • rekursiv die Überschneidungen; für Mittelstücke geht dies • besonders einfach, da sie den kompletten Streifen abdecken • daß sich in diesem Streifen alle Rechtecke, • ob klein oder groß, mit dem obersten Über- • schneiden, ist offensichtlich
Spatial Join Scalable Sweeping Based Spatial Join • daß sich in diesem Streifen alle Rechtecke, • ob klein oder groß, mit dem obersten Über- • schneiden, ist offensichtlich • kompliziert wird es für Endstücke oder • kleine Rechtecke; diese könne sich • überschneiden, müssen es aber nicht
Spatial Join Spatial Join/Algorithmen • Partition Based Spatial-Merge Join • Scalable Sweeping-Based Spatial Join
Spatial Join Sweep Algorithmen • Plane-Sweep-Technik verbreitetes Verfahren um den Schnitt • zwischen Objekten zu bestimmen • Ablauf: • mbbs gemäß ihrer minimalen Koordinaten • bezüglich einer Dimension sortieren • Lauflinie wird über den Datenraum bewegt, die • senkrecht auf der Achse steht, bezüglich der sortiert • wurde
Spatial Join Join Operation • Algorithmus: • Sweeplinie läuft durch den relevanten Teilraum von R2 • trifft Sweeplinie auf untere Kante eines Rechteckes r • (OE r P) merkt man sich das r • aktive Rechtecke aus Q, deren obere Kanten bereits • überschritten sind werden gelöscht • Vergleich der Intervalle der verbliebenen Rechtecke aus • Q mit dem Intervall von r • das betreffende Rechteck aus Q schneidet sich mit r • wenn es zu einem nicht leeren Schnitt kommt
Spatial Join Join Operation • Algorithmus: • Datenstruktur muß folgende Methoden unterstützen: • Insert(D,r) Rechteck r in D speichern • Delete(D,y) Alle Rechtecke r aus D löschen, für • die gilt rymax < y • Query(D,r) gebe alle die Rechtecke aus D zurück, • deren Intervalle mit dem von r einen • nicht leeren Schnitt haben
Spatial Join Partition Based Spatial Merge Join • Refinement Step: Part. 1 Part. 2
Spatial Join Scalable Sweeping Based Spatial Join • Man bestimmt also die Kandidaten, die man später noch • genauer betrachten müßte, da sie für eine Überlappung in • Frage kommen
Spatial Join Plane-Sweep und das Gesetz der Quadratwurzel • Großer Einfluß von Plane-Sweep Algorithmus auf die Effizienz • von Spatial Join Operationen • benötigter Speicher bestimmt durch die maximale Anzahl • Rechtecke, die von einer einzelnen, horizontalen Linie • geschnitten werden • diese Anzahl = maximale Überlappung • i.d.R ist maximale Überlappung << als die Summe der • Rechtecke • bei einer Datengröße von N ist die Datengröße der maximal • überlappenden Rechtecke von irgendeiner Linie gleich • Der SSSJ besteht aus einer Kombination von dem theoretisch • optimalen Rechteck Join mit einer effizienten Plane.Sweep • Technik
Spatial Join Plane-Sweep und das Gesetz der Quadratwurzel • SSSJ führt eine anfängliche Sortierung durch und versucht • dann direkt den Plane-Sweep durchzuführen • der vertikale Partitionierungsschritt wird nur benutzt, wenn • die Sweep Struktur nicht in den Speicher passt. • Arten von Plane-Sweep Algorithmen: • Tree_Sweep • List_Sweep • Striped_Sweep und PBSM-Algorithmus • Forward_Sweep
GIS-Seminar Wintersemester 01/02 Spatial Join Vortrag: Carsten Breuer
Spatial Join Spatial Join • wichtigste Join- Operation in einem GIS • paarweise Verknüpfung zweier Mengen von geometrischen • Objekten deren räumliche Merkmale eine räumliche • Aussage erfüllen • verschiedenen Typen räumlicher Aussagen • bedeutendste Varianten: • Intersection Join • Overlap Join
Spatial Join Spatial Join • Einsatzmöglichkeiten: alle Arten von Anfragen und Operationen, • die geometrische Daten miteinander in Verbindung setzen • Grundlage für die effiziente Ausführung des Map Overlays • kann dazu dienen, aus mehreren Geo- Objekten ein neues Ob- • jekt zu generieren oder um räumliche Abhängigkeiten zwischen • Geo- Objekten festzustellen • das Join- Prädikat und die betroffenen Attribute sind geometri- • schen Typs (Bsp. für Attributstypen: Streckenzüge, Flüsse,..)
Spatial Join Spatial Join/ Beispiel 1 • gegeben: Relationen Städte und Wälder • die Anfrage „finde alle Wälder, die in einer Stadt liegen“ ist • ein möglicher Spatial Join auf den Relationen Wälder und • Städte mit dem Prädikat „liegt in“ • liegt ein Wald „w“ in einer Stadt „s“, so wäre das Paar (w,s) • in der Ergebnismenge des Spatial Joins
Spatial Join Spatial Join/ Beispiel 2 • Kombination zweier Karten mit verschiedenen Typen von Ob- • jekten • Kombination einer Nutzungskarte mit einer Niederschlagskarte • Anfrage „finde alle Waldgebiete mit mindestens 20 Litern • durchschnittlichem Regenfall pro Monat“
Spatial Join Berechnung des Spatial Joins zwei Schritte: • Filter Step • Refinement Step Filter Step: • Minimum Bounding Box (mbb) • Plane Sweep Algorithmus • Ergebnis: Kandidatenmenge Refinement Step: • Entfernung der mbbs und Vergleich der eigentlichen • Objekte
Spatial Join Strategien und Algorithmen für Spatial Joins • Lineare Strukturen • jede Beziehung mit einer linearen Struktur indiziert z-geordnete Bäume • R-Bäume • synchronisiertes Durchgehen beider Bäume • Einzel-Index • indizierte Nested Loop Methode • Kein Index • vereinfachte Hash-Join Methode
Zelle mit dem key z ist in einer mit dem key z´ enthalten (oder ist gleich), wenn z´ ein Präfix von z ist und wenn z´ z Spatial Join z-geordneter Spatial Join Voraussetzung: beide Beziehungen sind z-geordnet z-geordneter Baum als Index Blätter von jedem Baum: Liste L von Einträgen der Form [z,oid] die Zellen von einer Zerlegung müssen nicht unbedingt minimal sein die Beziehungen teilen sich den gleichen Raum