1 / 40

Spatial

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.

zaccheus
Download Presentation

Spatial

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GIS-Seminar Wintersemester 01/02 Spatial Join Vortrag: Carsten Breuer

  2. 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

  3. 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,..)

  4. 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

  5. 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“

  6. 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

  7. 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

  8. 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

  9. Spatial Join z-geordneter Spatial Join Algorithmus • Verbinden der Listen L1/L2 der Eingaben die sich auf • die beiden Relationen beziehen • Paar von Eingaben von den beiden Listen sind • Kandidaten für den Verfeinerungsschritt, wenn ein • key ein Präfix des anderen ist • Vor dem Verfeinerungsschritt: Kandidatengruppen • von Objekt ids müssen sortiert werden um Duplikate • zu entfernen

  10. C A z´= scc(z) B zA z axis ssc(zA) D F H I E G Wenn z = 30 dann ist z´= 3033333 (angenommene Tiefe von 7 für Zerlegung) Spatial Join z-geordneter Spatial Join • Algorithmus Beispiel Kandidatengruppen: (A,D), (A,E), (A,F), (B,E), (B,F), (C,H) und (C,I) zwei Stacks erforderlich

  11. Sweeping einer vertikalen Linie entlang der z-Achse Spatial Join z-geordneter Spatial Join • Algorithmus scannen der beiden Listen zwei mögliche Ereignisse: • Eingabe Ereignisse • Ausgabe Ereignisse

  12. C A B zA ssc(zA) z axis D F H I E G C A B zA ssc(zA) z axis D F H I E G Spatial Join z-geordneter Spatial Join • Beispiel: Schritt 1: • Eingabe von A • current1 = B • S1 = {A} • current2 = D • S2 = {}

  13. C A B zA ssc(zA) z axis D F H I E G C A B zA ssc(zA) z axis D F H I E G Spatial Join z-geordneter Spatial Join Schritt 2: • Eingabe von D • current1 = B • S1 = {A} • current2 = E • S2 = {D} Schritt 3: • Ausgabe von D • current1 = B • S1 = {A} • current2 = E • S2 = {}

  14. C A B zA ssc(zA) z axis D F H I E G C A B zA ssc(zA) z axis D F H I E G Spatial Join z-geordneter Spatial Join Schritt 4: • Eingabe von B • current1 = C • S1 = {B,A} • current2 = E • S2 = {} Schritt 5: • Eingabe von E • current1 = C • S1 = {B,A} • current2 = F • S2 = {E}

  15. C A B zA ssc(zA) z axis D F H I E G C A B zA ssc(zA) z axis D F H I E G Spatial Join z-geordneter Spatial Join Schritt 6: • Eingabe von F • current1 = C • S1 = {B,A} • current2 = G • S2 = {F,E} Schritt 7: • Ausgabe von B • current1 = C • S1 = {A} • current2 = G • S2 = {F,E}

  16. C A B zA ssc(zA) z axis D F H I E G Spatial Join z-geordneter Spatial Join Schritt 8: • Ausgabe von A • current1 = C • S1 = {} • current2 = G • S2 = {F,E} Weitere Schritte analog

  17. Spatial Join z-geordneter Spatial Join • Algorithmus Zordering Join • begin • result: Set of pairs of ids, initially empty • while not (eof(L1) and empty (S1) and eof(L2) and empty (S2)) • begin • event = MIN (CURRENT(L1), SCC(top(S1)), • CURRENT(L2), SCC(top(S2))) • if (event = CURRENT(L1))then //left bound of a rectangle • Entry (L1,S1) • else if (event = SCC(top(S1)))then //right bound of a rectangle • result += EXIT (S1,S2) • else if (event = CURRENT(L2))then //left bound of a rectangle • ENTRY (L2, S2) • else if (event = SCC(top(S2)))then //right bound of a rectangle • result += EXIT (S2,S1); • end while • sort result; remove duplicates; • return result • end • es werden der Reihe nach • die Ereignisse verarbeitet, • die sich aus den Listen L1/L2 • bzw. von den Säulen S1 und • S2 ergeben

  18. Spatial Join z-geordneter Spatial Join • jedes z-geordnete Blatt eines Baumes nur einmal gelesen • Zahl der I/O´s: n1 + n2 +k • Voraussetzung: jeder Stack wird im Hauptspeicher gehalten • Worst Case: Algorithmus-Komplexität quadratisch zur • Eingabegröße • In allen Fällen ist eine Eliminierung der Duplikate erforderlich

  19. Spatial Join Verbinden zweier R-Bäume • Algorithmus, bei dem beide Relationen entweder mit einem • R-Baum, einem R* Baum oder jeder anderen Variante • indiziert sind • Minimierung der I/O und CPU-Kosten • drei Varianten des Algorithmus

  20. Spatial Join Verbinden zweier R-Bäume Algorithmen • der einfachste benutzt eine Tiefensuche • Anfang an den beiden Wurzeln • bei jedem Schritt wird ein Knoten N1 eines Baumes mit einem • Knoten N2 des anderen Baumes verglichen • Berechnung der Gruppen von überlappenden Eingaben (e1,e2) • wenn das Blatt-Level erreicht ist, sind die Paare von • Objekt ids gefunden

  21. begin result: set of pairs of ids, initially empty for all e1 in N1 do for all e2 in N2 such that e1.mbb e2.mbb 0 do if (the leaf level is reached) then result += {(e1,e2)} else N´1 = READPAGE (e1.pageID); N´2 = READPAGE (e2.pageID); result += STT (N´1,N´2) end if end for end for return result end Spatial Join Verbinden zweier R-Bäume • Algorithmus

  22. Spatial Join Verbinden zweier R-Bäume • hohe CPU Kosten • CPU Kosten abhängig von der Hardware von der Seitengröße • Schwächen des Algorithmus: Nested Loop über den Eingaben von den Knoten Blindtest jeder Kandidatengruppe

  23. Spatial Join Verbinden zweier R-Bäume 1. Optimierung: • Beschränken des Suchraumes • Beobachtung: die mbbs der Knoten N1 und N2 decken • nicht den gleichen Raum ab

  24. I = N1.mbb N2.mbb I N1 N2 Ausschluß aller Eingaben außerhalb von I Spatial Join Verbinden zweier R-Bäume

  25. I N1 N2 Markierung der Kandidateneingaben Spatial Join Verbinden zweier R-Bäume 1. Schritt: Scannen der Knoten 2. Schritt: Verarbeiten der Kandidateneingaben durch Nested Loop Algorithmus

  26. Spatial Join Verbinden zweier R-Bäume 2. Optimierung: • Plane-Sweep Technik

  27. b2 b4 r b3 b1 l1 l2 Spatial Join Verbinden zweier R-Bäume Beispiel eines simplen plane-sweep für einen Rechteck-Schnitt

  28. b2 r b4 b3 b1 l1 l2 Spatial Join Verbinden zweier R-Bäume Beispiel eines simplen plane-sweep für einen Rechteck-Schnitt • Gegeben: zwei Sätze von Rechtecken • Gesucht: Schnitt zwischen einem roten und blauen Rechteck

  29. b2 b4 r b3 b1 l1 l2 Spatial Join Verbinden zweier R-Bäume Beispiel eines simplen plane-sweep für einen Rechteck-Schnitt

  30. begin • result: set of pairs of ids, initially empty • pos1 = 1, pos2 = 1// current positions in N1 and N2 • Sort the entries e in N1 and N2 on e.mbb.xmin • while (pos1 |N1| and pos2 |N2|) do • begin • if (N1[pos1].mbb.xmin < N2[pos2].mbb.xmin) then • e = N1[pos1]; p´ = pos2; e´ = N2[p´] • while (e´.mbb.xmin e.mbb.xmax) do • begin • if (e.mbb e´.mbb 0) then result += {(e.oid, e´.oid)} • p´ = p´ + 1; e´ = N2[p´] • end do • pos1 = pos1 + 1// next entry in N1 • else • Do as before, permuting the roles of entries of N1 and N2 • end if • end while • return result • end Spatial Join Verbinden zweier R-Bäume • Algorithmus

  31. Spatial Join Verbinden zweier R-Bäume • Mischung von Plane-Sweep und Nested Loop Techniken • Im Gegensatz zum Nested Loop Algorithmus begrenzt die • Sweep-Linie die Anzahl von Rechtecken, die gegeneinander getestet • werden müssen • Algorithmus ist sowohl einfach als auch effizient • erheblicher Leistungsgewinn

  32. Spatial Join Räumlicher Hash Verbund • Alternative zum externen Plane-Sweep Algorithmus • Anwendung des Hash-Join-Algorithmus für • räumliche Daten • wenn kein räumlicher Index für die zusammenzuführenden • Beziehungen existiert • Hauptziel: ausgewogene Verteilung der Daten zwischen • Buckets am Ende des Prozesses

  33. O B D A C Bucket Ausdehnung Spatial Join Räumlicher Hash Verbund Beispiel 1: • Hash-Funktion teilt den Suchraum in vier Buckets auf • jeder Bucket wird als Rechteck dargestellt • Rechteck r allen Buckets zugewiesen, deren Ausdehnung r • schneiden

  34. D O B A C Spatial Join Räumlicher Hash Verbund Beispiel 2: • jedes Rechteck wird genau einem Bucket zugewiesen • Ausdehnung ist so, daß alle zugewiesenen Rechtecke • eingeschlossen werden

  35. D O Ziel: B A C Spatial Join Räumlicher Hash Verbund Algorithmus für den Overlap Spatial Join • Schritt 1: anfängliches Teilen von R jedes Rechteck einem Bucket zuteilen Ausdehnung eines Buckets = mbb all seiner Rechtecke Anforderungen an die Teilung ungefähr gleiche Anzahl Rechtecke in jedem Bucket jeder Bucket sollte in den Hauptspeicher passen Überlappen von Bucket Ausdehnungen minimal

  36. O B D A C Spatial Join Räumlicher Hash Verbund Algorithmus für den Overlap Spatial Join • Schritt 2: zweites Teilen • jedes Rechteck aus S einem Bucket der R-Teilung zuteilen • dessen Ausdehnung es überlappt • dieser Schritt führt zu einzelnen überflüssigen Zuteilungen • Verteilung von S ganz sich ganz anders darstellen als die von R • Anzahl von Rechtecken aus S in einem Bucket variablel

  37. Spatial Join Räumlicher Hash Verbund Algorithmus für den Overlap Spatial Join • Schritt 3: Verbundphase • Gegeben: zwei Gruppen von Buckets • Ziel: jeder Bucket BR muß mit einem Bucket BS zusammengelegt • werden • Ein Bucket muß in den Hauptspeicher passen • Ergebnisse enthalten keine Duplikate

  38. B D A C Vier Buckets mit überlappenden Ausdehnungen 11 5 D 2 4 12 13 6 B 7 3 10 1 8 A C 14 9 Spatial Join Räumlicher Hash Verbund Beispiel: • Teilung der Datengruppe Inhalt der Buckets: A = {1, 14, 10} B = {2, 4, 7, 11} C = {3, 8, 9} D = {5, 6, 12, 13}

  39. a b e g d c f h Mit den Bucket Ausdehnungen des ersten Datensatzes: a D b e B g d c A C f h Spatial Join Räumlicher Hash Verbund Beispiel: • Teilung der zweiten Datengruppe A´ = {c, d } B´ = {a, b, d, g } C´ = {e, g, h } D´ = {a, e }

  40. Suche nach Gruppen von überlappenden Rechtecken Spatial Join Räumlicher Hash Verbund Beispiel: • zu verbindende Gruppen von Buckets: • [A, A´], [B, B´], [C, C´], [D, D´] • Verbund von einem Paar von Buckets:

More Related