Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes,...
-
Upload
kirsten-kopp -
Category
Documents
-
view
220 -
download
3
Transcript of Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes,...
Geoinformation II6. Sem.Vorlesung 113. April 2000
Geometrische Algorithmen - ein einführendes, größeres Beispielfür ein Semester-begleitendes Programmier - Projekt
2
Übersicht über das Semester
• was ist „GIS 2“?– Funktionen von GIS
• Algorithmen in GIS• effiziente Berechnung
– Speicherung räumlicher Objekte in GIS• effiziente Suche
• GIS 1 = Modelle für GIS Welt Modell
• GIS 2 = Modell Rechner• 2 große Algorithmen
– Overlay von Netzen und Flächen (Segmentschnitt)– räumliche Nachbarschaft
• Voronoi-Diagramm, • Delaunay- Triangulation
3
Organisation
• 1 V 1 Ü• 2 Optionen für „1Ü“
– Semesterprojekt: Java-Implementierung des Overlay-Algorithmus in Gruppenarbeit
– Durcharbeiten der in der Vorlesung vorgestellten Algorithmen an Beispielen
• erfolgreiche Teilnahme– aktive Mitarbeit an Programmierprojekt– Test
• Teilnahmevoraussetzung für Klausur (Förstner)
4
Overlay
• von Netzen:– Fluß und Straßennetz: Brücken– Straßen und Eisenbahnnetz: Brücken, Tunnel– Problem: Schnitt von n geraden Linien-Segmenten
• von Landkarten (polygonalen Strukturen)– PLZ und Verkaufsbezirke– Gemeinden und Geologie– Problem: Segmentschnitt + Polygonkonstruktion– heute nur: Schnitt von n Segmenten
5
n-Segment-Schnitt
• einfaches Vorgehen:– paarweiser Vergleich:
s S: s‘ S - {s}überprüfe s und s‘ auf Schnittfreiheit und bestimme ggf. den Schnitt von s und s‘
• Laufzeit: O(n2)für die Praxis viel zu langsam
• Ziel: O(n * log n)• harter und langer Kampf!• erste Idee: betrachte horizontale Projektionen
6
Zur Erinnerung („Diskrete Mathematik“)
Groß-Oh-Notation
Definition:
}, )()( 0| :{ )(
0
00
>nfür alle nnfcngmitcgfO
NN
wobei
...}, 2, 1, {0,0 N existiert" es "
7
Groß-Oh-Notation
Beispiele:
n O n ( )2 5000 2 n O n ( )
n n O n2 25000 ( ) n n O n3 2 3 ( )
O(log n)
O(n log n)
O(n3)
O(n)
... O(exp n)
O(1)
O(n2)
Inklusion:
8
Wachstum
0
10
20
30
40
50
0 2 4 6 8 10 12 14 16 18 20
n²
n log n
9
Hinreichende Bedingung für Schnittfreiheit
• notwendig für Schnitt: Überlappung der horizontalen Projektionen
• Reduktion einer 2-dimensionalen auf eine 1-dimensionale Fragestellung
10
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
11
Idee:
• horizontale Scan-Line über die Ebene schieben– aktive Elemente: Schnitt mit der Scan-Line– nur aktive Elemente können horizontale Überschneidungen
haben– überprüfe aktive Elemente auf Schnittfreiheit
• Problem: wo sind die Haltepunkte der Scan-Line– Anfangspunkt eines Segments– Endpunkt eines Segments– geordnete Menge der x-Koordinaten
12
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
13
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
14
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
15
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
16
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
17
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
18
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
19
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
20
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
21
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
22
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
23
Scan-Line-Verfahren
A
B F
C
D
ES1
S3
S2
S4
24
Gegenbeispiel
zu viele Elemente gleichzeitig aktiv O(n2)
25
Nachbarschaft
-UmgebungA
B
26
Verfeinerung des Algorithmus
• nur benachbarte Segmente betrachten• wie erkennt man sehr schnell, ob zwei Segmente benachbart
sind?• Nutzung der Scan-Line
– Betrachte die Schnittpunkte der aktiven Segmente mit der Scan-Line
– Nachbarschaft ergibt sich aus der Lage der Schnittpunkte
27
Ordnungsrelation „x <‘‘
x x‘
B
A
C
Ax < B
Ax < C
Cx‘ < A
Cx < B
Ax‘ < B
Cx‘ < B
28
Ordnung der Segmente durch die Scan-Line
x< ist eine dynamische (!) Ordnung ...– die nur auf der Menge der aktiven Elemente definiert ist– die Ordnung x< zwischen zwei Elementen wird an ihren
Schnittpunkten umgedreht• aus
a x< b wird am Schnittpunkt s von a und b
b x< a– liefert eine vollständige eindimensionale Ordnung der
aktiven Segmente ...– ... für jeden Haltepunkt der Scan-Line !
29
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
30
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
A
31
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
AE
32
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
B
EA
33
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
B
DA
E
34
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
B
CA
DE
35
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
B
DC
E
36
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
B
EC
D
37
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
F
CB
ED
38
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
B
CF
ED
39
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
B
CF
E
40
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
C
EF
41
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
C
FE
42
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
C
43
Verwaltung der aktiven Elemente
A
B F
C
D
ES1
S3
S2
S4
44
Wann wird der Schnittpunkt S1 erkannt?
A
S1
Übung: Wird ein Schnittpunkt stets genau einmal erkannt?
C
D
E
B
45
Vereinfachende Annahmen
Annahme• 2 Segmente schneiden sich
höchstens in einem Punkt
• in keinem Punkt schneiden sich mehr als 3 Segmente
• die x-Koordinaten aller Segmente sind paarweise verschieden
• kein Segment ist vertikal
Gegenbeispiel
46
Algorithmus Scan-Line
Input:S: eine Menge von SegmentenOutput:die Schnittpunkte der Elemente von SSeiT = Endpunkte der Segmente von S
nach x-Koordinaten sortiert (Haltepunkte)
L = // aktive Segmente von S while T do bestimme und entferne
den nächsten Punkt pTx ist x-Koordinate von p
case: p ist linker Endpunkt von sfuege_ein(s,x,L)sl = vorgaenger(s,x,L)sr = nachfolger(s,x,L)schnitt(sl,s,T);schnitt(s,sr,T);
p ist rechter Endpunkt von ssl = vorgaenger(s,x,L)sr = nachfolger(s,x,L)entferne(s,x,L)schnitt(sl,sr,T)p ist Schnittpunkt von s und tvertausche(s,t,L,x) // t < ssl = vorgaenger(t,x,L)sr = nachfolger(s,x,L)schnitt(sl,t,T)schnitt(s,sr,T)
47
Algorithmus (II)
fuege_ein(s,x,L): fügt das Segment s in die Menge L ein entsprechend der Ordnung an der Stelle x
entferne(s,x,L): entfernt das Segment s aus die Menge L an der Stelle xnachfolger(s,x,L): liefert den Nachfolger von s in L an der Stelle x, falls
vorhandenvorgaenger(s,x,L) liefert den Vorgänger von s in L an der Stelle x, falls
vorhandenschnitt(s,t,T) prüft s und t auf Schnitt. Berechnet ggf. den Schnittpunkt p
und fügt ihn als neuen Haltepunkt in T ein. offene Probleme:
eine geeignete Datenstruktur für Teine geeignete Datenstruktur für LPrüfung auf Schnitt, Berechnung des Schnittpunkts
48
Prüfung auf Schnittfreiheit
• 1. Idee– Berechnung der Geradengleichungen g und g‘ der
Segmente s und s‘– Schnittpunkt p von g und g‘– prüfe ob p in s und s‘
• Problem– vertikale Segmente– Vermeidung unangenehmer Sonderfälle
49
Segmentschnitt I
g1
g2
c)
g2g1
b)
g1
g2
a)
50
Segmentschnitt II
• Reduktion auf das Problem• P1, P2 liegen auf der gleichen
/ verschiedenen Seiten der durch g induzierten Geraden
• Homogene Koordinaten:P1=(x1,y1,w1)P2=(x2,y2,w2)P=(x,y,w)
D > 0
D < 0
D = 0P
P2
P1s
gPDgPD
gPD
wwwyyyxxx
DPPPD auf liegt ist, 0 wenn
vonrechts liegt ist, 0 wenn vonlinks liegt ist, 0 wenn
),,(
21
21
21
21
51
Einfacher Segmentschnitt I
S1 = det ( P1,P3,P4) Def.: Vor.: Alle Determinanten sind 0:S2 = det ( P3,P1,P2) g und g` schneiden sich genau dann, wenn S1, S2
S3 = det ( P2,P3,P4) sowie S3, S4 jeweils verschiedene Vorzeichen S4 = det ( P4,P1,P2) haben.
P2
P1
P3 P4
P2
P3
P4
P1g
g`
P2
P1
P3
P4
52
Einfacher Segmentschnitt II
Wenn alle Determinanten gleich Null sind, dann folgt daraus, daß alle vier Punkte kollinear sind.
- eine Determinante ist Null:
=> Algorithmus: Einsparen von Multiplikationen