Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes,...

52
Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier - Projekt

Transcript of Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes,...

Page 1: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

Geoinformation II6. Sem.Vorlesung 113. April 2000

Geometrische Algorithmen - ein einführendes, größeres Beispielfür ein Semester-begleitendes Programmier - Projekt

Page 2: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 3: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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)

Page 4: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 5: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 6: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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 "

Page 7: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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:

Page 8: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

8

Wachstum

0

10

20

30

40

50

0 2 4 6 8 10 12 14 16 18 20

n log n

Page 9: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

9

Hinreichende Bedingung für Schnittfreiheit

• notwendig für Schnitt: Überlappung der horizontalen Projektionen

• Reduktion einer 2-dimensionalen auf eine 1-dimensionale Fragestellung

Page 10: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

10

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 11: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 12: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

12

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 13: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

13

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 14: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

14

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 15: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

15

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 16: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

16

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 17: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

17

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 18: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

18

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 19: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

19

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 20: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

20

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 21: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

21

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 22: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

22

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 23: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

23

Scan-Line-Verfahren

A

B F

C

D

ES1

S3

S2

S4

Page 24: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

24

Gegenbeispiel

zu viele Elemente gleichzeitig aktiv O(n2)

Page 25: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

25

Nachbarschaft

-UmgebungA

B

Page 26: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 27: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

27

Ordnungsrelation „x <‘‘

x x‘

B

A

C

Ax < B

Ax < C

Cx‘ < A

Cx < B

Ax‘ < B

Cx‘ < B

Page 28: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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 !

Page 29: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

29

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

Page 30: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

30

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

A

Page 31: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

31

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

AE

Page 32: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

32

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

B

EA

Page 33: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

33

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

B

DA

E

Page 34: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

34

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

B

CA

DE

Page 35: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

35

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

B

DC

E

Page 36: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

36

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

B

EC

D

Page 37: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

37

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

F

CB

ED

Page 38: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

38

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

B

CF

ED

Page 39: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

39

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

B

CF

E

Page 40: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

40

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

C

EF

Page 41: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

41

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

C

FE

Page 42: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

42

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

C

Page 43: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

43

Verwaltung der aktiven Elemente

A

B F

C

D

ES1

S3

S2

S4

Page 44: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

44

Wann wird der Schnittpunkt S1 erkannt?

A

S1

Übung: Wird ein Schnittpunkt stets genau einmal erkannt?

C

D

E

B

Page 45: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 46: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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)

Page 47: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 48: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 49: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

49

Segmentschnitt I

g1

g2

c)

g2g1

b)

g1

g2

a)

Page 50: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 51: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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

Page 52: Geoinformation II 6. Sem. Vorlesung 1 13. April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.

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