Punkt-in-Polygon-Suche Übersicht

Werbung
geoinformation.net
Punkt-in-Polygon-Suche Übersicht
l
l
Praxisbeispiel/Problemstellung
Zählen von Schnittpunkten
Schnitt einer Halbgerade mit der Masche
Aufwandsbetrachtung
Streifenkarte
Vorgehen und Eigenschaften
Speicherung der Daten / Suche in den Daten
Aufwandsbetrachtung
Trapezkarte
¡
¡
l
¡
¡
¡
l
Folie 1 von 19
geoinformation.net
Praxisbeispiel Rollover am Bildschirm
Folie 2 von 19
geoinformation.net
Folie 3 von 19
Problemstellung 1 In welcher Masche liegt Punkt P?
Allgemein:
Gegeben ist eine räumliche
Datenbank und eine Klasse typischer
Anfragen
Gesucht wird eine Datenstruktur, die
einen effizienten Algorithmus
unterstützt
l
l
Konkret:
Gegeben ist eine Landkarte S und ein
Punkt P
Gesucht wird die Masche M, die den
Punkt P beinhaltet
l
l
geoinformation.net
Folie 4 von 19
Lösungsansatz 1 Halbgerade am Punkt anlegen
Aus dem >>Jordanschen Kurvensatz
folgt:
l
l
l
1x
Konstruiere ausgehend von P eine
Halbgerade in beliebiger Richtung
P liegt außerhalb des begrenzten
Gebietes, wenn eine gerade Anzahl
von Schnittpunkten entsteht.
P liegt innerhalb des begrenzten
Gebietes, wenn eine ungerade
Anzahl von Schnittpunkten entsteht.
geoinformation.net
Folie 5 von 19
Theorem Jordanscher Kurvensatz
Nach Jordan:
l
l
Eine geschlossene Jordankurve S
zerlegt die Ebene in zwei
zusammenhängende Gebiete, von
denen genau eines nicht beschränkt
ist.
Zwei Punkte der Ebene können genau
dann durch eine Jordankurve J
verbunden werden, die S nicht
schneidet, wenn sie entweder beide
im Inneren oder beide im Äußeren
von S liegen.
geoinformation.net
Folie 6 von 19
Lösungsansatz 1 Suchaufwand
Das Verfahren muss für jede Masche
iteriert werden:
l
l
Aufwand für ein Polygon mit n
Kanten: O(n)
Aufwand bei m Polygonen: O(m*n)
Der Aufwand für eine Suche nach dem
Jordanschen Kurvensatz beträgt
O(m*n).
Mit welchem Verfahren kann der
Suchaufwand verringert werden?
geoinformation.net
Folie 7 von 19
Praxisbeispiel Bundesrepublik Deutschland
In der Praxis kann die Anzahl der Maschen und Kanten sehr schnell hoch werden:
Bundesrepublik Deutschland:
1 Masche
Bundesländer:
16 Maschen mit 17.700 Kanten
Kreise:
440 Maschen mit 75.000 Kanten
Gemeinden:
13.900 Maschen mit 300.000 Kanten
Angaben für den Massstab 1:500.000 Quelle: ArcDeutschland 500, ESRI
geoinformation.net
Folie 8 von 19
Vorgehensweise 2 Konstruktion eines Index
Der Aufbau eines Index kostet Zeit. Diese
amortisiert sich jedoch bei der Abfrage.
Allgemein:
Gegeben: Räumliche Datenbank und
eine Klasse typischer Anfragen
Gesucht: Datenstruktur, die einen
möglichst schnellen Algorithmus
unterstützt
Konkret:
Gegeben: Landkarte S und ein Punkt P
Gesucht: Index für die schnelle
Identifikation der zugeordneten
Masche M .
l
l
l
l
geoinformation.net
Folie 9 von 19
Lösungsansatz 2 Konstruktion der Streifenkarte S'
Vorgehen:
l
Konstruktion einer Karte S' durch
Aufteilung der Landkarte mit
vertikalen Geraden durch alle
Knoten.
Folge:
l
2x
In allen Schnittpunkten der Geraden
mit den Kanten entstehen neue
Knoten.
geoinformation.net
Folie 10 von 19
Lösungsansatz 2 Eigenschaften von S'
S' hat folgende Eigenschaften:
l
l
2x
Die Maschen sind in Trapeze (ggf.
Dreiecke) zerlegt.
Kanten sind in Teilkanten zerlegt.
geoinformation.net
Folie 11 von 19
Lösungsansatz 2 Vorteil von S'
Die Karte erhält eine Struktur, die wir
ausnutzen können:
l
l
2x
Die Streifen sind in x-Richtung
angeordnet.
Innerhalb eines Streifens sind die
Teilkanten und damit die Trapeze in
y-Richtung angeordnet.
geoinformation.net
Folie 12 von 19
Lösungsansatz II Speicherung der Daten
Die Datenspeicherung erfolgt in Arrays:
l
l
Ein Array enthält die x-Koordinaten
der Streifen.
Jeder Streifen enthält ein Array der
y-Koordinaten der Teilkanten.
geoinformation.net
Folie 13 von 19
Lösungsansatz 2 Intervall-Bisektion
Zwei schnelle binäre Suchalgorithmen
werden für die Suche nach der Masche
hintereinander geschaltet:
l
l
Binäre Suche im Array der xKoordinaten nach dem Streifen, der P
enthält.
Binäre Suche nach dem zugehörigen
Trapez in diesem Streifen.
Sobald die Teilkante direkt >>unterhalb/
oberhalb von P gefunden ist, ist die
gesuchte Masche gefunden.
3x
geoinformation.net
Folie 14 von 19
Bemerkungen Eigenschaften der Maschen
Es gilt:
l
l
l
Jeder Abschnitt eines Streifens liegt
genau in einer Masche.
Jede Kante lässt sich einer in yRichtung folgenden Masche zuordnen.
Die Fläche"Außen" muss ebenfalls als
Masche angesehen werden.
geoinformation.net
Folie 15 von 19
Lösungsansatz 2 Suchaufwand
Der Suchaufwand dieses Lösungsansatzes entsteht durch:
l
l
Binäre Suche im Array der x-Koordinaten nach dem Streifen, der P enthält:
Binäre Suche in einem Array mit maximaler Länge 2n: O(log n)
Binäre Suche nach der Lage von P zu den Teilkanten im Array der y-Koordinaten:
Binäre Suche in einem Array mit maximaler Länge n: O(log n)
Der Aufwand für die binäre Suche in einer Streifenkarte beträgt O(log n).
Im >>Vergleich zum Lösungsansatz 1 hat sich der Suchaufwand verbessert.
geoinformation.net
Folie 16 von 19
Vergleich Suchaufwand der zwei Lösungsansätze
Der Aufwand für eine Suche nach dem
Jordanschen Kurvensatz beträgt O(n).
Der Suchaufwand für die binäre Suche in
einer Streifenkarte beträgt O(log n).
geoinformation.net
Folie 17 von 19
Lösungsansatz 2 Speicherbedarf
Es entsteht eine hohe Speicheranforderung durch:
l
l
die sortierte Speicherung der x-Koordinaten der vertikalen Geraden in einem
Array:
Array der x-Koordinaten: O(n)
die sortierte Speicherung der y-Koordinaten der Teilkanten jedes Streifens von
oben nach unten in einem Array:
Array der y-Koordinaten: O(n)
Die Speicheranforderung für die Daten dieses Lösungsansatzes beträgt O(n²)
geoinformation.net
Folie 18 von 19
Lösungsansatz 2 Worst Case Speicherbedarf
Der Worst Case tritt tatsächlich auf:
l
In ungünstigen Fällen erfolgt mit
diesem Verfahren eine sehr hohe
Knoten- und Teilkantenbildung und
damit ein hohes Datenaufkommen.
Wie kann der Speicherbedarf verringert
werden?
1x
geoinformation.net
Folie 19 von 19
Problemstellung 3 Verringerung des Speicherbedarfs
Zwischenresümee:
l
l
Die Zerlegung in Streifen führt zu
einer schnellen Suche.
Allerdings ist der Speicherbedarf
unvertretbar hoch.
Problem:
l
Gibt es eine bessere Zerlegung, die
die Laufzeit erhält und den
Speicherbedarf verringert?
Herunterladen