Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Übersicht Die Vorlesung besteht aus 3 Blöcken räumliche Datenbanken –Zugriffsstrukturen zur Unterstützung der Suche –Transaktionen (Sicherheit) Softwaretechnologie –(Dr. Gröger) Internet: Protokolle, Dienste und Formate –Dr. Kolbe Form: Vorlesung mit Übungsanteilen Klausur: 1 Doppelseite A4 aus der eigenen Feder pro Block
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Problemstellung allgemein –gegeben ist eine räumliche Datenbank und eine Klasse typischer Anfragen –wie strukturiere ich meine Daten so, dass ich diese Anfragen möglichst effizient beantworten kann konkret –gegeben ist eine Landkarte –Frage: in welcher Masche liegt ein gegebener Punkt
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Übersicht Punktsuche in Landkarten Vorgehen I (naiv) Vorgehen II (semi-naiv) Eigenschaften der Zerlegung I Eigenschaften der Zerlegung II Eigenschaften der Zerlegung III Vorgehen I Algorithmus punktsuche Binäre Suche in einem sortierten Array Komplexität der Suche Speicheranforderung Speicheranforderung (Beispiel worst-case)
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Punktsuche in Landkarten In welcher Masche liegt q? Außen x y Landkarte S mit n Kanten q
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Anzahl der Schnittpunkte gerade: außerhalb ungerade: innerhalb Vorgehen I (naiv) è Naives Verfahren: Test für jede Masche iterieren è Aufwand: mindestens O(n) für die Suche nach einem Punkt in einem Polygon mit n Kanten è bei m Polygonen: O(m * n) è Wie geht es schneller? è genauer: Welcher „Index“ unterstützt die schnelle Antwort auf die Frage : è„In welcher Masche einer Landkarte liegt der Punkt q?“
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Vorgehen II (etwas besser) Außen x y q Aufteilung der Landkarte durch vertikale Linien Konstruktion einer Karte S‘
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Außen q Eigenschaften der Zerlegung I Die Maschen werden in Trapeze (ggf. Dreiecke) zerlegt Dadurch werden auch die Kanten in Teilkanten zerlegt Kein Knoten liegt im Inneren eines Trapezes Die Teilkanten eines Streifens lassen sich anordnen Übung: Vergleich mit Scan-Line beim Segmentschnitt x y
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Jede Kante lässt sich einer in y-Richtung folgenden Masche zuordnen q x y Außen Eigenschaften der Zerlegung II Jeder Abschnitt eines Streifens liegt in genau einer Masche
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Jede Kante lässt sich einer in y-Richtung folgenden Masche zuordnen q x y Außen Eigenschaften der Zerlegung III Jeder Abschnitt eines Streifens liegt in genau einer Masche
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Vorgehen I Aufteilung der Landkarte vertikale Linien Konstruktion einer Karte S‘ Außen Sortierte Speicherung der x-Koordinaten der Vertikalen in einem Array Sortierte Speicherung der Kanten jedes Streifens in einem Array q x y
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Algorithmus punktsuche binäre Suche, wie q zu den Kanten(Segmenten) liegt Algorithmus punktsuche { binäre Suche des Streifens, der q enthält, im Array der x- Koordinaten q x y
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Algorithmus punktsuche falls ein Segment direkt unterhalb q gefunden wird, ist die gesuchte Masche gefunden} direkt unterhalb q x y binäre Suche, wie q zu den Kanten(Segmenten) liegt Algorithmus punktsuche { binäre Suche des Streifens, der q enthält, im Array der x- Koordinaten
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Binäre Suche in einem sortierten Array Suche der Position einer Zahl x in einem Array A der Länge n bestimme die mittlere Position i und den Wert A[i] Fall x = A[i]: return i Fall x < A[i]: setze die Suche in der linken Hälfte von A rekursiv fort Fall x > A[i]: setze die Suche in der rechten Hälfte von A rekursiv fort Übung: Adaptiere den Algorithmus so, dass er das nächst kleinere Element findet Adaptiere den Algorithmus so, dass er auf beide Fälle unsers Algorithmus anwendbar ist. Nutze zum Vergleich der Segmente eine „Scan-Line“ durch den Punkt q.
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Komplexität der Suche Gesamtkomplexität: O(log n) Algorithmus punktsuche { binäre Suche des Streifens der q enthält im Array der x-Koordinaten falls ein Segment direkt unterhalb q gefunden wird, ist die gesuchte Masche gefunden} Binäre Suche in einem Array mit maximaler Länge 2n: O(log n) Binäre Suche in einem Array mit maximaler Länge n: O(log n) binäre Suche, wie q zu den Kanten(Segmenten) liegt Gegeben ist eine Landkarte mit n Kanten.
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Speicheranforderung Aufteilung der Landkarte durch vertikale Linien Konstruktion einer Karte S‘ Sortierte Speicherung der x-Koordinaten der Vertikalen in einem Array Sortierte Speicherung der Kanten jedes Streifens in einem Array Array der x-Koordianten benötigt O(n) Array jedes Streifens benötigt O(n) Gesamtkomplexität: O(n²)
Lutz Plümer - Geoinformation III - WS 01/02 - Vorlesung Speicheranforderung (Beispiel worst-case)