Geometrische Algorithmen Punkt-in-Polygon

Werbung
geoinformation.net
Folie 1 von 51
Geometrische Algorithmen Punkt-in-Polygon-Suche
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
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
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 2 von 51
geoinformation.net
Praxisbeispiel Rollover am Bildschirm
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 3 von 51
geoinformation.net
Lösungsansatz 1 Zählen
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 4 von 51
geoinformation.net
Folie 5 von 51
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
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 6 von 51
Lösungsansatz 1 Halbgerade am Punkt anlegen
Aus dem >>Jordanschen Kurvensatz
folgt:
l
l
l
1x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
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 7 von 51
Theorem Jordanscher Kurvensatz
Nach Jordan:
l
l
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
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 8 von 51
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?
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 9 von 51
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
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 10 von 51
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
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Lösungsansatz 2 Zerschneiden
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 11 von 51
geoinformation.net
Folie 12 von 51
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
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
In allen Schnittpunkten der Geraden
mit den Kanten entstehen neue
Knoten.
geoinformation.net
Folie 13 von 51
Lösungsansatz 2 Eigenschaften von S'
S' hat folgende Eigenschaften:
l
l
2x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Die Maschen sind in Trapeze (ggf.
Dreiecke) zerlegt.
Kanten sind in Teilkanten zerlegt.
geoinformation.net
Folie 14 von 51
Lösungsansatz 2 Vorteil von S'
Die Karte erhält eine Struktur, die wir
ausnutzen können:
l
l
2x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Die Streifen sind in x-Richtung
angeordnet.
Innerhalb eines Streifens sind die
Teilkanten und damit die Trapeze in
y-Richtung angeordnet.
geoinformation.net
Folie 15 von 51
Lösungsansatz II Speicherung der Daten
Die Datenspeicherung erfolgt in Arrays:
l
l
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Ein Array enthält die x-Koordinaten
der Streifen.
Jeder Streifen enthält ein Array der
y-Koordinaten der Teilkanten.
geoinformation.net
Folie 16 von 51
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
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 17 von 51
Bemerkungen Eigenschaften der Maschen
Es gilt:
l
l
l
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
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 18 von 51
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.
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 19 von 51
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).
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 20 von 51
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²)
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 21 von 51
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
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 22 von 51
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
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Gibt es eine bessere Zerlegung, die
die Laufzeit erhält und den
Speicherbedarf verringert?
geoinformation.net
Lösungsansatz 3 Tranchieren
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 23 von 51
geoinformation.net
Folie 24 von 51
Lösungsansatz 3 Vereinfachung des Beispiels
Um im Folgenden die Übersicht zu
wahren, wird die Beispielkarte
geändert:
l
l
2x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Löschen zweier Knoten: Ersetzen von
drei Kanten durch eine Kante
Verschieben zweier Knoten
geoinformation.net
Folie 25 von 51
Lösungsansatz 3 Vereinfachende Annahmen
l
l
Umschließen der Karte durch ein
achsenparalleles Rechteck R:
Vermeidung der unbeschränkte
Masche "Außen"
Es existieren keine Knoten mit
gleicher x-Koordinate:
Scherung oder Rotation um den
Winkel e um den Ursprung
e ist sehr klein wodurch die
Topologie erhalten bleibt
Später wird gezeigt, dass diese
Transformation rein virtuell ist
¡
¡
2x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 26 von 51
Lösungsansatz 3 Konstruktion der Trapezkarte T(S)
Vorgehen:
l
2x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Bei der Salamikarte werden alle
Kanten der Landkarte
durchschnitten. Beim Tranchieren
endet der Schnitt an der Kante.
Dadurch werden nur die direkt
betroffenen Kanten zerlegt.
geoinformation.net
Folie 27 von 51
Lösungsansatz 3 Konstruktionsprinzip Trapezkarte
Gegeben ist eine Landkarte S, umschlossen von einem Rechteck R; es existieren
keine Knoten mit gleicher x-Koordinate
Konstruiere für jeden Knoten aus S eine obere und eine untere vertikale
Extension (Linie); diese Linien enden am Schnittpunkt mit der nächsten Kante aus
S oder an R
l
Die Trapezkarte T(S) ist eine Zerlegung, bestehend aus der Landkarte S, dem
Rechteck R und den vertikalen Extensionen
T(S) besteht aus disjunkten Trapezen (Dreiecken), die von (höchstens) vier Seiten
(Kanten) begrenzt werden:
Ein oder zwei vertikale Seiten, gebildet aus den Extensionen
Genau zwei nicht-vertikale Seiten, gebildet aus Segmenten von Kanten
l
¡
¡
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 28 von 51
Lösungsansatz 3 Eigenschaften von T(S)
5 Fälle für die vertikalen Kanten (in der
Abbildung die linken Kanten):
1. Die Kante entartet zu einem Punkt
2. Die untere vertikale Erweiterung
trifft auf eine Kante von S
3. Die obere vertikale Erweiterung trifft
auf eine Kante von S
4. Die Kante besteht aus oberer und
unterer Extension
5. Die Kante besteht aus einer Kante
des Rechtecks R (genau zwei
Trapeze)
5x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 29 von 51
Lösungsansatz 3 Bezeichnungen
Ein Trapez ist durch vier Elemente
eindeutig festgelegt:
top( )
bottom( )
leftp( ): Linker Endpunkt von top( )
oder bottom( ) oder rechter Knoten
einer dritten Kante (linke Kante eines
Trapezes besteht aus oberer und
unterer Extension) oder einer der
linken Knoten von R (Trapez ganz
links
rightp( ):
analog zu leftp( )
l
l
l
l
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Lösungsansatz 3 Komplexität der Trapezkarte
Satz 1:
Eine Trapezkarte T(S) einer Landkarte S mit n Kanten enthält höchstens:
a) 6n + 4 Knoten und
b) 3n + 1 Trapeze.
Beweis:
a) >>Addition der vorkommenden Knoten
b) mit Eulers Formel aus a) (als Übung)
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 30 von 51
geoinformation.net
Lösungsansatz 3 Beweis zu Satz 1a
Satz 1:
Eine Trapezkarte T(S) einer Landkarte S mit n Kanten enthält höchstens:
(a) 6n + 4 Knoten
Beweis:
Ein Knoten der Trapezkarte ist entweder
4
ein Eckpunkt von R
2·n
ein Knoten der Karte S
2·2·n
Endknoten einer Extension
(n Kanten
2 · n Knoten
2 · 2 · n Endknoten)
Insgesamt: 6n + 4
l
l
l
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 31 von 51
geoinformation.net
Folie 32 von 51
Lösungsansatz 3 Adjazenz von Trapezen
Zwei Trapeze und ' heißen adjazent,
wenn sie sich entlang einer vertikalen
Linie berühren.
Es gilt entweder: top( ) = top( ')
oder: bottom( ) = bottom( ')
Ein Trapez kann höchstens zu vier
Trapezen adjazent sein.
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 33 von 51
Lösungsansatz 3 Datenstruktur für T(S)
l
l
Möglich wäre eine doppelt verkettete Kantenliste
Wegen der einfachen Struktur der Trapeze bietet sich folgende Alternative an:
Elemente für Knoten (mit Koordinaten) von S (leftp( ), rightp( ))
Elemente für Kanten (mit Referenzen auf Knoten) von S (top( ), bottom( ))
Elemente für Trapeze von T(S) mit Referenzen auf:
leftp( )
rightp( )
top( )
bottom( )
alle (maximal 4) adjazenten Trapeze
¡
¡
¡
n
n
n
n
n
l
Beachte: Die Geometrie der Trapeze ist nur implizit, kann aber in konstanter Zeit
rekonstruiert werden
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 34 von 51
Lösungsansatz 3 Konstruktion und Suche
l
Probleme:
Konstruktion der Trapezkarte T(S)
Unterstützung der Suche in einer Trapezkarte
¡
¡
l
Idee für das weitere Vorgehen:
Unterstützung der Suche durch eine Art „binärer Suchbaum“ D mit 2 Arten
von Elementen
X-Elemente für Knoten: Links oder Rechts?
Y-Elemente für Kanten: Oben oder Unten?
Trapezkarte und „Baum“ werden simultan konstruiert
¡
n
n
¡
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Lösungsansatz 3 Beispiel für T(S) und D
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 35 von 51
geoinformation.net
Lösungsansatz 3 Aufbau des Beispiels
33x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 36 von 51
geoinformation.net
Folie 37 von 51
Lösungsansatz 3 Zum Algorithmus
l
l
l
l
l
l
l
T(S) und D werden simultan konstruiert
Die Suchstrukur wird schrittweise aufgebaut: Nach "Einfügen" eines Elements in
der Karte S erfolgt ein Update von Suchstruktur und Trapezkarte
D ist kein Baum, sondern ein „DAG“, ein „directed acyclic graph“, ein
gerichteter azyklischer Graph
Dieser DAG ist zusammenhängend, hat genau eine Wurzel und genau ein Blatt für
jedes Trapez von T(S)
In der berechneten Suchstruktur referenzieren sich die Blätter von D und die
Trapeze von T(S) gegenseitig
Wie stets hängt die Tiefe (=Güte) des Baumes von der Reihenfolge der
Bearbeitung der Segmente ab
Idee: Zufällige Permutation der Segmente von S
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 38 von 51
Lösungsansatz 3 Pseudocode: Aufbau von T(S) & D
Input: Eine Landkarte S mit n Kanten
Output:Eine Trapezkarte T(S) und eine Suchstruktur D für T(S) in einem Rechteck R
1. Konstruiere ein umschließendes Rechteck R
2. Berechne eine Permutation s , s ,...,s der Kanten von S
1
2
n
3. for i = 1 to n
4.
5.
6.
do Finde die Trapeze 0,..., k in T(Si-1), die von s i
geschnitten werden
Lösche 0,..., k aus T(Si-1) und ersetze sie durch
neue Trapeze
Entferne die Elemente für 0,..., k aus Di-1 und
füge neue innere Knoten und Blätter an
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 39 von 51
Lösungsansatz 3 Übergang von i-1 zu i
Offene Frage: Wie finden wir
l
l
l
0 ,...,
k?
Konstruktion von T(S i ) und Di mit S i = {s1, ..., si} unter Verwendung
von T(Si-1) und Di-1
"Schleifeninvariante": T(Si-1) ist eine Trapezkarte und D(Si-1) ist eine Suchstruktur
für diese Trapezkarte
Der Unterschied zwischen "i - 1" und " i " betrifft genau die Trapeze in T(S i-1), die
von s i geschnitten werden
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 40 von 51
Lösungsansatz 3 Pseudocode: Finde Trapeze
Input: Das Segment si , T(Si-1) und D(Si-1)
Output: Die Trapeze 0, ..., k, die von s i geschnitten werden.
1. Seien p und q linker und rechter Knoten von s
i
i
i
2. Punkt-in-Polygon für pi in D i-1: Finde 0
3. j = 0;
4. while qi liegt rechts von rightp( j)
5.
do if rightp( j) liegt oberhalb von s i
6.
then j+1 ist der untere rechte Nachbar von
7.
else
j+1
8.
j = j + 1
9. return 0, ...,
ist der obere rechte Nachbar von
k
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
j
j
Wir erhalten zwei Fälle
geoinformation.net
Lösungsansatz 3 Trapezfolge Fall 1
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 41 von 51
geoinformation.net
Lösungsansatz 3 Beispiel zum Fall 1
15x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 42 von 51
geoinformation.net
Lösungsansatz 3 Trapezfolge Fall 2
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 43 von 51
geoinformation.net
Lösungsansatz 3 Beispiel für Fall 2
21x
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 44 von 51
geoinformation.net
Folie 45 von 51
Lösungsansatz 3 Effizienz I - Erwartungswerte
Der oben beschriebene Algorithmus hat folgende Erwartungswerte (gemittelt über
alle Permutationen von n Segmenten):
l
l
l
Konstruktion von T(S) und Aufbau von D(S): O(n log n)
Speicherplatz von D(S): O(n)
Punkt-in-Polygon-Suche mittels D(S): O(log n)
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 46 von 51
Lösungsansatz 3 Effizienz II - Bemerkungen
l
l
l
l
Der Erwartungswert bezieht sich auf die Menge aller Permutationen
Pech bei der Permutation kann zum Worst – Case O(n) für die Suche und zu
entsprechender Tiefe der Suchstruktur führen
Abhilfe durch Stop-Loss-Punkt setzen: Brich ab, falls D(S) zu tief wird, und fange
neu an mit einer neuen Permutation
Differenz zum Worst-Case O(n) für die Suche und O(n 2) für die Konstruktion kann
beliebig klein gemacht werden, ohne daß man von der O(n log n) – Laufzeit für
die Konstruktion von D(S) sehr stark abweicht
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 47 von 51
Lösungsansatz 3 Sonderfallbetrachtung I
Annahme war : Keine zwei Knoten haben die gleiche x-Koordinate!
l
l
l
l
l
Übung: An welcher Stelle im Algorithmus treten Probleme auf, falls zwei Punkte
die gleiche x-Koordinaten haben?
In der Praxis darf dieser Sonderfall natürlich nicht ausgeschlossen werden!
Mögliche Lösung: Rotation der Achse um einen kleinen Winkel
Schwierigkeit: Numerik bei der Rotation um kleine Winkel
Lösung: >>Symbolische Transformation in Form einer Scherung entlang der xAchse:
ist so klein, dass die Reihenfolge der Knoten in x-Richtung erhalten bleibt
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Lösungsansatz 3 Scherung
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 48 von 51
geoinformation.net
Folie 49 von 51
Lösungsansatz 3 Sonderfallbetrachtung II
Anwendung des Algorithmus "Trapezkarte" auf S := { s : s
S}
Problem: Numerik bei Punkten p = (x + y, y)
Wir nutzen statt p = (x + y, y) die Repräsentation ( x, y):
Es werden im Algorithmus keine geometrischen Objekte berechnet, auch
wird nicht benötigt
Es genügen qualitative Aussagen: rechts/links an x-Knoten bzw. oben/unten
an y-Knoten
Diese Aussagen lassen sich durch Betrachtung der Punkte (x, y) treffen
l
¡
¡
¡
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Folie 50 von 51
Lösungsansatz 3 Sonderfallbetrachtung III
Rechts/links-Vergleich zweier transformierter Punkte (xp + yp, yp) und (x q + yq, yq):
l
l
xp!= x q : Vergleich von xp und xq ergibt Reihenfolge der Knoten in x-Richtung
xp = xq : Reihenfolge der transformierten Knoten in x-Richtung hängt von den yKoordinaten ab
Übung: Betrachtung des oben/unten-Vergleichs eines Knotens q = (x + y, y) an
einer Kante s mit den Anfangs- bzw. Endknoten p1 = (x 1 + y1, y1) und p2 = (x 2 +
y2, y2)
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
geoinformation.net
Punkt-in-Polygon-Suche Literatur
De Berg, Mark et al.: Computational Geometry: Algorithms and Applications.
Springer Verlag Berlin, Heidelberg, 1997
Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche
Folie 51 von 51
Herunterladen