- Fachgebiet Datenbanken und Informationssysteme

Werbung
F D  I
I ̈ P I
F̈ ̈ E  I
L U̈ H
Optimierung von
Rubber-Sheeting-Verfahren
in räumlichen Datenbanken
Bachelorarbeit
im Studiengang Informatik
Denis T. Wirries
Matr.Nr. 2180113
Erstprüfer: Prof. Dr. Udo Lipeck
Betreuer: M.Sc. Hendrik Warneke
Zweitprüfer: Dr. Hans H. Brüggemann
Bearbeitungsdauer: 01.11.2006 - 01.03.2007
Denis T. Wirries
Matr.Nr. 2180113
Fachgebiet Datenbanken und Informationssysteme
Leibniz Universität Hannover
Welfengarten 1
30167 Hannover
Erstellt mit LATEX 1 und TEXnicCenter.
Stand: 28. Februar 2007
1
siehe [Gün04]
II
Zusammenfassung
In dieser Arbeit wollen wir verschiedene Ansätze für das Rubber-Sheeting
von Kartenblättern untersuchen, die in einer räumlichen Datenbank umgesetzt werden. Dazu betrachten wir im ersten Teil die theoretischen Grundlagen, die benötigt werden, um reale Kartenobjekte in räumliche Datenbanken
zu überführen. Wichtig hierbei ist das Verständnis, wie man Kartenobjekte
geeignet modelliert und effizient in der Datenbank bereitstellt.
Im zweiten Teil werden wir uns mit den eigentlichen Rubber-Sheeting-Verfahren beschäftigen und kennen lernen, wie diese Verfahren funktionieren.
Wir definieren dazu einen Prozess, in dem die vorgeschlagen Rubber-SheetingFunktionen eingebunden sind. Abschließend betrachten wir noch ein ausführliches Beispiel der vorgestellten Verfahren.
Im dritten Teil beschäftigen wir uns mit der konkreten Umsetzung der Verfahren in einer räumlichen Datenbank. Wir benutzen für die Tests dieser Verfahren reales Kartenmaterial, das wir zunächst vorstellen wollen. Wir werden dann auf die Umsetzung des Rubber-Sheeting-Prozesses eingehen und
die einzelnen Schritte näher erläutern. Für den Vergleich der Ergebnisse aus
den Rubber-Sheeting-Verfahren werden wir einige Bewertungskriterien und
-Verfahren bereitstellen.
Den Abschluss dieser Arbeit bildet die Vorstellung der Testergebnisse und die
Beschreibung der Implementierung des Rubber-Sheetings.
III
IV
Erklärung
Hiermit versichere ich, dass ich die vorliegende Arbeit und die zugehörige
Implementierung selbständig verfasst und dabei nur die angegebenen Quellen
und Hilfsmittel verwendet habe.
Hannover, 1. März 2007
Denis T. Wirries
V
VI
Inhaltsverzeichnis
1
2
Einleitung
1
1.1
Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Zielsetzung & Voraussetzungen . . . . . . . . . . . . . . . . . . .
2
1.3
Gliederung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Grundlagen räumlicher Datenbanksysteme
5
2.1
Räumliche Datenbanksysteme . . . . . . . . . . . . . . . . . . . .
5
2.2
Modellierung von Geodaten . . . . . . . . . . . . . . . . . . . . .
6
2.2.1
Eigenschaften von Geodaten . . . . . . . . . . . . . . . .
10
Feature-Geometry-Modell . . . . . . . . . . . . . . . . . . . . . .
14
2.3.1
Geometrie . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.3.2
Topologie . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Räumliche Datenbankmodelle . . . . . . . . . . . . . . . . . . . .
19
2.4.1
Simple-Feature-Modell . . . . . . . . . . . . . . . . . . . .
19
2.4.2
SQL/MM Spatial . . . . . . . . . . . . . . . . . . . . . . .
21
2.4.3
Bezugssysteme . . . . . . . . . . . . . . . . . . . . . . . .
22
2.4.4
Lineares Bezugssystem . . . . . . . . . . . . . . . . . . .
24
2.5
Topologische Prädikate . . . . . . . . . . . . . . . . . . . . . . . .
25
2.6
Oracle Spatial . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
2.6.1
SDO GEOMETRY . . . . . . . . . . . . . . . . . . . . . .
28
2.6.2
Unterstützung durch Indexstrukturen . . . . . . . . . . .
31
2.6.3
Spatial-Operatoren . . . . . . . . . . . . . . . . . . . . . .
32
2.3
2.4
3
Grundlagen der Rubber-Sheeting-Verfahren
35
3.1
35
Einführung in das Rubber-Sheeting . . . . . . . . . . . . . . . . .
VII
VIII
3.2
Definitionen der wichtigsten Begriffe . . . . . . . . . . . . . . . .
36
3.3
Rubber-Sheeting als Prozess . . . . . . . . . . . . . . . . . . . . .
38
3.4
Rubber-Sheeting-Funktionen . . . . . . . . . . . . . . . . . . . .
40
3.4.1
Triangulation, Gillman 1985 . . . . . . . . . . . . . . . . .
41
3.4.2
Langlois Methode, Laurini 1998 . . . . . . . . . . . . . .
44
3.4.3
Doytsher 2001 . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.4
Haunert 2005 . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.4.5
Hybrid-Vorschlag . . . . . . . . . . . . . . . . . . . . . . .
51
Rubber-Sheeting Beispiele . . . . . . . . . . . . . . . . . . . . . .
53
3.5
4
5
6
INHALTSVERZEICHNIS
Durchführung der Rubber-Sheeting-Verfahren
57
4.1
Matching von Objekten . . . . . . . . . . . . . . . . . . . . . . . .
57
4.2
Ergebnisse des Matchings . . . . . . . . . . . . . . . . . . . . . .
58
4.3
Anwenden des Rubber-Sheetings . . . . . . . . . . . . . . . . . .
59
4.3.1
Gegebene Daten . . . . . . . . . . . . . . . . . . . . . . .
59
4.3.2
Vorbereitung der Ergebnisse . . . . . . . . . . . . . . . .
60
4.3.3
Erstellung der Verschiebungsvektoren . . . . . . . . . . .
62
4.3.4
Durchführung des Rubber-Sheeting . . . . . . . . . . . .
67
4.4
Filterung der Vektoren . . . . . . . . . . . . . . . . . . . . . . . .
69
4.5
Bewertungskriterien . . . . . . . . . . . . . . . . . . . . . . . . .
70
4.5.1
Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
4.5.2
Topologieveränderung . . . . . . . . . . . . . . . . . . . .
71
4.5.3
Flächenabweichung . . . . . . . . . . . . . . . . . . . . .
72
4.5.4
Verschiebungsverhalten . . . . . . . . . . . . . . . . . . .
73
Testergebnisse
75
5.1
Statistische Daten . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
5.2
Geometrisches gegen topologisches Datenmodell . . . . . . . .
78
5.2.1
Ergebnisse des geometrischen Datenmodells . . . . . . .
78
5.2.2
Ergebnisse des topologischen Datenmodells . . . . . . .
81
5.3
Globale gegen Maschen-lokale Verfahren . . . . . . . . . . . . .
84
5.4
Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
Ausblick
91
INHALTSVERZEICHNIS
IX
7
Implementierung
95
7.1
Tabellenstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
7.1.1
Geometrisches Datenmodell (GDM) . . . . . . . . . . . .
96
7.1.2
Topologisches Datenmodell (TDM) . . . . . . . . . . . .
96
7.1.3
Vektoren . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
7.1.4
Triangulation . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.1.5
Neue Passpunkte beim Hybrid-Ansatz . . . . . . . . . . 101
7.1.6
Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.2
7.3
Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.2.1
Rubber-Sheeting-Prozess . . . . . . . . . . . . . . . . . . 104
7.2.2
Rubber-Sheeting-Funktionen . . . . . . . . . . . . . . . . 108
7.2.3
Bewertungsverfahren . . . . . . . . . . . . . . . . . . . . 109
Triangulationsalgorithmus . . . . . . . . . . . . . . . . . . . . . . 110
A Implementierungsbeispiele
113
A.1 Durchführung des Rubber-Sheetings . . . . . . . . . . . . . . . . 113
A.2 Topologie des Ergebnisses testen . . . . . . . . . . . . . . . . . . 113
B Tabellen für die Rubber-Sheeting Beispiele
115
C Lösung der Integrale aus dem Verfahren nach Haunert
119
X
INHALTSVERZEICHNIS
Kapitel 1
Einleitung
1.1
Motivation
Geographische Informationen werden heutzutage in vielen Bereichen zunehmend elektronisch verarbeitet. Der Umgang mit diesen Informationen wird
durch spezielle Software-Systeme unterstützt. Heutzutage gibt es eine Vielzahl
von solchen geographischen Informationssystemen (GIS) 1 , die geographische
Daten in den unterschiedlichsten Formaten verarbeiten können.
Für die Verwaltung der geographischen Daten werden in der Regel objektrelationale Datenbanksysteme eingesetzt. Wenn das Datenbanksystem zusätzliche Funktionalitäten für geometrische Objekte anbietet, spricht man von einem räumlichen Datenbanksystem. Durch ein solches System lassen sich die
Vorteile einer Datenbank, wie z.B. Effizienz, Nebenläufigkeit usw., auf die Verwaltung von großen geographischen Datenbeständen übertragen.
Je nachdem, wie und zu welchem Zweck die geographischen Daten erhoben
werden, unterscheidet sich auch ihre geometrische Darstellung, Genauigkeit
und Vollständigkeit. Dies kann zum einen durch die Erfassung passieren, z.B.
ein vorhandenes Kartenblatt durch Scannen zu digitalisieren oder das Gebiet durch GPS vermessen. Zum anderen bestimmt der spätere Verwendungszweck die Vollständigkeit der Informationen. So benötigen, z.B. das städtische
Bauamt und ein Anbieter für Straßenkarten stark unterschiedliche geographische Informationen. Beim Bauamt sind, z.B. Informationen über Verkehrswege,
Siedlungs- und Verwaltungsgebiete wichtig, bei den Straßenkarten kommt es
auf die Genauigkeit, Vollständigkeit und Aktualität der Straßeninformationen
an.
Aufgrund dieser Unterschiede wird es nie nur einen Anbieter für geographische Informationen geben. Die Anbieter werden in ihren Datenbeständen immer gewisse Schwerpunkte setzen, wie z.B. hohe Genauigkeit und Aktualität
des Straßennetzes, der Baugebiete oder Rohrsysteme usw. Dadurch existieren eine Vielzahl von autonomen geographischen Datenbeständen, die zwar
1
Eine Studie über Open Source GIS Systeme findet man in [Ram06].
1
2
KAPITEL 1. EINLEITUNG
gemeinsame Bestandteile enthalten, welche aber aufgrund der unterschiedlichen Verwendung und Repräsentation mehr oder weniger stark von einander
abweichen können. Diese Problematik erschwert somit die Kombination von
zwei Datenbeständen miteinander, die man z.B. bei der Übertragung von Aktualisierungen eines Datenbestandes auf einen anderen benötigt.
Ein weiteres Anwendungsszenario befindet sich im Bereich der föderierten
räumlichen Datenbanksysteme. Hier möchte man geographische Informationen aus verschiedenen Datenbeständen miteinander kombinieren, um so vielfältigere Anwendungsmöglichkeiten zu unterstützen. Den Benutzern des föderierten Datenbanksystems sollen aber die auftretenden Unterschiede in den
einzelnen Datenbanken verborgen bleiben. Deshalb muss ein automatisches
Anpassungsverfahren die geographischen Daten der unterschiedlichen Quellen entsprechend für die Benutzer aufbereiten.
1.2
Zielsetzung & Voraussetzungen
In dieser Arbeit sollen verschiedene Vorschläge für ein Anpassungsverfahren untersucht werden, welche die Geometrien der unterschiedlichen Datenbestände geeignet anpasst. Diese Art der Anpassung bzw. Transformation von
Geometrien über ein Kartenblatt nennt man Rubber-Sheeting“. Das Rubber”
Sheeting transformiert die geometrischen Objekte des einen Datenbestandes
durch eine Art elastische Transformation entsprechend der Abweichung von
den gemeinsamen Objekten der beiden Kartenblätter. Das Ergebnis sind transformierte Objekte, die zu dem zweiten Datenbestand passen.
Insbesondere soll hier ein Anwendungsszenario betrachtet werden, indem Objekte in einen anderen Datenbestand übertragen werden. Für die Transformation mit dem Rubber-Sheeting benötigt man die Abweichung der gemeinsamen
Kartenobjekte. Dazu sollen verschiedene Möglichkeiten untersucht werden,
wie sich die Verschiebung an diesen gemeinsamen Objekten berechnen lässt.
Für die Identifizierung der gemeinsamen Objekte, an den die Verschiebung
bestimmt wird, soll der gegebene Matching-Prozess, der Bestandteil der Arbeiten von [Man02] und [Kre04] ist, verwendet werden. Anschließend werden
die Geometrien entsprechend dem Rubber-Sheeting transformiert. Zusätzlich
zu den Rubber-Sheeting-Verfahren soll untersucht werden, welches Datenmodell sich für die Transformation der geographischen Objekte besser eignet.
Die aus der Literatur ausgewählten Vorschläge sollen dann im Oracle-Datenbanksystem mit räumlicher Erweiterung implementiert und getestet werden.
Weiterhin sollen möglichst automatisch bestimmbare Kriterien aufgestellt werden, z.B. Performanz und topologische Konsistenz, mit denen die Qualität
der untersuchten Verfahren beurteilt werden kann. Mittels dieser Kriterien
soll dann auch das Ergebnis der experimentellen Untersuchung der betrachten Rubber-Sheeting-Verfahren evaluiert werden. Dazu sind geeignete Bewertungsverfahren zu implementieren.
1.3. GLIEDERUNG
1.3
3
Gliederung
In Kapitel 2 werden wir uns zunächst mit den Grundlagen räumlicher Datenbanksysteme befassen. Dazu betrachten wir in Abschnitt 2.2 wie sich geographische Informationen geeignet modellieren lassen und in Abschnitt 2.3
unterscheiden wir zwei grundlegende Datenmodelle für geometrische Objekte. Der Abschnitt 2.4 geht dann auf die Modelle ein, die in räumlichen Datenbanken verwendet werden. Die vorgestellten topologischen Prädikate aus
Abschnitt 2.5 werden später bei der Durchführung und den Bewertungsverfahren verwendet, um topologische Anfragen zu formulieren.
Das Kapitel 3 befasst sich mit den Grundlagen des Rubber-Sheetings, erläutert
die wichtigsten Begriffe und beschreibt den Ablauf des Rubber-Sheeting-Prozesses. In Abschnitt 3.4 werden die aus der Literatur ausgewählten RubberSheeting-Funktionen vorgestellt und erläutert. In dieser Arbeit werden vier
Vorschläge untersucht:
• Triangulation, Gillman 1985
• Langlois Methode, Laurini 1998
• Doytsher 2001
• Haunert 2005
Zusätzlich zu den Vorschlägen aus der Literatur, wird noch eine Kombination
aus zwei dieser Verfahren untersucht. Den Abschluss des Kapitel bildet ein
ausführliches Beispiel, das die obigen vier Verfahren in Aktion zeigt.
Kapitel 4 befasst sich mit der Umsetzung der Verfahren aus Kapitel 3 und
beschreibt die Möglichkeit, wie eine Umsetzung in einer Datenbankumgebung
ablaufen kann. Dazu werden zunächst die Ergebnisse des Matching-Prozesses
untersucht. Damit wird dann in Abschnitt 4.3 die Durchführung des RubberSheetings beschrieben. Abschnitt 4.4 zeigt am Verfahren von Laurini, wie sich
die Filterung von Vektoren auf das Verfahren auswirkt. Im letzten Abschnitt 4.5
werden die Bewertungskriterien vorgestellt, mit denen die Verfahren evaluiert
werden können.
In Kapitel 5 werden dann die Testergebnisse der Rubber-Sheeting-Verfahren
vorgestellt und mit den implementierten Verfahren bewertet. Dabei untersuchen wir das Rubber-Sheeting auf dem geometrischen und topologischen Datenmodell. Kapitel 6 gibt einen kleinen Ausblick über die noch zu untersuchenden Möglichkeiten des Rubber-Sheetings. In Kapitel 7 werden die entwickelten
Prozeduren und Funktionen beschrieben.
4
KAPITEL 1. EINLEITUNG
Kapitel 2
Grundlagen räumlicher
Datenbanksysteme
Bevor wir nun in die Thematik des Rubber-Sheeting einsteigen, betrachten
wir erstmal die wichtigsten Begriffe und Eigenschaften von räumlichen Datenbanksystemen. Speziell werden wir dabei die wichtigsten Eigenschaften von
Geodaten betrachten, wie die Geometrie und Topologie. In der zweiten Hälfte
des Kapitels sehen wir uns dann die konkreten Datenmodelle für diese geometrischen Objekte an, sowie deren Einfluss auf heutige Datenbanksysteme.
Gegen Ende des Kapitels werden wir noch kurz auf topologische Prädikate
eingehen, mit denen sich gezielt topologische Anfragen auf räumliche Daten
formulieren lassen. Den Abschluss des Kapitels bildet eine kurze Einführung in
Oracle Spatial, in der auf die wichtigsten Aspekte für diese Arbeit eingegangen
wird.
2.1
Räumliche Datenbanksysteme
Was sind räumliche Datenbanksysteme? Datenbanksysteme, welche die Speicherung von geometrischen Objekten und Verarbeitung von räumlichen Anfragen unterstützen, werden im Allgemeinen als räumliche Datenbanksysteme oder
Geodatenbanksysteme (engl. Spatial Database Systems) bezeichnet. Diese Systeme
unterstützten auch den Benutzer bei der Manipulierung dieser Objekte, indem
sie Methoden zum Verändern oder Abfragen bereitstellen.
Die Einsatzgebiete dieser räumlichen Datenbanksysteme sind vielseitig. Eins
der wichtigsten Anwendungsgebiete ist die Bereitstellung von digitalen Landkarten in sogenannten Geo-Informationssystemen. Dabei werden die realen Objekte, wie Verkehrswege, Siedlungsgebiete, usw., durch entsprechend modellierte Objekte in der Datenbank abgebildet. Mehr dazu in Abschnitt 2.2.
In räumlichen Datenbanken werden Geoobjekte (engl. (Geographic) Features oder
Spatial Objects) gespeichert, die wiederum Objekten der realen Welt entspre5
6
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
chen. Dabei besteht ein Geoobjekt aus zwei wesentlichen Komponenten, zum
einen aus verschiedenen Attributen, die durch die Standarddatentypen des
Datenbanksystems repräsentiert werden, und zum anderen aus einem geometrischen Attribut, dass durch einen speziellen Datentyp des räumlichen
Datenbanksystems repräsentiert wird. Der erste Teil dient zur Beschreibung
des Objektes, der zweite gibt die geometrischen Eigenschaften wieder, auf die
wir später noch näher eingehen werden.
Wie lässt sich nun so ein System realisieren? Ein nahe liegender Ansatz ist
die Erweiterung des (objekt-)relationalen Datenbanksystems um eine Untersützung für geometrische Daten. Das Datenmodell muss die geforderten
geometrischen Eigenschaften hinreichend gut beschreiben können und effiziente Methoden für die Anfrage und Manipulation der Daten anbieten. Dabei
bleiben alle ursprünglichen Eigenschaften und Vorteile eines relationalen Datenbanksystems erhalten.
Zusammenfassend kann man festhalten, ein räumliches Datenbanksystem
stellt ein entsprechendes Datenmodell für Geoobjekte bereit. Für die effiziente
Unterstützung ist folgendes notwendig:
• Das räumliche Datenbanksystem stellt ein Datenmodell für den geometrischen Datentyp bereit, um die in der Realität auftretenden Objekte
geeignet modellieren zu können. Dazu gehören unter anderem Punkte,
Linien, Streckenzüge, Polygone mit oder ohne Löcher und Mengen von
geometrischen Objekten.
• Es werden Methoden für diesen geometrischen Datentyp angeboten,
um die Ausführung von geometrischen Funktionen zu erlauben. Solche Funktionen berechnen z.B. den Schnitt zweier Polygone oder Linien,
bestimmen die Länge eines Streckenzuges oder prüfen, ob ein Punkt innerhalb einer Fläche liegt. Die Funktionen sind in die Anfragesprache des
Datenbanksystems integriert, um auch weitere Bedingungen an andere
nicht-geometrische Attribute zu unterstützen.
• Wenn eine Anfragebedingung eine oder mehrere Operationen, die sich
auf geometrische Objekte beziehen, enthält, wird die Anfrage in eine oder
eine Folge von räumlichen Basisanfragen übersetzt.
• Um die Verarbeitung von räumlichen Basisanfragen und anderen geometrischen Operationen effizient durchzuführen, unterstützt das Datenbanksystem die Algorithmen mit räumlichen Indexen, um so die Laufzeit
der Anfrage so gering wie möglich zu halten.
2.2
Modellierung von Geodaten
Um Informationen aus der realen Welt rechnergestützt speichern und verarbeiten zu können, ist es notwendig die Informationen in einem (Daten-) Modell
2.2. MODELLIERUNG VON GEODATEN
7
abzubilden. Dabei ist es notwendig diese Informationen geeignet zu vereinfachen und in gewisser Weise auch zu standardisieren, um die Komplexität
der realen Welt zu reduzieren und sie für den Computer berechenbar“ bzw.
”
erfassbar zu machen.
Auch hilft das Datenmodell, die Informationen für ihren späteren Einsatzzweck vorzubereiten, indem es geeignete Methoden und Operationen zur
Verfügung stellt. Also benötigen wir ein Modell, das speziell auf die Anforderungen für Geodaten zugeschnitten ist. Ein solches Modell betrachten wir
dann im Abschnitt 2.3, aber bevor wir damit beginnen können, gehen wir noch
in Abschnitt 2.2.1 auf die wichtigsten Eigenschaften von Geodaten ein.
Zusätzlich zu dem Datenmodell benutzt man ein Beschreibungsmodell um
Informationen über das geometrische Objekt zu erfassen. Diese Informationen werden meist nach einem standardisierten Objektkatalog erfasst. Die in
dieser Arbeit verwendete Modellierung bzw. Beschreibung der Geodaten ist
durch das ATKIS-Modell gegeben. Das Amtlich Topographisch-Kartographische
”
Informationssystem“ (ATKIS) umfasst in der Form von der Arbeitsgemeinschaft
der Vermessungsverwaltungen der Länder der Bundesrepublik Deutschland
(AdV) aus dem Jahr 1989 zwei Datenmodelle:
• Das Digitale Landschaftsmodell (DLM), das zur Speicherung von topographischen Objekten dient,
• und das Digitale Kartographische Modell (DKM) 1 , das der Speicherung
der Karteninformationen dient.
Das ATKIS-Modell speichert die topographischen Objekte der realen Welt attributorientiert, d.h. die Objekte werden nach Objektbereichen, -gruppen und
-arten grob und durch zusätzliche Attribute fein gegliedert. Weiterführende
Informationen findet man in [ATK01] oder [Man02].
Die Einteilung der topographischen Objekte erfolgt dabei gemäß einem maßstabsspezifischen Objektartenkatalog. Die Objektklassifikation ist hierarchisch
angeordnet. Abbildung 2.2.1 (links) zeigt einen Ausschnitt aus dem ATKISKatalog. In diesem Katalog werden die zu erfassenden Objekte definiert und
die zu speichernden Attribute festgelegt. Topologische Beziehungen werden
dabei nicht explizit gespeichert, sondern gehen implizit aus der Objektgeometrie hervor. Die Abbildung 2.2.1 (rechts) zeigt einen Ausschnitt des abstrakten
Schemas des ATKIS-Modells nach [NK95].
Beispiel 2.2.1 (Beispiel ATKIS-Geodaten) In Abbildung 2.2.2 sieht man ein Beispiel für die Modellierung zweier Geoobjekte nach dem ATKIS-Objektartenkatalog.
Für die Objekte ergeben sich dabei folgende Eigenschaften:
Objekt 1:
• GN2 : Königsallee
1
2
in dieser Arbeit nicht relevant
Geographischer Name
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
8
Objektbereich
1000
Festpunkte
2000
Siedlung
3000
Verkehr
4000
Vegetation
5000
Gewässer
6000
Relief
7000
Gebiete
Objektgruppe
2100
Baulichgeprägte Flächen
2200
Siedlungsfreiflächen
2300
Bauwerke und
Einrichtungen
Objektart
2201 Sportanlage
2202 Freizeitanlage
2211 Freilichttheater
2212 Freilichtmuseum
...
1
gehört_zu_Objektbereich
Objektbereich
0...*
1
besitzt
besitzt_Attribut
0...*
Attribut
0...*
gehört_zu_Objektgruppe
Objektgruppe
0...*
0...*
0...*
gehört_zu_Objektart
Objektart
1
0...*
1
Objekt
besteht_aus
1... *
Objektteil
Abbildung 2.2.1: Auszug aus dem ATKIS-Objektartenkatalog & abstraktes
Schema des ATKIS-Modells
2.2. MODELLIERUNG VON GEODATEN
9
1
2
Abbildung 2.2.2: Beispiel zweier ATKIS-Objekte
• ZN3 : Deutsche Weinstraße
• KN4 : B4
• Objektbereich: 3000 (= Verkehr)
• Objektgruppe: 3100 (= Straßenverkehr)
• Objektart: 3101 (= Straße)
• Objekttyp: linienförmig (geometrische Repräsentation)
• zusätzliche Attribute:
- BDI (= Verkehrsbedeutung innerörtlich) 2000 (= Ortsverkehr)
- BFS (= Besondere Fahrstreifen) 1000 (= mit Radweg)
Objekt 2:
• GN: Herzogstraße
• ZN: • KN: L5
• Objektbereich: 3000 (= Verkehr)
• Objektgruppe: 3100 (= Straßenverkehr)
• Objektart: 3101 (= Straße)
• Objekttyp: linienförmig (geometrische Repräsentation)
• zusätzliche Attribute:
- BFS (= Besondere Fahrstreifen) 3000 (= mit Rad- und Fußweg)
3
4
Zweitname
Kurzbezeichnung
10
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
2.2.1
Eigenschaften von Geodaten
Die zu modellierenden Eigenschaften von Geodaten lassen sich in vier Kategorien einteilen (vgl. dazu auch [Lan02] und [Bri05]):
• Thematische Eigenschaften sind Sachinformationen zu Geoobjekten, z.B.
kann dieses bei einer Straße der Name, die Breite und / oder die Art
der Straße sein. Man unterscheidet hier nominale Eigenschaften, beispielsweise der Name der Straße, qualitative Eigenschaften, die Art der
Straße, und quantitative Eigenschaften, die Breite der Straße. Thematische Eigenschaften werden direkt als Attribute in der Datenbank realisiert und einem Geoobjekt zugeordnet, zum Beispiel nach dem ATKISObjektartenkatalog - siehe hierzu Beispiel 2.2.1.
• Geometrische Eigenschaften repräsentieren die Lage und Ausdehnung von
Objekten im Raum. Über Stützpunkte, die über Koordinaten beschrieben
werden, können so die Objekte modelliert werden. Dabei gibt es gewisse
Grundgeometrien, wie Punkte, Linien und Polygone, dazu aber mehr in
Abschnitt 2.3.
• Topologische Eigenschaften beschreiben die relativen räumlichen Beziehungen von Objekten zueinander, wobei von der Geometrie abstrahiert wird.
Häufige topologische Beziehungen sind der Schnitt zweier Objekte, das
Enthaltensein in einem Objekt oder die Nachbarschaft von Objekten.
Durch eine stetige Transformation, wie das Verschieben, Drehen oder
Skalieren aller Kartenobjekten wird die Topologie nicht verändert.
• Temporale Eigenschaften bezeichnen einen Zeitpunkt oder Zeitraum, für
den die obigen Eigenschaften gelten. Somit lassen sich zeitliche Veränderungen in räumlichen Datenbanken nachvollziehen, z.B. Wachstum der
Fläche einer Stadt über einen Zeitraum. Die Unterstützung von spatiotemporalen Datenmodellen durch eine räumliche Datenbank ist derzeit
Thema der Forschung (vgl. dazu Abschnitt 13.2 aus [Bri05]).
Für diese Arbeit sind nur die geometrischen und topologischen Eigenschaften
relevant. Die thematischen Eigenschaften dienen lediglich zur Auswahl und
Identifizierung von Objekten.
Geometrische Eigenschaften
Für die Repräsentation von geometrischen Objekten lassen sich vier Grundsatzmodelle voneinander unterscheiden: das Vektormodell und das Rastermodell,
sowie das objektbasierte und das raumbasierte Datenmodell. Diese unterscheiden
sich grundsätzlich in der Art der Speicherung der Objekte bzw. des Raumes.
Das Rastermodell zerlegt den gesamten Datenraum in quadratische oder rechteckige - meist äquidistante - Rasterzellen, die dann abgespeichert werden. Diese
2.2. MODELLIERUNG VON GEODATEN
11
Abbildung 2.2.3: Vektor- und Rastermodell
Art der Speicherung wird häufig in Verbindung mit raumbasierten Datenmodellen verwendet, die den gesamten Datenraum abspeichern.
Beim Vektormodell werden die Objekte durch Punkte und Linien repräsentiert.
Die Punkte bilden die Stützstellen bzw. Stützpunkte des Objektes. Die Lage
der Punkte wird über Koordinaten bzgl. eines Koordinatensystems (siehe Abschnitt 2.4.3) beschrieben. Die Stützpunkte können durch Linien miteinander
verbunden werden, um dadurch auch komplexe Einheiten wie Streckenzüge
oder Polygone (ohne oder mit Löchern) zu beschreiben.
Abbildung 2.2.3 zeigt ein Beispiel, in dem eine Fläche durch ein Vektor- und
durch ein Rastermodell repräsentiert wird. In dieser Arbeit wird ausschließlich
das objektorientierte Vektormodell benutzt.
Bemerkung 2.2.1 (Delaunay-Triangulation) Ein spezielle Anwendung des Vektormodells ist die Delaunay-Triangulation [Del34], oft auch nur Triangulierung genannt. Sie beschreibt eine Oberfläche durch Dreiecke und gehört so zu den raumbasierten Vektormodellen (Tabelle 2.2.1 (links unten)).
TIN steht für die Abkürzung Triangulated Irregular Network und bezeichnet die
Möglichkeit durch Triangulation Oberflächen auf Grundlage einer 3D-Punktwolke
(Massenpunkte) zu modellieren. Die Massenpunkte werden dazu dreiecksvermascht.
Die Delaunay-Triangulation versucht nun die Punkte so geschickt durch Dreiecke zu
verbinden, dass innerhalb eines Kreises, auf dem die drei Dreieckspunkte liegen, keine
anderen Punkte enthalten sind. Abbildung 3.5.3 (orange Linien) zeigt ein Beispiel für
eine TIN-Struktur.
In Tabelle 2.2.1 sind noch einmal zusammenfassend die einzelnen Kombinationsmöglichkeiten der Modelle aufgeführt.
Topologische Eigenschaften
Die Topologie ist bereits implizit in der Geometrie enthalten, kann aber auch
explizit gespeichert werden, um die Abfrage von geometrischen Beziehungen
zwischen zwei oder mehren Objekten zu beschleunigen. Das Problem der expliziten Modellierung und Speicherung von topologischen Eigenschaften ist,
12
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
objektbasiertes
Datenmodell
raumbasiertes
Datenmodell
Vektormodell
Jedes Geoobjekt wird durch
ein geometrisches Attribut repräsentiert. Dieses Attribut
speichert die Stützpunkte, die
über Linien oder Polygone
miteinander verbunden werden. Die Kombination eines
objektbasiertes Vektormodell
ist die typische Anwendungssituation in Geodatenbanksystemen.
Rastermodell
Jedes Geoobjekt wird durch
ein geometrisches Attribut
repräsentiert. Dieses Attribut speichert die vom Objekt
belegten Rasterzellen. Diese
Kombination ist eher untypisch.
Das raumbasierte Vektormodell beschreibt eine dreidimensionale Oberfläche durch
Vektoren. In dieser Darstellung werden z.B. digitale
Geländemodelle gespeichert.
Rasterbilder, die aus Luftoder Satellitenbildern gewonnen werden, stellen ein
raumbasiertes Rastermodell
dar.
Tabelle 2.2.1: Übersicht Vektor- und Rastermodell
2.2. MODELLIERUNG VON GEODATEN
13
Kante
Knoten
Masche
isolierte Kante
isolierter Knoten
Abbildung 2.2.4: Topologische Primitive
dass bei Änderungen der Geometrie alle topologischen Beziehungen erneuert
werden müssen, was zu einem erheblichen Mehrwaufwand bei der Verwaltung
der Daten führt.
Bei der impliziten Modellierung wird eine topologische Eigenschaft bei Bedarf
aus der Geometrie abgleitet. Oft lässt es sich direkt aus den Koordinaten ableiten oder anhand eines Indexes feststellen. Dieses ist die übliche Verfahrensweise in räumlichen Datenbanken. Gravierender Nachteil dieser Vorgehensweise
ist, dass zum einen die Algorithmen zum Prüfen der Beziehung für mehrere
Objekte recht zeitaufwendig sind und zum anderen aufgrund von fehlerhaften oder ungenauen Toleranzen falsche Ergebnisse hinsichtlich der Topologie
liefern können.
Deswegen verwendet man topologische Datenmodelle, die aus topologischen
Primitiven (siehe Abbildung 2.2.4) bestehen. Im zweidimensionalen Fall handelt es sich dabei um
• Knoten (engl. Nodes; auch 0-Cells) für Punkte im Raum,
• Kanten (engl. Edges, Links; auch 1-Cells) für linienhafte Verbindungen
und
• Maschen (engl. Faces; auch 2-Cells) für Flächen.
Abbildung 2.2.4 zeigt ein Beispiel für diese topologischen Primitive. Eine Kante verbindet zwei Knoten. Hat ein Knoten keine Kanten, so spricht man von
einem isolierten Knoten. Maschen werden durch einen geschlossenen Kantenzug voneinander abgegrenzt. Jede Kante gehört somit zu einer linken und
rechten Masche 5 . Analog zu dem isolierten Knoten, kann es isolierte Kanten
innerhalb einer Masche geben - bei diesen ist die rechte und linke Masche
identisch. Wenn eine Kante eine Verbindungsrichtung aufweist, so nennt man
sie gerichtete Kante.
5
Der gesamte Datenraum wird als 0-te Masche bezeichnet.
14
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
2.3
Feature-Geometry-Modell
Die ISO-Norm 19107 Geographic Information - Spatial Schema“ ([ISO03a])
”
umfasst ein konzeptionelles Datenmodell, das die räumlichen Eigenschaften
von geographischen Objekten beschreibt. Als Datenmodell wird das objektbasierte Vektordatenmodell verwendet, das bis zu einer maximalen Dimension
von 3 spezifiziert ist. In dieser Arbeit wird maximal in der 2. Dimension gearbeitet und im weiteren Verlauf wird daher nicht näher auf die 3. Dimension
eingegangen.
Das Modell definiert dabei räumliche Standardoperationen für Zugriff, Anfrage, Verwaltung, Verarbeitung und Austausch von Geoobjekten. Als abstrakte
Spezifikation bildet sie die Grundlage für die meisten Implementationsspezifikationen von räumlichen Datenbanksystemen.
Nähere Informationen zu den Standardisierungen findet man in Kapitel 3.2 aus
[Bri05]. Die Notation der Paket- und Klassendiagramme ist in UML6 angegeben
und kann bei Bedarf in [JRH+ 05] nachgelesen werden.
Die Feature-Geometry-Spezifikation besteht aus zwei Hauptpaketen:
• Paket Geometry: geometrische Eigenschaften
• Paket Topology: topologische Eigenschaften, die sich auf das Paket Geometry stützen
Daneben verwenden die beiden Pakete:
• Paket Coordinates aus der ISO-Norm 19111 Spatial Referencing by
”
Coordinates“ ([ISO03b])
• Paket Basic Types aus der ISO-Norm 19103 Conceptional Schema Lan”
guage“ ([ISO05])
2.3.1
Geometrie
Im Folgenden wollen wir uns kurz mit den wichtigsten Teilen des Paketes
Geometry befassen, das aus fünf Teilpaketen besteht. Abbildung 2.3.1 zeigt den
Aufbau und die Abhängigkeiten des Paketes. Die vollständige Spezifikation
findet man in [OGC01] oder [ISO03a] oder auszugsweise in [Bri05].
• Geometry root enthält eine allgemeine Oberklasse für alle Geometrien.
• Geometry primitive stellt die geometrischen Primitive zur Verfügung.
• Coordinate Geometry enthält Klassen, die für die Definition von Geometrien mittels Koordinaten (Stützpunkte) benötigt werden.
6
Abk. UML - Unified Modeling Language
2.3. FEATURE-GEOMETRY-MODELL
15
Geometry root
GM_Object
1..*
Geometry complex
Geometry aggregate
GM_Aggregate
GM_Complex
GM_MultiSurface
GM_MultiCurve
GM_MultiPoint
Geometry primitive
1..*
GM_Primitive
GM_Surface
GM_Curve
1..*
1..*
GM_Point
1..*
Coordinate Geometry
1..*
1..*
GM_SurfacePatch
GM_Polygon
GM_CurveSegment
GM_LineString
GM_ArcString
Abbildung 2.3.1: Die Teilpakete des Paketes Geometry mit deren wichtigsten
Klassen und Beziehungen nach [Bri05]
16
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
GM_Object
Geometry primitive
GM_Primitive
GM_OrientablePrimitive
GM_OrientableSurface
GM_Surface
GM_OrientableCurve
GM_Curve
GM_Point
Abbildung 2.3.2: Datenmodell für geometrische Primitive nach [Bri05]
• Geometry aggregate erlaubt die Zusammenfassung von mehreren Geometrien in losen Geometrieaggregaten.
• Geometry complex definiert im Unterschied zu den Paket Geometry aggregate die Zusammenfassung von mehreren geometrischen Primitiven
zu einer einzigen komplexen Geometrie.
Für diese Arbeit sind nur die geometrischen Primitive interessant, auf die wir
nun genauer eingehen werden.
Geometrische Primitive
Der Kern der geometrischen Eigenschaften des Feature-Geometry-Modells
sind die sogenannten geometrischen Primitive. Dieses sind Objekte, die durch
zusammenhängende Geometrien beschrieben werden. Abbildung 2.3.3 zeigt
Beispiele für solche geometrischen Primitive. Je nach Dimension unterscheidet
man:
• GM Point für nulldimensionale Punkte;
• GM Curve für eindimensionale Linien;
• GM Surface für zweidimensionale Flächen.
Linien- und flächenhafte Primitive weisen zusätzlich eine Orientierung auf:
• Bei Linien (GM OrientableCurve) gibt die Folge der Koordinaten die Orientierung an. Dieses wird als Ablaufrichtung bezeichnet, die entweder mit
oder entgegen der Folge der Koordinaten sein kann.
2.3. FEATURE-GEOMETRY-MODELL
eine aus Liniensegmenten
zusammengesetzte Linie
17
eine aus Teilfläche
zusammengesetzte Fläche
Abbildung 2.3.3: Beispiel für zusammengesetzte geometrische Primitive
• Bei Flächen (GM OrientableSurface) gibt die Orientierung die Umlaufrichtung vor. Sie folgt - wie bei den Linien - entweder mit oder entgegen
der Folge der Koordinaten.
Die Beschreibung geometrischer Primitive wird, außer bei Punkten, durch ein
oder mehrere Objekte des Paketes Coordinate Geometry erreicht.
2.3.2
Topologie
Wie oben schon erwähnt, sind die topologischen Beziehungen bereits implizit
in den Geometrien enthalten. Diese Beziehungen können entweder jedesmal
neu berechnet oder explizit in einem Datenmodell dargestellt werden. Letzteres wird durch das Paket Topology der Spezifikation des Feature-GeometryModells angeboten und besteht aus drei Unterpaketen:
• Topology root stellt die Oberklasse für alle topologischen Objekte bereit.
• Topological primitive enthält die Klassen für die topologischen Primitive.
• Topological complex ermöglicht die Beschreibung von zusammengesetzten komplexen topologischen Primitiven.
Topologische Primitive
Die topologischen Primitive werden durch das Paket Topological Primitive
bereitgestellt. Die Klasse TP Primitive steht für ein topologisches Primitiv, das
durch die Unterklassen TP Node für Knoten, TP Edge für Kanten und TP Face
für Maschen erweitert wird. Abbildung 2.3.4 stellt diesen Sachverhalt dar.
Zu jedem topologischen Primitive vom Typ TP Primitive gibt es genau zwei
unterschiedlich gerichtete Primitive vom Typ TP DirectedTopo. Das Attribut
orientation bei dieser Klasse gibt die Richtung (+, -) der Orientierung an,
wobei Minus für umgekehrte Richtung steht (vgl. dazu auch Abbildung 2.3.3).
Der Rand (engl. Boundary) einer Masche (engl. Face) wird durch die gerichteten
Kanten TP DirectedEgde festgelegt. Ein gerichteter Knoten TP DirectedNode
18
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
Topology root
Geometry primitive
TP_Object
GM_Primitive
0,1
Topological primitive
0,1
container
Isolated in
Realization
0..*
TP_Primitive
0..*
0..*
0..*
TP_Face
TP_Edge
TP_Node
Boundary
2
TP_DirectedFace
Boundary
2
1..*
2
1..*
TP_DirectedEdge
TP_DirectedNode
TP_DirectedTopo
orientation
2
Abbildung 2.3.4: Das Paket Topological primitive nach [Bri05]
gibt an, ob dieser ein Anfangs- oder Endknoten einer Kante ist - je nachdem ob
die Orientierung positiv oder negativ ist.
Zu jedem topologischen Primitiv kann über die Beziehung Realization ein
geometrisches Primitiv (GM Primitive, siehe auch Abbildung 2.3.2) zugeordnet
werden. Umgekehrt kann dieses topologische Primitiv für mehrere geometrische Primitive die Topologie darstellen. Abbildung 2.3.5 zeigt ein Beispiel für
diese Beziehung. Die gemeinsame Grenze der beiden Objekte wird zu einem
topologischen Primitiv, diese beiden Geometrien werden diesem entstandenen
topologischen Primitiv zugeordnet.
Bei topologischen Primitiven kann es vorkommen, das sie isolierte Primitive
enthalten. Diese Beziehung wird dann in Isolated In bzw. container festgehalten. Natürlich können Primitive nur andere Primitive enthalten, wenn sie
von gleicher oder höherer Dimension sind als das enthaltene. Abbildung 2.3.6
zeigt ein Beispiel.
Geometrisches
Modell
Topologisches
Modell
Objekt 1
Objekt 2
Realization
Gemeinsame
Grenze
Abbildung 2.3.5: Beispiel für die Beziehung Realization
2.4. RÄUMLICHE DATENBANKMODELLE
19
Diese Primitive sind
in dem Objekt 1 enthalten.
Objekt 1
Abbildung 2.3.6: Beispiel für enthaltende top. Primitive
2.4
Räumliche Datenbankmodelle
Für die Speicherung und Verwaltung von Geodaten in einem Datenbanksystem
wird nun ein räumliches Datenbankmodell benötigt, das weitestgehend einem
Standard folgt. Dazu werden wir uns jetzt einmal kurz die OCG-Spezifikation
Simple Feature“ und die ISO-Norm SQL/MM Spatial“ betrachten, die auf dem
”
”
vorherigen Abschnitt aufbauen. Die konkrete Implementierung der beiden
Standards stellt das Oracle Spatial Datenmodell dar, das wir dann im Abschnitt 2.6 genauer betrachten werden.
Ein wichtiger Aspekt - den wir bis jetzt nicht angesprochen haben - ist, das bei
Geodaten die Koordinaten oft im Bezug zur Erdoberfläche angegeben werden,
d.h. es werden Kugelkoordinaten verwendet. Zu diesem Zweck werden wir
uns in Abschnitt 2.4.3 mit räumlichen Bezugssystemen beschäftigen.
2.4.1
Simple-Feature-Modell
Der grundlegendste Standard für räumliche Datenbanksysteme ist die OCG
Simple Feature Specification for SQL ([OGC99]). Sie beinhaltet eine Spezifikation
zur Implementierung von zweidimensionalen Vektorgeometrien und beruht
z.T. auf dem abstrakten Feature-Geometry-Modell aus Abschnitt 2.3, wobei
es auch einige Unterschiede zwischen beiden Modellen gibt. Im Jahr 2004
wurde das Simple-Feature-Modell in zwei verwandte Normen Simple Feature
”
Access“ übernommen. Diese Normen finden sich unter [ISO04a] und [ISO04b].
Unter einem Simple Feature versteht man eine Geometrie im zweidimensiona-
zulässige Geometrien
unzulässige Geometrien
Abbildung 2.4.1: Simple Features
20
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
len Raum, deren Stützpunkte gradlinig miteinander verbunden sind. Abbildung 2.4.1 zeigt Beispiele für solche Geometrien.
Wie bereits im vorherigen Datenmodell bündelt die Klasse Geometry alle allgemeinen Attribute und Methoden der Geometrieunterklassen. Neu hierbei ist,
dass jeder Geometrie ein räumliches Bezugssystem (SpatialReferenceSystem) zugeordnet werden kann. Von der abstrakten Oberklasse leiten sich die
vier primären Geometrien ab: Punkte (Point), Linien (Curve), Flächen (Surface)
und Geometriesammlungen (GeometryCollection). Abbildung 2.4.2 zeigt eine
Übersicht über das Modell. Im weiteren Verlauf wollen wir uns die ersten drei
Geometrietypen genauer ansehen.
Punkte
Die grundlegende Geometrie in diesem Modell ist die Punkt-Geometrie. Sie
beschreibt einen Punkt oder eine Position im Raum, die über Koordinaten X
und Y angegeben wird. Abbildung 2.4.3 (links) zeigt den Aufbau.
Linien
Durch die Punkte lassen sich nun Linien beschreiben, Abbildung 2.4.3 (mitte). Dabei fasst die abstrakte Oberklasse Curve die verschiedenartigen Linienformen zusammen. Die direkte Unterklasse LineString repräsentiert Streckenzüge, die durch eine Folge von Punkten, auch Stützpunkte genannt, beschrieben werden. Zwei aufeinanderfolgende Punkte werden dabei gradlinig
miteinander verbunden und bilden so einen Streckenabschnitt.
Nun gibt es noch zwei Spezialisierungen von Streckenzügen. Die Klasse Linie
beschreibt eine Linie, die genau aus zwei Punkten besteht. LinearRing stellt
einen geschlossen und einfachen Streckenzug dar. Ein Streckenzug heißt geschlossen, wenn der Start- und Endpunkt gleich sind. Einfach ist der Streckenzug genau dann, wenn zwei Streckenzüge sich nur berühren und nicht
überschneiden.
Geometry
SpatialReferenceSystem
0..*
Point
Curve
LineString
Line
Surface
Polygon
LinearRing
GeometryCollection
MultiSurface
MultiPolygon
MultiCurve
MultiPoint
MultiLineString
Abbildung 2.4.2: Simple Feature Modell nach [Bri05]
2.4. RÄUMLICHE DATENBANKMODELLE
21
Geometry
Point
Curve
Surface
X() : double
Y() : double
Length() : double
StartPoint() : Point
EndPoint() : Point
IsClosed() : boolean
IsRing() : boolean
Area() : double
Centroid() : Point
PointOnSurface() : Point
2..*
LineString
Polygon
NumPoints() : void
PointN(n : int) : void
ExteriorRing() : LineString
NumInteriorRing() : int
InteriorRingN(n : int) : LineString
exterior Ring
interior Ring
Line
LinearRing
0..*
Abbildung 2.4.3: Punkte, Linien und Flächen im Simple-Feature-Modell nach
[Bri05]
Flächen
Flächen lassen sich nun einfach durch Linien beschreiben - Abbildung 2.4.3
(rechts). Die konkrete Unterklasse Polygon erbt von der abstrakten Oberklasse Surface und stellt ein Flächenobjekt dar. Dieses Objekt entspricht einem
einfachen Polygon mit Löchern. Die Begrenzung des Objektes wird durch einfache und geschlossene Streckenzüge realisiert. Diese Streckenzüge werden
auch Ringe genannt. Beim Rand der Fläche spricht man von dem äußeren
Ring, bei Löchern von den inneren Ringen. Generell sind die Begrenzungen
überlappungsfrei. Abbildung 2.4.1 (unten) verdeutlicht diesen Sachverhalt.
2.4.2
SQL/MM Spatial
Bei der Standardisierung von SQL:1999 wurde eine Reihe von Anwendungsgebieten identifiziert, die auf Grund ihrer Beschaffenheit nicht von dem ursprünglichen SQL-Standard abgedeckt werden sollen, sondern durch modulare SQL-Erweiterungen spezifiziert werden. Die für Geodatenbanksysteme
wichtigste Erweiterung heißt SQL/MM, wobei MM für Multimedia steht. Interessierte Leser finden in [ME01] nähere Informationen. Dieser ISO/IEC-Standard
13249 untergliedert sich in einen allgemeinen Teil und in mehrere Unterbereiche:
• SQL/MM Full-Text
22
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
• SQL/MM Still Image
• SQL/MM Data Mining
• SQL/MM Spatial
Der ISO/IEC-Standard 13249-3, SQL/MM Spatial, liegt bereits in der dritten
Version vor, siehe dazu [ISO06].
Das Datenmodell von SQL/MM ist in Abbildung 2.4.4 zu sehen und weist eine
recht große Ähnlichkeit zu dem Simple Feature Modell aus Abbildung 2.4.2
auf. Wie auch das Simple Feature Modell besitzt das SQL/MM Modell eine
abstrakte Oberklasse ST Geometry, von der alle Geometrien abgeleitet werden.
Zu dieser Klasse kann dann ein räumliches Bezugssystem ST SpatialRefSys
definiert werden. Im Gegensatz zu der Simple Feature Klasse Geometry besitzt
diese Klasse eine Reihe zusätzlicher Methoden und definiert Zugriffs- und
Konvertierungsfunktionen.
Die Liniendarstellung wurde im Vergleich zu dem Simple Feature Modell erweitert. Ein Linienobjekt lässt sich nun durch drei mögliche Darstellungsformen repräsentieren. Die Klasse ST LineString stellt gradlinige Streckenzüge
dar und entspricht so der Klasse LineString des Simple Feature Modells.
Die Klasse ST CircularString ist neu, sie repräsentiert Linienzüge, die aus
Kreisbögen bestehen. Mit Hilfe der Klasse ST CompoundCurve kann man Streckenzüge zusammensetzen, die aus gradlinigen (ST LineString) und kreisbogenförmigen (ST CircularString) Teilstücken bestehen. Diese Teilstücke
dürfen aber keine zusammengesetzten Linienzüge sein. Abbildung 2.4.5 (oben)
zeigt entsprechende Beispiele für diese Liniengeometrien.
Da es nun erlaubt ist, kreisförmige Linienstücke zu definieren, die aber der
Simple Feature Spezifikation wiedersprechen, enthält die Klasse ST Curve eine
Methode zur Konvertierung dieser Linienstücke. Dabei werden Kreisbögen
durch Linienzüge approximiert. Auf explizite Klassen für Strecken und Ringe
wurde in SQL/MM Spatial verzichtet.
Auch bei den Flächen, die durch die abstrakte Klasse ST Surface repräsentiert
werden, gibt es eine zusätzliche Unterklasse. Da nun innere und äußere Ringe über das Objekt ST Curve beschrieben werden können, lassen sich nun
auch Flächen bzw. Löcher durch kreisbögenartige Begrenzungen darstellen.
Abbildung 2.4.5 (unten) zeigt die neuen Möglichkeiten. Analog zu den Linien
definiert die Klasse ST CurvePolygon eine Methode zur Konvertierung, um
der Simple Feature Spezifikation zu entsprechen.
2.4.3
Bezugssysteme
Wie wir bereits in den Abschnitten 2.4.1 (Simple-Feature-Modell) und 2.4.2
(SQL/MM Spatial) gesehen haben, ordnen diese Modelle jeder Geometrie ein
räumliches Bezugssystem (engl. Spatial Reference System) zu. Ein räumliches Bezugssystem stellt ein Koordinatensystem, einen Geltungsbereich und Angaben
ST_Curve
0..*
ST_CompoundCurve
1..*
ST_CurvePolygon
1..*
ST_Point
2..*
interior Ring
2..*
ST_LineString
0..*
1..*
ST_MultiPoint
ST_MultiLineString
ST_MultiCurve
ST_GeomCollection
ST_SpatialRefSys
ST_MultiPolygon
ST_MultiSurface
exterior Ring
ST_Polygon
ST_CircularString
exterior Ring
interior Ring
1..*
0..*
ST_Surface
ST_Geometry
2.4. RÄUMLICHE DATENBANKMODELLE
23
Abbildung 2.4.4: Wesentliche Teile des Klassenmodells von SQL/MM Spatial
nach [Bri05]
24
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
ST_LineString
ST_CircularString
ST_CompoundCurve
ST_CurvePolygon
Abbildung 2.4.5: Beispiel für gültige SQL/MM Geometrien
zur Abbildung auf ein globales Bezugssystem bereit.
Das Koordinatensystem beschreibt die Interpretation der Koordinaten des geometrischen Objektes. Generell lassen sich zwei Arten von Koordinatensystemen unterscheiden:
• Kartesische Koordinatensysteme
werden oft in Verbindung mit lokalen Koordinaten verwendet. Diese
Koordinaten sind dann meist unabhängig von der Position auf der Erdoberfläche, z.B. ein Teilgebiet einer Karte.
• Geographische Koordinatensysteme
werden dann verwendet, wenn Punkte auf der Erdoberfläche dargestellt
werden sollen. Um nun die Erdoberfläche besser beschreiben zu können,
verwendet man einen (Rotations-)Ellipsoiden 7 . Die Koordinaten werden
über die Abweichung vom Äquator und Nullmeridian angegeben.
Dabei lassen sich diese unterschiedlichen Systeme auf ein globales Bezugssystem abbilden und ermöglichen es so Objekte mit unterschieden Bezugssystemen gemeinsam darzustellen. Weiterführende Informationen und Beschreibungen der einzelnen räumlichen Bezugssysteme findet der Leser in Kapitel
4.4.2 aus [Bri05]. In dieser Arbeit werden ausschließlich kartesische Koordinatensysteme verwendet, sowie ein Spezialfall.
2.4.4
Lineares Bezugssystem
Ein spezielles Bezugssystem der kartesischen Koordinatensysteme ist das lineare Bezugssystem (engl. Linear Reference System, Abk. LRS). Zusätzlich zu den
kartesischen Koordinatenangaben wird hier noch eine Abstandsangabe zu einem ausgezeichneten Anfangspunkt mit erfasst. Dadurch eignet sich diese
7
Dem interessierten Leser sei gesagt, dass die Darstellung des Ellipsoides je nach Anwendung
abweichen kann. Beispiele findet man unter den Begriffen Bessel-, Krassowski und WGS’84Ellipsoide.
2.5. TOPOLOGISCHE PRÄDIKATE
25
Darstellung gut für Netzwerke, wie z.B. Straßen- oder Rohrnetze, in denen es
auf Längen der Wege ankommt.
Im Unterschied zu den obigen Bezugssystem, ist die zusätzliche Speicherung
des Abstandes redundant, da der Abstand implizit in den Koordinaten enthalten ist. Aber der Vorteil dieser Speicherung ist natürlich, dass man direkt und
ohne Zwischenrechnung auf die Abstände zugreifen kann. Wir werden dieses
Verfahren später noch verwenden, um Verschiebungsvektoren einheitlich zu
erzeugen.
2.5
Topologische Prädikate
Mit topologischen Prädikaten lassen boolesche Aussagen über Beziehungen
zweier Geometrien zueinander formulieren. Um die Aussagen nun sinnvoll
formulieren zu können, verwendet man das 9-Intersection-Modell (9IM). Dieses
Modell wurde aus dem 4-Intersection-Modell (4IM) (siehe dazu Kapitel 2.2 aus
[Tie03]) durch die Methode [EH90] gewonnen. Diese Prädikate werden auch
als Egenhofer-Operatoren bezeichnet.
Dieser Ansatz bedient sich der Idee, für jede Geometrie G drei Bereiche festzulegen: den Rand GR , das Innere GI und das Äußere GA . Die Bereiche sind
paarweise disjunkt, wie man einfach erkennen kann, und somit folgt, dass ein
Punkt immer nur genau in einem dieser Bereiche liegen kann.
• Bei Polygonen bilden der äußere Ring und die inneren Ringe den Rand.
Die Punkte, die innerhalb des äußeren Ringes liegen, aber nicht innerhalb
der inneren, bilden das Innere des Polygons. Die Punkte außerhalb des
äußeren Ringes, sowie die die innerhalb der inneren Ringe, bilden das
Äußere.
• Für Linien bilden der Start- und Endpunkt den Rand und die Punkte der
Linie das Innere.
• Punkte haben keinen Rand, der Punkt selber ist das Innere.
Boolesche Matrix
Nun kann man die Bereiche AX und BY zweier Geometrien A und B (X, Y ∈
{R, I, A}) überprüfen, ob sie sich paarweise schneiden. Der Schnitt im R2 ist
dann wie folgt definiert:
AX ∩ BY = true ⇔ AX ∩ BY , ∅ ⇔ ∃p ∈ AX : p ∈ BY
Betrachtet man diese Bereiche nun paarweise, so existieren insgesamt neun
Kombinationen; daher auch der Name 9-Intersection-Modell. Diese Schnitte
lassen sich nun in einer 3 × 3-Matrix aufschreiben.
26
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME

 AI ∩ BI AI ∩ BR AI ∩ BA

A ⊗ B =  AR ∩ BI AR ∩ BR AR ∩ BA

AA ∩ BI AA ∩ BR AA ∩ BA





Jede dieser Schnittbedingungen AX ∩ BY kann entweder das Ergebnis true“
”
oder false“ haben, somit ergeben sich theoretisch 29 = 512 unterschiedli”
che Schnittmatrizen. Da aber in Abhängigkeit von der Geometrie zusätzliche
Einschränkungen bzgl. des Schnittes gelten, reduziert sich die Anzahl im zweidimensionalen Fall wie folgt:
• Schnitt zwischen zwei simplen Polygonen: 8 verschiedene Schnittmatrizen
• Schnitt zwischen zwei simplen Linien: 33 verschiedene Schnittmatrizen
• Schnitt zwischen zwei komplexen Linien: 24 verschiedene Schnittmatrizen
• Schnitt zwischen Linien und simplen Polygonen: 20 verschiedene Schnittmatrizen
• Schnitt mit einem Punkt: 6 verschiedene Schnittmatrizen
Da in der Aufzählung einige Matrizen mehrfach auftreten, ergeben sich insgesamt 64 verschiedene Schnittmatrizen.
Dimensionsmatrix
Mit dem 9IM lassen sich zwar jetzt gut feststellen, welche Bereiche zweier
Geometrien (Inneres, Rand, Äußeres) sich schneiden, aber der Schnitt lässt
sich nicht näher charakterisieren. Z.B. im Fall vom Schnitt zweier Linien, sagt
das 9IM nichts darüber aus, wie dieser genau aussieht, z.B. Schnitt in einem
Punkt oder Überlappung der Linien.
Deshalb wurde von Clementini und Di Felice eine Matrix eingeführt, die anstelle der booleschen Werte Dimensionsangaben enthält. Dieses Modell wurde
dann Dimensionally Extended 9-Intersection Matrix (DE-9IM) genannt. Die entsprechenden topologischen Prädikate werden auch als Clementini-Operatoren
bezeichnet.
Für zwei Geometrien A und B ergibt sich daraus folgende Matrix:

 d(AI ∩ BI ) d(AI ∩ BR ) d(AI ∩ BA )

d(A ⊗ B) =  d(AR ∩ BI ) d(AR ∩ BR ) d(AR ∩ BA )

d(AA ∩ BI ) d(AA ∩ BR ) d(AA ∩ BA )





Die Funktion d steht dabei für die maximale Dimension der jeweiligen Schnittgeometrie. Im Fall des zwei-dimensionalen Raumes liefert die Funktion folgende Werte:
2.6. ORACLE SPATIAL
27
• 0 - Schnitt in genau einem Punkt,
• 1 - Schnitt entlang einer Linie oder
• 2 - Schnitt in einer Fläche
Wenn sich zwei Bereiche nicht schneiden, liefert die Funktion den Dimensionswert -1.
Um nun die topologischen Prädikate mit Hilfe der Dimensionsmatrix zu formulieren, werden die Dimensionen wie folgt ersetzt:
• true ⇒ d(x) ∈ {0, 1, 2} (Schnitt liegt vor)
• f alse ⇒ d(x) = −1 (kein Schnitt)
• ∗ ⇒ d(x) ∈ {−1, 0, 1, 2} ( don’t care“)
”
Dadurch lassen sich die topologischen Beziehungen zweier Geometrien einfach
beschreiben. Abkürzend können die Matrizen der Schnitte auch über eine
Schnittmaske“ beschrieben werden, z.B. Disjoint(A,B)=’FF*FF****’.
”
2.6
Oracle Spatial
Die Unterstützung für geometrische Objekte bietet das im Oracle DBMS implementiere Paket Spatial an. Oracle Spatial stellt dem Benutzer ein SQL-Schema
und Funktionen zur Verfügung, die es ermöglichen geometrische Daten zu
speichern, abzufragen und zu ändern. Es setzt sich aus folgenden Komponenten zusammen:
• Ein Schema (MDSYS), dass die Aufgaben der Speicherung, Syntax und
Semantik der geometrischen Datentypen übernimmt.
• Einen Index-Mechanismus für geometrische Daten.
• Operatoren, Funktionen und Prozeduren für die effiziente Unterstützung
von geometrischen Anfragen, Verbunden und anderen Analyse-Operationen.
• Funktionen und Prozeduren zum Analysieren und Optimieren von geometrischen Operationen.
• Ein topologisches und Netzwerk-Datenmodell, siehe dazu [Mur06a].
• Angaben zu räumlichen Bezugssystemen.
28
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
Der Kern dieser Erweiterung ist der Datentyp SDO GEOMETRY, der für die Repräsentation der geometrischen Objekte zuständig ist. Im Abschnitt 2.6.1 werden wir uns den Aufbau dieses Datentypes noch ein wenig genauer ansehen.
Oracle Spatial ist konform zu den Spezifikationen des Open Geospatial Consortium (OGC) Simple Features Spezifikation 1.1.1 8 , die in das Oracle Datenbanksystem 10g 9 übernommen wurden. Zusätzlich hierzu wurden einige
Spezifikationen aus SQL/MM Spatial 10 übernommen.
Im folgenden gehen wir nur kurz auf die in dieser Arbeit verwendeten Teile
des Spatial-Paketes ein. Ausführlichere Informationen finden sich in Kapitel
4.3 von [Bri05] oder vertiefend in [KGB04].
2.6.1
SDO GEOMETRY
Für die Darstellung von geometrischen Objekten verwenden wir die Klasse
SDO GEOMETRY. Diese Klasse repräsentiert alle geometrischen Objektarten, wie
Punkte, Linien, Polygone, usw. Dies bringt den Vorteil, dass nur mit einem
Datentyp gearbeitet werden muss und somit die Funktionen und Methoden
für alle Objekte - egal welcher geometrischen Art - gleich sind. Die Klasse setzt
sich dabei aus fünf Attributen zusammen:
Name
SDO GTYPE
SDO SRID
SDO POINT
SDO ELEM INFO
Typ
NUMBER
NUMBER
SDO POINT TYPE
SDO ELEM INFO ARRAY
SDO ORDINATES
SDO ORDINATE ARRAY
Bedeutung
Geometrieart
Bezugssystem
Punktgeometrie
Interpretation
der Koordinaten
Koordinaten
SDO GTYPE
Das Attribut SDO GTYPE gibt den Geometrietyp des Objektes über eine vierstellige Zahl wieder. Die erste Ziffer steht für die Dimension der Geometrie und
unterstützt Werte von 2 bis 4; wobei nur zweidimensionale Geometrien voll
unterstützt werden. Die zweite Ziffer gibt an, ob ein lineares Bezugssystem verwendet wird. Der Standardwert 0 bedeutet, dass kein lineares Bezugssystem
verwendet wird. Die letzten zwei Ziffern geben die Art der Geometrie an, diese entspricht dem Simple-Feature-Modell. Es können sieben Geometrietypen
gewählt werden:
8
siehe [OGC99]
siehe [Mur06b]
10
siehe [ISO06]
9
2.6. ORACLE SPATIAL
Ziffer
01
05
02
06
03
07
04
29
Bedeutung
Punkt (Point)
Sammlung von Punkten (MultiPoint)
Streckenzug (Curve und LineString)
Sammlung von Streckenzügen (MultiCurve, MultiLineString)
einfaches Polygon, ggf. mit Löchern (Polygon)
Sammlung von disjunkten Polygonen (MultiPolygon)
Sammlung von unterschiedlichen Geometrien (Collection)
Um auf diese Informationen aus SQL oder PL/SQL zugreifen zu können, kann
man die folgenden Funktionen verwenden:
• Get Dims()
Liefert die Dimension zurück.
• Get LRS Dim()
Liefert die Dimension des linearen Bezugssystems zurück.
• Get Gtype()
Liefert den Typ der Geometrie zurück.
SDO SRID
Das Attribut SDO SRID gibt die Schlüsselnummer des verwendeten räumlichen
Bezugsystems an. Wird kein Bezugsystem verwendet, dann ist das Attribut
NULL.
SDO POINT
Mit Hilfe des Attributes SDO POINT lässt sich einfach ein einzelner Punkt konstruieren. Ein SDO POINT wird durch die Attribute X, Y, Z beschrieben. Die
Konstruktion eines solchen Punkte vom Geometrietyp 2001 mit den Koordinaten (10, 20) sieht wie folgt aus:
SDO GEOMETRY(2001, NULL, SDO POINT(10, 20, NULL), NULL, NULL)
Z wird hierbei auf NULL gesetzt, da es nicht benötigt wird, um einen zweidimensionalen Punkt zu beschreiben. Die Attribute SDO ELEM INFO und SDO ORDINATES werden bei dieser Konstruktion nicht benötigt und somit auf NULL gesetzt.
SDO ELEM INFO und SDO ORDINATES
Das Attribut SDO ORDINATES nimmt alle Koordinaten der Geometrie auf. Die
Koordinaten werden zuerst nach dem Koordinatenindex und dann nach der
30
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
Dimension sortiert. Bei zweidimensionalen Geometrien ist die Reihenfolge also
(x1 , y1 , x2 , y2 , . . . , xn , yn ). Bei geschlossenen Geometrien, wie z.B. bei Polygonen,
tritt die erste Koordinate nochmals am Ende des Arrays auf.
Bei komplexen Geometrien, die sich aus mehreren Teilen zusammensetzen,
wie z.B. Polygone mit Löchern, werden alle Koordinaten der Teile ohne ein
spezielles Trennzeichen im Array gehalten. Dabei sind die Koordinaten der
jeweiligen Teile zusammenhängend abgespeichert. Die Unterscheidung welche Koordinaten zu welchen Teil der Geometrie gehören, wird in dem Attribut
SDO ELEM INFO beschrieben. Dieses Attribut wird durch drei Zahlenwerte repräsentiert:
Name
SDO STARTING OFFSET
SDO ETYPE
SDO INTERPRETATION
Bedeutung
Index im Koordinatenarray, ab dem die
Teilgeometrie beginnt. Der erste Eintrag
des Arrays ist 1.
Elementtyp der Teilgeometrie, zulässige
Werte sind:
1 - Punkt
2 - Linienzug
1003 - Äußerer Ring, Koordinaten gegen
den Uhrzeigersinn
2003 - Innerer Ring, Koordinaten im Uhrzeigersinn
4 - Zusammengesetzter Streckenzug
1005 - Zusammengesetzter umgebender
Ring
2005 - Zusammengesetzter innerer Ring
spezifiziert den Elementtyp,
mögliche Werte sind:
ETYPE, INTERPRETATION
1, 1 - einzelner Punkt
1, n - Sammlung von Punkten
2, 1 - gradliniger Streckenzug
2, 2 - kreisförmiger Streckenzug
usw.
Mit der Funktion SDO ORDINATES(i) kann man über SQL und PL/SQL auf
die i-te Koordinate der Geometrie zugreifen. Die Länge des Arrays lässt sich
über SDO ORDINATES.COUNT() bestimmen. Im zweidimensionalen Fall befinden sich die X- bzw. Y-Koordinaten immer in SDO ORDINATES(2i-1) bzw.
SDO ORDINATES(2i), für i = 1 . . . SDO ORDINATES.COUNT()/2.
Abschließend wollen wir uns ein Beispiel ansehen, wie man ein rechteckiges
Polygon mit einem rechteckigen Loch konstruiert. Das äußere Rechteck hat
folgende Koordinaten A(Xa,Ya), B(Xb,Yb), C(Xc,Yc), D(Xd,Yd); das innere hat
E(Xe,Ye) und F(Xf,Yf).
2.6. ORACLE SPATIAL
31
SDO GEOMETRY(2003, NULL, NULL, SDO ELEM INFO(1,1003,1, 11,2003,3),
SDO ORDINATES(Xa,Ya, Xb,Yb, Xc,Yc, Xd,Yd, Xa,Ya, Xe,Ye, Xf,Yf))
Weitere Bespiele findet man in [KGB04] und [Mur06b].
2.6.2
Unterstützung durch Indexstrukturen
Um Anfragen bezüglich geometrischer Attribute effizient ausführen zu können, ist Oracle Spatial in der Lage, räumliche Daten zu indexieren. Die Indexierung dieser Daten kann aber nicht durch die herkömmlichen Indexstrukturen
durchgeführt werden. Es werden deswegen neue räumliche Indexkonzepte
und -strukturen zur Verfügung gestellt. Diese Indexstrukturen erfüllen dabei
folgende Anforderungen:
• Räumliche Basisanfragen werden effizient ausgeführt.
• Dynamisches Einfügen, Löschen und Verändern von geometrischen Attributen wird unterstützt.
• Die Speicherplatzausnutzung ist optimiert.
• Der Index ist robust gegenüber Ungleichverteilungen, ohne dass die Speicherplatzausnutzung degeneriert oder die Ausführungszeit der Anfrage
wesentlich ansteigt.
Bemerkung 2.6.1 Ein räumlicher Index wird von vielen Spatial-Operatoren vorausgesetzt. Als Beispiel lässt sich da SDO WITHIN DISTANCE(a.geometry, b.geometry, ´DISTANCE=100´) nennen. Dieser Operator findet alle geometrischen Objekte von a und b, die sich in einem Abstand von 100 Einheiten befinden. Dabei muss
auf dem Attribut a.geometry ein Index existieren. Alternativ gibt es zwar auch eine
Funktion, die die Berechnung ohne Index durchführt, diese braucht aber sehr viel mehr
Zeit als die mit Index.
Oracle Spatial bietet nun zwei große Indexkonzepte an, Quadtrees und R-Trees.
Seit der Version 10 wird die Verwendung von Quadtrees nur noch für spezielle
”
Situationen“ empfohlen. R-Tree ist die empfohlene Indexstruktur für räumliche
Daten in Oracle Datenbanken.
Ein R-Tree ([Gut84]) ist eine räumliche Indexstruktur, die die geometrischen
Objekte, speziell das minimale umgebende Rechteck eines Objektes, mit zweioder mehrdimensionalen Rechtecken überdeckt. Diese so entstehenden Rechtecke werden in einem balancierten Baum abgespeichert und dienen als Container für die geometrischen Objekte. Um den Index effizient zu halten, darf
in einem überdeckenden Rechteck nur eine bestimmte Anzahl von Objekten
liegen. Wenn diese Anzahl überschritten wird, dann wird das vorhandene
Rechteck aufgeteilt und es entstehen zwei neue Rechtecke.
32
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
Bemerkung 2.6.2 Für die Verwendung des räumlichen Index sind zusätzliche Angaben notwendig, damit der Index das gewünschte Gebiet indexiert. Dazu werden die
Angebaben: Name der Tabelle und des Attributes, sowie die Ausdehnung des Gebietes
in die Sicht USER SDO GEOM METADATA eingefügt. Diese Informationen steuern dann
den Index, den man mit
CREATE INDEX idx name ON table name(geometry name)
INDEXTYPE IS MDSYS.SPATIAL INDEX;
erzeugt.
2.6.3
Spatial-Operatoren
Von der Spatial-Erweiterung werden viele Methoden und Funktionen für geometrische Objekte zur Verfügung gestellt. Wir wollen nur kurz auf die relevanten Operatoren eingehen. Die vollständige Übersicht findet man in [Mur06b].
Topologische Beziehungen
Der räumliche Operator SDO RELATE findet die Datensätze, deren Geometrie eine Überlappung mit der Anfragegeometrie aufweist. Dabei nutzt der Operator
die Indexe auf den Geometrien aus, um die Berechnung so effizient wie möglich
durchzuführen. Als topologische Prädikate werden die Beziehungen aus dem
9-Intersection-Modell verwendet, das in Abschnitt 2.5 vorgestellt wurde.
Der Operator hat folgende Form:
SDO RELATE(
geometry1
IN SDO GEOMETRY,
geometry2
IN SDO GEOMETRY,
params
IN VARCHAR2)
- Geometrieattribut (mit Index)
- Anfragegeometrie
- weitere Parameter
Die ersten Parameter ist das geometrische Attribut, auf dem die Anfrage ausgeführt wird und muss daher räumlich indexiert sein. Der zweite Parameter
stellt die Anfragegeometrie dar - der Index ist optional. Der dritte Parameter
gibt die Art der topologischen Beziehung an, die nach dem Schlüsselwort mask
erfolgt. Als topologische Beziehungen stehen zur Verfügung: ANYINTERACT,
CONTAINS, COVEREDBY, COVERS, DISJOINT, EQUAL, ON, INSIDE, TOUCH, OVERLAPBDYDISJOINT und OVERLAPBDYINTERSECT. Die Beziehungen können über ein +
in einer Oder-Konjunktion miteinander verbunden werden.
Der Operator SDO WITHIN DISTANCE wird dazu verwendet Geometrien, die sich
in einem bestimmten Abstand zur Anfragegeometrie befinden, zu identifizieren. Dabei verhält sich dieser Operator ähnlich wie SDO RELATE. Die ersten
beiden Parameter sind das Geometrieattribut und das Anfrageattribut. Der
2.6. ORACLE SPATIAL
33
dritte Parameter steuert den Abstand, der mit dem Schlüsselwort distance
angegeben wird.
Bemerkung 2.6.3 Da bei der Verwendung dieser Operatoren das Oracle DBMS
mit der Optimierung ein wenig überfordert ist - wo geeignet Indexe zu verwenden
sind - empfiehlt es ich die Anfrage über einen Ausführungsplan zu überprüfen, um
sicherzustellen, das der geometrische Index auch verwendet wird. Zusätzlich kann
man die Indexverwendung auch über SQL-Hints erzwingen.
Lineare Bezugssysteme
In Oracle Spatial können Streckenzüge in ein lineares Bezugssystem umgewandelt werden, um speziell Abstandsanfragen zu unterstützen. Ein umgewandelter Streckenzug wird als LRS-Segment bezeichnet. Diese gesamte Funktionalität
der linearen Bezugssystem ist im Package SDO LRS vereint.
Eine Linien-Geometrie wird zunächst mit der Funktion
SDO LRS.CONVERT TO LRS GEOM ( standard geom IN SDO GEOMETRY )
RETURN SDO GEOMETRY;
in ein LRS-Segment umgewandelt.
Mit Hilfe der bereitgestellten Funktionen lassen sich dann einfach Abstandsoperationen auf diesem Segment durchführen, unter anderem sind folgende
Funktionen für diese Arbeit nützlich:
• SDO LRS.MEASURE RANGE(
geom segment IN SDO GEOMETRY )
RETURN NUMBER;
Berechnet die Gesamtlänge des angegebenen LRS-Segmentes.
• SDO LRS.LOCATE PT(
geom segment IN SDO GEOMETRY, measure IN NUMBER )
RETURN SDO GEOMETRY;
Bestimmt den Punkt, der sich im Abstand zu einem Startpunkt des LRSSegmentes befindet.
• SDO LRS.GET MEASURE(
point IN SDO GEOMETRY )
RETURN NUMBER;
Liefert den Abstand eines Punktes auf dem LRS-Segment.
• SDO LRS.MEASURE TO PERCENTAGE(
geom segment IN SDO GEOMETRY, measure IN NUMBER )
RETURN NUMBER;
Liefert den prozentualen Abstand eines Punktes auf dem LRS-Segment.
34
KAPITEL 2. GRUNDLAGEN RÄUMLICHER DATENBANKSYSTEME
• SDO LRS.PERCENTAGE TO MEASURE(
geom segment IN SDO GEOMETRY, percentage IN NUMBER )
RETURN NUMBER;
Liefert den Abstandswert aus dem prozentualen Abstand auf dem LRS-Segment.
• SDO LRS.PROJECT PT(
geom segment IN SDO GEOMETRY, point IN SDO GEOMETRY,
tolerance IN NUMBER )
RETURN SDO GEOMETRY;
Berechnet einen Projektionspunkt auf dem LRS-Segment.
• SDO LRS.REVERSE GEOMETRY(
geom IN SDO GEOMETRY )
RETURN SDO GEOMETRY;
Dreht die Geometrie um, d.h. die Reihenfolge der Stützpunkte wird umgedreht.
Bemerkung 2.6.4 (Prozentualer Abstand) Der prozentuale Abstand p ergibt sich
aus dem Verhältnis des Abstandes zu der Gesamtlänge
p=
measure
.
measure range
Dies ist sehr nützlich, wenn man den Abstand eines Punktes von einem LRS-Segment
auf ein anderes LRS-Segment übertragen will.
Bemerkung 2.6.5 Die hier vorgestellten Funktionen sind nicht vollständig aufgeführt. Für die meisten Funktionen gibt es auch noch alternative oder optionale
Parameter.
Die Anwendung des Packages SDO LRS finden sich in Abschnitt 4.3.3 bei der Erstellung der Vektoren wieder.
Kapitel 3
Grundlagen der
Rubber-Sheeting-Verfahren
Schlägt man dem Begriff Rubber-Sheeting“ nach, so findet man folgende De”
finition in [Def]:
Eine Prozedur, in der Koordinaten aller Datenpunkte in einem
Datensatz angeglichen werden, um besser zu den bekannten Positionen von einigen wenigen Punkten im Datensatz zu passen.
Verbindungen zwischen Elementen in einem Datensatz (Topologie)
werden beibehalten, obwohl relative Abstände zwischen Punkten
durch Drehen, Verkürzen oder durch die Umorientierung notwendiger Manipulationen verändert werden können, um die neuen
geometrischen Bedingungen einzuhalten.
Das Rubber-Sheeting ist eine Art elastische Transformation (bzw. Verzerrung)
von geometrischen Objekten, die anhand von ausgewählten Punkten innerhalb
eines Gebietes durchgeführt wird. Das Rubber-Sheeting verändert dabei zwar
die Abstände der Objekte zueinander, erhält aber auf der anderen Seite die
topologischen Beziehungen der Objekte.
Dieses Vorgehen wollen wir zunächst in den ersten Abschnitten näher betrachten. Danach werden wir eine Klassifizierung verschiedener Rubber-SheetingFunktionen vornehmen, um diese besser einordnen zu können. Als Abschluss
des Kapitel werden wir uns die Rubber-Sheeting-Funktionen in einem Beispiel
ansehen.
3.1
Einführung in das Rubber-Sheeting
Das Rubber-Sheeting-Verfahren wird als eine Art elastische Transformation von
geometrischen Objekten bezeichnet. Anschaulich stellt man sich dies als Ver35
36
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
A
A
B
A
B
B
C
C
C
Original
Skalierung
auf 125%
Skalierung
auf 50%
A
A
B
B
C
C
Translation
Drehung
Abbildung 3.1.1: einfache Rubber-Sheeting Beispiele nach [LT92]
zerrung einer Gummioberfläche vor, in der man ausgewählte Punkte in der
Ebene verschiebt.
Ein paar einfache Beispiele einer elastischen Transformation zeigt Abbildung 3.1.1. Dies sind stetige Transformationen wie z.B. Skalierungen, Verzerrungen und Verschiebungen. Dabei gehen zwar Abstände der geometrischen Objekte untereinander verloren, aber die Topologie bleibt erhalten. Betrachtet man
als Beispiel den Fall der einheitlich Verschiebung mehrerer Objekte, so wird
jeder Punkt mit dem gleichen Verschiebungsvektor transformiert.
Betrachtet man nun diese Fälle genauer, stellt man fest, das dies eigentlich
nur Spezialfälle des eigentlichen Rubber-Sheeting-Verfahrens sind. Will man
nun ein allgemeines Rubber-Sheeting durchführen, so sind im Vorfeld einige
Voraussetzungen zu erfüllen. Man benötigt zum einen Passpunkte, an denen die
Transformation ausgerichtet werden soll. Dazu erzeugt man an diesen Punkten
Verschiebungsvektoren, die die Verschiebung des Passpunktes angeben.
Da es nun sein kann, dass die Verschiebungsvektoren nicht mehr einheitlich
über das Gebiet verteilt sind, wie im obigen Fall, muss diese Verschiebung
über eine Gewichtungs- bzw. Kombinationsfunktion aus den Vektoren ermittelt
werden. Dazu benötigt man je nach Rubber-Sheeting-Funktion noch weitere
Voraussetzung. Diese Funktionen und ihre Voraussetzungen werden wir dann
in Abschnitt 3.4 genauer kennen lernen. Fürs Erste halten wir fest, dass diese
Funktion aus den gegebenen Vektoren eine Verschiebung für jeden Stützpunkt,
der zu transformierenden Geometrien berechnet.
Abbildung 3.1.2 zeigt ein Beispiel für ein Gebiet vor und nach der RubberSheeting-Transformation. Die Passpunkte sind dabei blau und die Verschiebungsvektoren rot gekennzeichnet. Das Gitter dient zur besseren Darstellung
der Auswirkungen des Rubber-Sheetings.
3.2
Definitionen der wichtigsten Begriffe
Der Begriff der stetigen Transformation“ kommt ursprünglich aus dem Be”
reich der Mathematik. Dort heißt eine Funktion stetig, wenn verschwindend
kleine Änderungen des Argumentes (bzw. der Argumente) nur eine verschwin-
3.2. DEFINITIONEN DER WICHTIGSTEN BEGRIFFE
37
Abbildung 3.1.2: Rubber-Sheeting-Beispiel
dend kleine Änderung des Funktionswertes zur Folge haben. Das heißt insbesondere, dass in den Funktionswerten keine Sprünge auftreten dürfen. Eine
Transformation bezeichnet dort die Veränderung der Gestalt bzw. Form oder
Struktur und wird als eine Art Abbildung gesehen.
Überträgt man diese Erkenntnis auf eine Kartentransformation, so kommt man
zur
Definition 3.2.1 (stetige Transformation) Eine stetige Transformation ist genau
dann gegeben, wenn Punkte, die sich in unmittelbarer Nähe befinden, ähnlich transformiert werden. Daraus folgt, das diese Transformation die topologischen Beziehungen,
die zwischen den Objekten bestehen, nicht verändert.
Die nächsten Begriffe Passpunkt“ und Verschiebungsvektor“ hängen eng
”
”
zusammen. An einem Passpunkt (engl. Control Point) wird die Abweichung
der einen Karte von der anderen bestimmt. Jedem Passpunkt der ersten Karte
muss einen Passpunkt der zweiten zugeordnet sein. Aus dieser Abweichung
ergibt sich dann der Verschiebungsvektor. Die Passpunkte können dabei von
Hand oder automatisch erstellt werden.
Definition 3.2.2 (Passpunkt) Die Passpunkte in dieser Arbeit haben die Gestalt
P(x, y), wobei x, y ∈ R die Koordinaten des Punkts bzgl. eines kartesischen Koordinatensystems beschreiben.
In manchen Fällen kann es von Vorteil sein, die Position des Passpunktes P(x, y) als
Vektor
!
x
~
p=
y
aufzufassen.
Der Verschiebungsvektor wird aus den Passpunkten berechnet und gibt deren Verschiebung zu einander an. Dazu wird die bekannte Vektorrechnung
verwendet. Nähere Vektor-Rechenregeln findet man in [MW99].
Definition 3.2.3 (Verschiebungsvektor) Für uns ist hier in erster Line nur die
Abweichung der Punkte P1 (x1 , y1 ) und P2 (x2 , y2 ) zu einander wichtig, die dann als
38
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
Verschiebungsvektor ~
v dargestellt wird.
~
v =
=
∆x
∆y
!
x2 − x1
y2 − y1
!
Die Gewichtungs- und Kombinationsfunktion stellt den Kern des RubberSheeting-Verfahrens dar. Sie erzeugt aus einer Menge von Verschiebungsvektoren und evtl. weiteren Angaben für jeden Stützpunkt der zu transformierenden
Geometrie eine Verschiebung.
Definition 3.2.4 (Gewichtungs- und Kombinationsfunktion) Die Funktion
muss die Eigenschaft der stetigen Transformation (Definition 3.2.1) erfüllen.
Die Funktion ist definiert als
f (~
p)
=
~
v
f (R × R) → (R × R)
Im weiteren Verlauf wird diese Funktion auch Rubber-Sheeting-Funktion genannt.
3.3
Rubber-Sheeting als Prozess
Bevor wir nun näher auf die Einzelheiten der Rubber-Sheeting-Funktionen
eingehen, wollen wir uns erst mal eine Übersicht über den Ablauf des RubberSheetings verschaffen. Die Abbildung 3.3.1 zeigt den Aufbau des RubberSheeting-Prozesses. Die Grundvoraussetzung für den Rubber-Sheeting-Prozess
sind das Vorhandensein von geometrischen Objekten und die Passpunkte und
deren Verschiebung. Abhängig von der Rubber-Sheeting-Funktion sind eventuell zusätzliche Vorbedingungen bzw. -berechnungen notwendig.
Die Passpunkte und deren Verschiebung können von Hand bestimmt werden,
z.B. über ein visuelles Tool oder wie in dieser Arbeit durch einen automatischen Prozess, auf den wir in Abschnitt 4.3.3 genauer eingehen werden. An
die zu transformierenden geometrischen Objekte werden keine weiteren Bedingungen geknüpft, solange sie sich durch das Datenmodell abbilden lassen.
Für diese Arbeit stammen die Objekte aus verschieden Quellen, die wir im
Kapitel 4 untersuchen wollen.
Im ersten Schritt wählt man zunächst die geometrischen Objekte aus, die zu
transformieren sind. Dies können im einfachsten Fall alle Objekte sein und im
komplexen z.B. Objekte, die gewisse (ATKIS-)Eigenschaften aufweisen. Diese
Objekte werden dann in den nächsten Schritten nacheinander mit Hilfe der
ausgewählten Vektoren und einer Gewichtungs- bzw. Kombinationsfunktion
transformiert. Falls die Rubber-Sheeting-Funktion weitere Angaben benötigt,
Ve
k
to
r
Filterung (bzw.
Beschränkung) der
Vektoren durch
bestimmte Bedingungen
äh
lte
k
Ve
to
re
Alle geometrischen
Objekte
Abbildung 3.3.1: Rubber-Sheeting-Prozess
Geometrie
transformierte Geometrien
Filterbedingung
Zusätzliche Vorberechnung
für die Gewichtungs- bzw.
Kombinationsfunktion
Auswahl der zu
transformierenden Objekte
Berechung der
Verschiebungsvektoren (aus den
Eingabevektoren) für jeden
Stützpunkt der Geometire und
Verschiebung um diesen
n
Gewichtungs- bzw. Kombinationsfunktion
der ausgewählten Vektoren
en
sg
Ansatzmöglichkeit
für die Optimierung
Filterbedingung
durch Automatischen Prozess
erzeugte Verschiebungsvektoren
Erzeugung der
Passpunkte und deren
Verschiebung (Vektor)
me
tri
e
Vektoren
au
ew
Ge
o
manuell,
z.B. Visuell gewählt
3.3. RUBBER-SHEETING ALS PROZESS
39
40
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
Triangulation
Gilman 1985
Einfluss
Einf
Laurini 1998
Doytsher 2001
luss K
ombina
ti
Erweiterung
Haunert 2005
on
Kombination
Hybrid aus
Triangulation und
Laurini
Zeit
Abbildung 3.4.1: Zeitliche Anordnung der Rubber-Sheeting-Verfahren und deren Beeinflussung
wie z.B. in welcher Maschen liegt der Stützpunkt, welche Verschiebungsvektoren gehören zur Masche, muss dies im Vorfeld der Transformation berechnet
werden.
Im Transformationsschritt werden für jeden Stützpunkt des geometrischen Objekts die Rubber-Sheeting-Funktion auf die Verschiebungsvektoren angewendet und diese so zu einer Verschiebung für diesen Stützpunkt kombiniert. Bei
der Kombination können verschiedenen Möglichkeiten zum Einsatz kommen,
wie z.B. der Abstand des Vektors zu dem Stützpunkt, so dass bei steigendem
Abstand der Einfluss des Vektors auf die Verschiebung schwindet (wie Verfahren 3.4.2). Als letzter Schritt wird dann die veränderte Geometrie übernommen.
Auf die Optimierungsmöglichkeit der Filterung der Verschiebungsvektoren,
also die Einschränkung der Vektoren, die zur Berechnung der Verschiebung
herangezogen werden, werden wir separat in Abschnitt 4.4 eingehen. Zunächst
einmal wollen wir uns die Rubber-Sheeting-Funktionen näher anschauen.
3.4
Klassifizierung der Rubber-Sheeting-Funktionen
Da wir nun einen Überblick über den Rubber-Sheeting-Prozess haben, werden
wir jetzt auf die konkreten Gewichtungs- und Kombinationsfunktionen eingehen, die für die Verschiebung der Punkte zuständig sind. Dabei werden wir
vier Vorgehensweisen untersuchen, die von verschieden Autoren vorgeschlagen wurden. Eine Kombination aus zwei dieser Verfahren untersuchen wir am
Ende des Abschnittes. Abbildung 3.4.1 zeigt die zeitliche Anordnung dieser
Verfahren, sowie deren Beeinflussung.
Die Klassifizierung wollen wir anhand folgender Kriterien vornehmen:
1. globales oder lokales Verfahren;
Verwendung aller Vektoren oder nur Vektoren aus einem bestimmten Bereich
2. diskrete Anzahl oder kontinuierliche Anzahl von Vektoren;
wird eine endliche Anzahl von Vektoren zur Berechnung der Verschiebung herangezogen oder nimmt man eine unendliche Anzahl von Vektoren für die Berechnung an
3.4. RUBBER-SHEETING-FUNKTIONEN
3.4.1
41
Triangulation, Gillman 1985
Die Triangulation gehört zu den ersten Rubber-Sheeting-Verfahren. Es wurde
1985 in einem Artikel von Daniel W. Gillman (siehe [Gil85]) vorgestellt und
ist heute noch eines der verbreitetsten Verfahren für die Transformation von
Bildern 1 .
Die Grundlage dieses Verfahrens bildet eine Triangulation über die Passpunkte der Karte. Als Triangulation wird die Delaunay-Trianglation verwendet, da
sich diese mathematisch exakt formulieren lässt. Eine ausführliche Diskussion
über die mathematischen Eigenschaften findet der Leser in [LS80]. Für die Erstellung der Triangulation verwenden wir in dieser Arbeit einen dynamischen
Triangulationsalgorithmus, da dieser die Passpunkte sequenziell abarbeiten
kann und zusätzlich sehr performant arbeitet. Der Algorithmus, der für diese Arbeit etwas erweitert wurde, findet man in [Che05]. Ähnliche Verfahren
werden in [Are02] und [ZK03] beschrieben.
Man baut nun die Triangulation wie folgt auf:
(1) Man fügt drei neue Passpunkte ein, die das Initialdreieck der Triangulation
bilden. Diese Punkte müssen so gewählt werden, das das Dreieck die gesamte Karte überdeckt. Die Verschiebung an diesen Passpunkten wird auf
0 gesetzt.
Ein mögliches Initialdreieck lässt sich einfach durch folgende Annahmen finden. Hierbei geht man o.B.d.A. von einer rechtwinkligen Karte aus, die sich
durch die Punkte Pmin (xmin , ymin ) und Pmax (xmax , ymax ) beschreiben lässt. Die
Punkte D1 , D2 , D3 sind die gesuchten Dreieckspunkte. Abbildung 3.4.2 zeigt
diese Situation.
Da wir angenommen haben, dass das gesucht Dreieck gleichschenklig ist und
einen rechten Winkel besitzt, wissen wir dadurch:
• α = β = 45◦ , da die Winkelsumme im Dreieck 180◦ ist und γ = 90◦ seien
muss.
• Als nächstes wissen wir das die Diagonale des Rechtecks gleich der Höhe
des Dreiecks ist, d.h. l = h, die man mit dem Satz des Pythagoras bestimmen kann.
• Jetzt gilt noch a = b und da wir uns in einem rechtwinkligen Dreieck
befinden, kann man mit Hilfe des Höhensatzes h = b sin α bestimmen
und erhält so b = sinh α .
1
Interessierte Leser finden in [WLW06] ein Beispiel für dieses Verfahren bei Bildern.
42
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
D2
45°
c P2
b
l
a
D1 P1
D3
Abbildung 3.4.2: Bestimmung des Initialdreiecks
Zusammengesetzt ergibt dies nun folgendes:
∆x = xmax − xmin
(3.1)
∆y = ymax − ymin
(3.2)
= l = ∆x + ∆y
h
b =
sin α
p
∆x2 + ∆y2
=
=a
sin 45◦
2
h
2
2
2
(3.3)
(3.4)
(3.5)
Mit Gleichung 3.5 lassen sich nun alle Punkte des Initialdreieckes bestimmen:
D1 = Pmin
(3.6)
D2 = (xmin , ymin + b)
(3.7)
D3 = (xmin + a, ymin )
(3.8)
(2) Nun werden die Passpunkte nacheinander dem Triangulationsalgorithmus
übergeben; dieser baut dann schrittweise die Triangulation auf.
(3) Zum Abschluss werden die Tripel der entstanden Delaunay-Dreiecke abgespeichert.
Nun hat man ein durch Dreiecke überdecktes Gebiet. Jeder Stützpunkt wird
so von einem Dreieck überdeckt und lässt sich eindeutig zuordnen, solange
er innerhalb eines Dreiecks liegt. Falls ein Punkt genau auf der Grenze zweier
Dreiecke liegt, muss man festlegen, welches das zugeordnete Dreieck sein
soll. Wir werden hier als Konfliktlösung immer das Dreieck mit dem größten
Flächeninhalt auswählen.
Für jeden Stützpunkt, der zu transformierenden Geometrien, werden folgende
Berechnungen durchgeführt:
3.4. RUBBER-SHEETING-FUNKTIONEN
43
PS2
PT2
PS3
PS
PT
PT3
PT1
PS1
Abbildung 3.4.3: Transformation in einem Dreieck
(1) Der zu transformierende Punkt wird durch eine Linearkombination der
Dreieckspunkte ausgedrückt. Dabei enstehen drei zunächst noch unbekannte Parameter.
(2) Mit diesen drei Parametern wird nun die transformierte Position des Punktes in dem verschobenen Dreieck bestimmen. Das verschobene Dreieck
erhält man aus den Passpunkten und deren Verschiebung.
Abbildung 3.4.3 zeigt die Vorgehensweise. Das blaue Dreieck steht für das
Ausgangsdreieck, der blaue Punkt PT soll transformiert werden. Die schwarzen
Pfeile geben die Verschiebung der Passpunkte an und erzeugen somit das rote
verschobene Dreieck, in dem der transformierte Punkt PS liegen soll.
Bestimmen wir nun die drei unbekannten Parameter. Der hier verwendete
Lösungsweg kann in [HOL01] nachgelesen werden. Beginnen wir zunächst
den zu transformierenden Punkt PT durch die Dreieckspunkte auszudrücken:
xT = λ1 xT1 + λ2 xT2 + λ3 xT3
(3.9)
yT = λ1 yT1 + λ2 yT2 + λ3 yT3
(3.10)
Dabei gilt für die unbekannten Parameter:
0 ≤ λ1 , λ2 , λ3 ≤ 1
(3.11)
λ1 + λ2 + λ3 = 1
(3.12)
Mit Hilfe der Gleichungen 3.9, 3.10 und 3.12 lässt sich nun ein Gleichungssystem aufstellen und lösen. Das Ergebnis ist:
44
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
λ1 = ω (yT2 − yT3 )xT + (xT3 − xT2 )yT + xT2 yT3 − xT3 yT2
λ2 = ω (yT3 − yT1 )xT + (xT1 − xT3 )yT + xT3 yT1 − xT1 yT3
λ3 = ω (yT1 − yT2 )xT + (xT2 − xT1 )yT + xT1 yT2 − xT2 yT1
(3.13)
ω−1 = xT1 yT2 + xT2 yT3 + xT3 yT1 − (xT2 yT1 + xT3 yT2 + xT1 yT3 )
(3.16)
(3.14)
(3.15)
mit
Mit den Gleichungen 3.13, 3.14 und 3.15 kann man jetzt, analog zu oben, den
Punkt PS in dem verschobenen Dreieck ausdrücken und die Transformation
des Punktes abschliessen:
xS = λ1 xS1 + λ2 xS2 + λ3 xS3
(3.17)
yS = λ1 yS1 + λ2 yS2 + λ3 yS3
(3.18)
Da bei dieser Rubber-Sheeting-Funktion immer nur die Verschiebungsvektoren
des umschließenden Dreieck zur Transformation eines Punktes herangezogen
werden, zählt es zu den lokalen Verfahren. Infolgedessen wird auch immer mit
einer diskreten Anzahl von Vektoren gearbeitet und zwar genau drei.
Als großen Vorteil bei diesem Verfahren kann man die Laufzeit der Berechnung ansehen. Da hier immer nur 3 Vektoren miteinander kombiniert werden,
lassen sich die Rechnungen durch einfache Rechenoperationen ausdrücken.
Schleifen und Verzweigungen treten nicht auf. Ein Nachteil besteht aber in der
Triangulation, die unter gewissen Umständen entarten und somit zu schlechten Ergebnissen führen kann. So ein Fall wäre z.B. wenn die Passpunkte sehr
dicht und/oder in Häufungsbereichen auftreten.
3.4.2
Langlois Methode, Laurini 1998
Ein anderes Verfahren wurde von Robert Laurini 1998 (siehe [Lau98]) vorgestellt. Es kombiniert alle n Verschiebungsvektoren ~
vk mit einem Gewicht wk (~
p),
dass von der Entfernung des Passpunktes ~
pk zum Stützpunkt ~
p abhängt, zu
einer Verschiebung ~
v. Dieses Verfahren kommt dabei im Gegensatz zu den anderen ganz ohne weitere Vorbedingungen (bzw. -berechnungen) aus. Damit ist
dieses Verfahren ein globaler Ansatz zur Transformation von geometrischen
Objekten. Die Anzahl der Vektoren, die für die Berechnung der Verschiebung
verwendet werden, ist begrenzt.
~
v =
f (~
p) =
n
X
k=1
wk (~
p) × ~
vk
(3.19)
3.4. RUBBER-SHEETING-FUNKTIONEN
45
Für die Gewichtsfunktion soll gelten: wk (xk , yk ) = 1 und wk (x j , y j ) → 0, wenn
j , k. Die Stärke des Gewichtes soll dabei von der Entfernung des k-ten Passpunktes zum Punkt ~
p abhängen und mit zunehmender Entfernung sinken. Für
die Berechnung der Entfernung zwischen dem k-ten Passpunkt und dem Punkt
~
p wird der Euklidische Abstand verwendet, aber auch andere Abstandsfunktionen wären denkbar.
dk (~
p) =
q
(xk − x)2 + (yk − y)2
(3.20)
Damit kann man die Gewichtsfunktion wie folgt wählen
dk (~
p)−m
P
d j (~
p)−m
wk (~
p) =
(3.21)
j=1..n
Noch etwas umgeformt, um der Division durch Null zu entgehen, ergibt sich
wk (~
p) =
1 + dk
(~
p)m
1
P
p)−m
∗ d j (~
(3.22)
j,k
als Gewichtsfunktion.
Diese Funktion erfüllt nun die geforderten Eigenschaften, denn am Punkt
~
p=~
pk wird dk (~
p) = 0, womit das Produkt im Nenner 0 und wk (~
p) = 1 wird.
Nähert sich nun ~
p einen anderen Passpunkt an, so wird die Summe in Nenner
gegen ∞ gehen und folglich wird wk (~
p) gegen 0 streben, was oben gefordert
war.
Bestimmung des Parameter m
Mit dem Parameter m > 0, m ∈ Q lässt sich nun steuern, wie stark sich die Umgebung auf die Verschiebung des Punkts ~
p auswirken soll. Dies wird benötigt
um Topologieverzerrungen entgegen zu wirken, die auftreten können, wenn
das Gewicht wk (~
p) bei zunehmender Entfernung von seinem k-ten Passpunkt
zu schnell nachlässt. Der entsprechende Ansatz lässt sich in [Kre04] wiederfinden. Ist die maximale Verschiebung maxk≤n |v~k | = vmax deutlich kleiner als 1,
so empfiehlt sich ein Wert für m zwischen 1 und 3. Bei kleinen Gebieten, siehe
Beispiel aus Abschnitt 3.5, empfiehlt sich ein Wert m ≤ 1.
Bemerkung 3.4.1 Wählt man ein m < 0, so wird der Einfluss immer größer, so weiter
man von dem zu transformierenden Punkt entfernt ist. Dies ist die Umkehrung des
oben gewählten Ansatzes.
46
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
Da das Verfahren ohne Einheiten für Abstandsmasse auskommt, besteht noch
eine weitere Möglichkeit eine Topologieverzerrung zu umgehen. Wenn die
Verschiebung eines Vektors z.B. |v~k | = 5, 4 cm ist, kann dies auch als 0, 54
dm interpretiert werden, wodurch das Verfahren wieder stabil läuft. Dazu
wählt man eine Verschiebung v passend zum gewünschtem Parameter m und
skaliert alle Werte mit λ := vmax
v . Die neue Form der Rubber-Sheeting-Funktion
aus (3.19) lautet dann:
n
f (~
p) =
1X
wk (~
p) × λ~
vk
λ
(3.23)
k=1
Eine andere Art der Topologieverzerrung tritt dann auf, wenn zwei Passpunkte
zu nah aneinander liegen und deren Verschiebung sich jeweils entgegensetzt.
Dieser Fall sollte zwar in der Praxis nicht auftreten und kann über die Bedingung
|~
pi − p~j | > |~
vi − v~j |
(3.24)
für jeweils zwei i , j ≤ n überprüft werden.
Ein Vorteil dieses Verfahrens ist die starke Unabhängigkeit von der Erzeugung
der Verschiebungsvektoren, da es dem Verfahren relativ egal ist wie sich die
Vektoren auf dem Kartenblatt verteilen. Durch den Parameter m lässt sich
dieses Verfahren an viele Gegebenheiten anpassen. Außerdem werden keine
zusätzlichen Vorberechnungen benötigt.
Gravierender Nachteil dieses Verfahren ist, das die auftretende Doppelsumme, die durch Gleichung (3.19) und (3.22) entsteht, die Laufzeit maßgeblich bestimmt und die wiederum von der Anzahl der Verschiebungsvektoren abhängt.
Vernachlässigt man die Kosten für die Zugriffe auf die Werte und eventuelle
Rechenoperationen, so kann man diese Funktion gegen O(n2 ) abschätzen. Wir
werden in Abschnitt 4.4 ein paar Möglichkeiten diskutieren diese Laufzeit zu
verbessern.
3.4.3
Doytsher 2001
Ein anderes Verfahren zur Transformation von geometrischen Objekten anhand von Verschiebungsvektoren, wurde 2001 in dem Artikel [DFE01] von
Yerahmiel Doytsher, Sagi Filin und Eti Ezra vorgestellt. Für die Berechnung
der Verschiebung werden jedoch nicht alle Vektoren herangezogen, wie bei
dem Verfahren von Laurini, sondern nur spezielle einer Masche, in der sich
der zu transformierende Punkt befindet. Daher ist dieses Verfahren ein lokaler Ansatz zur Transformation von geometrischen Objekten. Daraus folgt aber
3.4. RUBBER-SHEETING-FUNKTIONEN
47
auch eine zusätzliche Vorbedingung für diese Funktion. So müssen Maschen
existieren - an denen sich wiederum die Verschiebungsvektoren befinden - und
jeder Stützpunkt muss genau einer Masche zugeordnet werden können.
Die Transformation basiert auf einer gewichteten Verschiebung über alle relevanten Passpunkte. So wird zu einem gegeben Punkt P(X, Y) die Transformation durch folgende Gleichungen berechnet:
n
P
~
v = f (~
p) =
wk (~
p) × v~k
k=1
n
P
(3.25)
wk (~
p)
k=1
mit:
n = Anzahl der Passpunkte der Masche;
v~k = die Verschiebung des Passpunktes (Verschiebungsvektor);
wk (~
p) = der Einfluss (Gewicht) dieses Passpunktes auf die Verschiebung.
Die Gewichtsfunktion wk wählt man mit Hilfe des Euklidischen Abstands
d. Dadurch wird der Einfluss der Verschiebungsvektoren über den Abstand
zum transformierenden Punkt P gesteuert und mit zunehmender Entfernung
schwindet das Gewicht des Vektors v~k .
wk (~
p) =
=
1
dk (~
p)
(3.26)
1
p
(X − xk )2 + (Y − yk )2
(3.27)
Bemerkung 3.4.2 Wenn der Abstand vom Punkt P zum Vektor vk gleich Null ist,
dann würde man ja durch Null teilen. Für diesem Fall ersetzt man das Gewicht
durch unendlich, d.h. für diesen Punkt wird nur noch der Vektor vk verwendet, alle
anderen haben keinen Einfluss mehr auf die Transformation. Dies entspricht auch der
Forderung der stetigen Transformation.
In der Praxis verwendet man nun jedoch nicht alle Vektoren für die Verschiebung eines Punktes, sondern nur solche deren Einfluss nicht blockiert ist. In
[DG95] findet man nähere Praxisinformationen, wann dies der Fall sein kann.
Für den weiteren Verlauf verwenden wir nur die Vektoren, die direkt (linear)
vom Punkt P aus erreichbar sind. Man kann sich dazu auch vorstellen, das
man sich auf den Punkt P stellt und nur die Passpunkte am Rand der Masche
verwendet, die man direkt sehen kann. Abbildung 3.4.4 verdeutlicht diesen
Sachverhalt. Vom Punkt P sind in diesem Beispiel nicht alle Vektoren sichtbar, da sie entweder durch den äußeren Rand oder durch Löcher und innere
Streckenzüge verdeckt werden.
48
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
Abbildung 3.4.4: Einflussvektoren bei [DFE01]
Um nun diese Einflussvektoren zu finden, verwendet man einen Algorithmus, der in linearer Laufzeit arbeitet. Dazu müssen die Vektoren der Masche
jedoch im Uhrzeigersinn geordnet sein. Im ersten Schritt wählt man einen Anfangsvektor, der nicht verdeckt ist. Die erste Wahl sollte der Vektor mit dem
geringsten Abstand sein, da dies oft der geeignetste Kandidat ist. Falls dieser
doch verdeckt sein sollte, d.h. es tritt eine Überschneidung auf, wählt man den
nächsten Vektor, der an dieser Überschneidung liegt, und beginnt von vorne.
Hat man einen solchen Anfangsvektor gefunden, beginne man die Vektoren
im Uhrzeigersinn auf ihre Sichtbarkeit zu überprüfen. Jeder Vektor, der rechts
von dem Vorgänger liegt, kann als sichtbar markiert werden. Abbildung 3.4.5
(oben) zeigt dies. Tritt ein Vektor links davon auf, so folgt daraus das es sich
um einen Kurvenpunkt handelt. Dabei sind zwei Fälle zu unterscheiden, die in
Abbildung 3.4.5 (unten) dargestellt sind. Im erste Fall (a) ist dieser Passpunkt
dahinter und im zweiten (b) davor. Wenn der Passpunkt Vi+1 sich hinter seinem
Vorgänger Vi befindet, werden alle nach folgenden Passpunkte als verdeckt
markiert, solange sie links von Vi liegen. Wenn sich Vi+1 davor befindet, werden
alle Vorgänger von Vi , die rechts von Vi+1 liegen als verdeckt markiert. Dies
wird nun für alle nachfolgen Knoten gemacht, bis wieder Vi passiert wird.
Der selbe Algorithmus lässt sich nun auf Maschen mit Löchern anwenden. In
diesem Fall sollte die Reihenfolge der Passpunkte gegen den Uhrzeigersinn
gewählt werden, welche auch die originale Reihenfolge der Punkte der Löcher
ist. Dann sind keine weiteren Veränderungen notwendig. Will man jetzt noch
Maschen mit inneren Streckenzügen zulassen, dann werden diese auch als
Löcher angesehen, deren Fläche aber null ist (Null-Flächen). Um diese NullFlächen zu erzeugen, werden die Punkte des Streckenzuges in umgekehrter
Reihenfolge dupliziert. Durch diese Erweiterungen lässt sich jetzt die Berechnung der Einflussvektoren, wie in Abbildung 3.4.4 gezeigt, berechnen und die
Transformation durchführen.
3.4. RUBBER-SHEETING-FUNKTIONEN
Vi-1
49
Vi
Vi+1
P
Vi+1
Vi-1
Vi-1
Vi
P
Vi+1
Vi
P
Abbildung 3.4.5: Bestimmung der Einflussvektoren
3.4.4
Haunert 2005
Das Rubber-Sheeting-Verfahren aus dem Artikel [Hau05] von Jan-Henrik Haunert aus dem Jahr 2005 basiert auf der Grundidee des Verfahrens von Doytsher.
Die Idee der Maschen wurde dabei übernommen und so erweitert, das nun
anstelle einer diskreten Anzahl eine kontinuierliche Anzahl von Vektoren für
die Berechnung der Verschiebung verwendet wird. Anschaulich werden dabei
zwischen zwei Passpunkten, die linear mit einander verbunden sind, unendlich viele Vektoren erzeugt. Daraus ergeben sich als zusätzliche Vorbedingungen für dieses Verfahren:
1. das Vorhandensein von Maschen,
2. nur geradlinig verbundene Passpunkten auf der Masche.
Wie auch bei dem Verfahren von [DFE01] nutzt dieses Verfahren einen lokalen Ansatz, da für die Transformation nur die Vektoren der jeweiligen Masche
verwendet werden. Der Unterschied zu den obigen Verfahren ist jedoch, dass
es sich nun nicht mehr um eine endliche und spezielle Auswahl von Vektoren handelt, sondern eine unendliche Anzahl für die Rechnung angenommen
wird. Abbildung 3.4.6 zeigt ein Beispiel, (links) wird die Transformation nach
der Gleichung (3.25) durchgeführt; (rechts) wird die Transformation kontinuierlich durchgeführt. Wie man schnell erkennt, wird im linken Verfahren die
Transformation hauptsächlich durch die oberen Vektoren bestimmt. Dies führt
zu einer unausgewogenen Verschiebung der Masche, da die Häufung von Vektoren nicht berücksichtigt wird. In diesem Verfahren (rechts) wird dieser Fall
verbessert, indem jetzt nicht nur die einzelnen Vektoren betrachten werden,
sondern für jedes Liniensegment zwischen zwei Vektoren zusätzliche“ Vek”
toren erzeugt werden. Dadurch lässt sich das Ungleichgewicht der Verteilung
50
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
Abbildung 3.4.6: Transformation einer Masche - (links) nach [DFE01]; (rechts)
nach [Hau05]
der Vektoren beheben, da jetzt jedes Segment unendlich viele Vektoren besitzt
und keine Häufung mehr auftreten kann.
Eine entsprechende Formel lässt sich mit Hilfe einer linearen Interpolation der
Passpunkte am Rand der Masche beschreiben. Dazu benötigt man folgende
Vorüberlegungen. Die Formeln (3.28) und (3.29) berechnen die Koordinaten
und Verschiebung des Passpunktes auf einem Liniensegment der Masche mit
dem Abstand s zum Anfangspunkt xi bzw. ∆xi des Liniensegmentes. Für die
Y-Koordinate lässt sich die Formel analog angeben.
xi+1 − xi
Si,i+1
∆xi+1 − ∆xi
∆xi (s) = ∆xi + s ·
Si,i+1
xi (s) = xi + s ·
(3.28)
(3.29)
Die Distanz vom Transformationspunkt P0 zum interpolierten Maschenrandpunkt wird durch die Formel (3.30) beschrieben. Abbildung 3.4.7 zeigt diese
Überlegungen.
S2i,0 (s)
=
xi+1 − xi
xi − x0 + s ·
Si,i+1
!2
yi+1 − yi
+ yi − y0 + s ·
Si,i+1
!2
(3.30)
Nun geht man von der endlichen Anzahl auf eine unendliche Anzahl von
Vektoren über. Dazu bildet man das Integral über das Liniensegment zwischen
jeweils zwei Passpunkten. Die Formel (3.31) gibt dann die Verschiebung für
die Punkte innerhalb einer Masche an.
∆x0
S

S

i,i+1
i,i+1

X  Z ∆x (s) · ds  ,X  Z
ds 
i



=




S2i,0 (s)  i 
S2i,0 (s) 

i
0
0




1
Z
Z1
 ,X 

X 
∆xi (r) · dr 
dr 

Si,i+1 ·

Si,i+1 ·

=



2 (r) 
2 (r) 

S
S
i,0
i,0
i
i
0
0
(3.31)
(3.32)
3.4. RUBBER-SHEETING-FUNKTIONEN
51
xi, yi
xi+1, yi+1
Si,i+1
Pi+1
Pi
Si,0
P0
Abbildung 3.4.7: Interpolation der Koordinatenunterschiede
Die Anzahl der Summanden ist klein, da keine zusätzlichen Maschenpunkte
zu interpolieren sind.
Eine Lösung der verwendeten Integrale aus Gleichung (3.32) findet man im
Anhang C.
3.4.5
Hybrid-Vorschlag
Die oben genannten Verfahren folgen entweder einem lokalen oder globalen
Ansatz. Beide Ansätze haben ihre Vor- und Nachteile. Betrachten wir diese
nun einmal genauer, ohne speziell auf die Verfahren einzugehen. Die lokalen
Verfahren beziehen immer nur eine gewisse Umgebung in die Verschiebung
mit ein, dies verkürzt zwar die Rechenzeit, birgt aber die Gefahr, das die
Transformation zu lokal abläuft und Einflüsse von Verschiebungen verloren
gehen. Bei dem globalen Ansatz ist dies genau umgekehrt. Es werden alle
Verschiebungen des Gebietes betrachtet, was sich aber negativ auf die Laufzeit
auswirkt. Deswegen wollen wir nun einen hybriden Ansatz betrachten, der
sich aus der Kombination der Verfahren nach [Gil85] und [Lau98] ableiten
lässt.
Als Ausgangssituation wollen wir folgendes Szenario betrachten: Es liegt ein
Ausschnitt einer Karte vor. In diesem Gebiet existieren eine zufällige Anzahl
von Passpunkten mit jeweils einer Verschiebung. Dabei sind die Passpunkte
beliebig auf der Karte verteilt, es treten jedoch gewisse Häufungsbereiche auf.
Bei einem lokalen Verfahren würden die einzelnen Bereiche zu unterschiedlich
von einander transformiert werden, da die Häufungsbereiche die Verschiebung
stärker beeinflussen als in den anderen. Ein globales Verfahren dauert uns aber
zulange. Deswegen werden wir jetzt wie folgt vorgehen:
1. Man fügt neue Passpunkte in die Karte ein. Diese Punkte sollten sich gut
über das Gebiet verteilen, damit die spätere Triangulierung nicht entarten
kann. Diese Punkte können anhand von Regeln oder von Hand erstellt
werden. Wir werden in dieser Arbeit ein äquidistantes Gitter verwenden.
2. Da die neuen Passpunkte noch keine Verschiebung besitzen, berechnet
52
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
Abbildung 3.4.8: Hybrid Ansatz mit zufällig gewählten Passpunkten
man für diese Punkte die globale Verschiebung mit der Gleichung (3.19)
aus dem Verfahren von Laurini.
3. Durch diese Vorgehensweise hat man nun gute Passpunkte für die Triangulierung erzeugt und kann die Transformation, wie sie in Abschnitt 3.4.1
beschrieben ist, durchführen.
Abbildung 3.4.8 zeigt ein Beispiel für dies Verfahren. Blau sind die existierenden Passpunkte mit Verschiebung, rot sind die neu erzeugten Passpunkte.
Durch diese Vorgehensweise erreicht man eine bessere Laufzeit als beim globalen Ansatz, aber bezieht dennoch die gesamte Kartenverschiebung in die
Berechnung mit ein. Durch die spezielle Festlegung der neuen Passpunkte
erreicht man, dass die Triangulation nicht entartet und gute Ergebnisse liefert. Zusätzlich kann man weitere Bedingungen für die Verteilung der neuen
Passpunkte formulieren. Somit erhält man ein Verfahren, das jetzt völlig unabhängig von der Verteilung der existierenden Passpunkte ist.
Ein einfacher Algorithmus zur Erstellung der neuen Passpunkte
In dieser Arbeit wollen wir die Erstellungen der neuen Passpunkte über einen
einfachen Algorithmus berechnen. Die Passpunkte sollen sich dabei in einem
äquidistanten Gitter über das Kartenblatt verteilen. Die Erzeugung des Gitter
wird im Algorithmus 3.4.1 beschrieben. Die Ausdehnung des Kartenblattes ist
durch die Punkte Pmin (xmin , ymin ) und Pmax (xmax , ymax ) gegeben, die sich aus
dem minimalen überdeckenden Rechteck über alle Kartenobjekte ergibt. Über
den Parameter d wird der Abstand der Punkte gesteuert.
3.5. RUBBER-SHEETING BEISPIELE
53
Algorithmus 3.4.1 Erzeugung äquidistanter Passpunkte
Eingabe: xmin , ymin , xmax , ymax : NUMBER
Ausgabe: eine Menge von äquidistanten Gitterpunkten
x, y : NUMBER
x := xmin
y := ymin
while y <= ymax + d do
while x <= xmax + d do
EinfügenPasspunkt(x, y) {Einfügen eines neuen Passpunktes}
x := x + d {x um d weitersetzen}
end while
y := y + d {y um d weitersetzen}
x := xmin {x wieder auf die erste Position setzen}
end while
3.5
Beispiele für die Rubber-Sheeting-Verfahrenen
Da wir nun die Rubber-Sheeting-Funktionen kennengelernt haben, wollen wir
uns auch die Verfahren in Aktion ansehen. Um die Übersichtlichkeit zu wahren,
befinden sich die vollständigen Tabellen für die Berechnungen der Transformation im Anhang B (Seite 115 ff).
Unser Ausgangsgebiet besteht aus einer Masche mit 6 Stützpunkten, sowie
aus drei zu transformierenden Punkten I, II und III. Abbildung 3.5.1 (links)
zeigt dieses Gebiet. Die blauen Aussenlinien sind durch Straßen gegeben, an
denen die Passpunkte und deren Verschiebung fest gemacht sind. Die Verschiebungsvektoren werden in schwarz dargestellt und sind mit 1 bis 6 beschriftet.
Die Tabelle B.1 gibt die Koordinaten und Verschiebung der Passpunkte an;
Tabelle B.2 die zu transformierenden Punkte und deren Abstand zu den Passpunkten. Dabei besteht eine mittlere Verschiebung von 6, 67 in X-Richtung und
4, 67 in Y-Richtung.
Wir beginnen unsere Beispiele mit dem Rubber-Sheeting nach [Lau98]. Abbildung 3.5.1 (rechts) zeigt das Beispielgebiet nach dieser Transformation. Zur Berechnung der Verschiebung wird die Gleichung (3.19) verwendet. Die Gewichtung aus Gleichung (3.22) wird leicht verändert, um besser zu dem kleinen“
”
Gebiet mit den dichten Passpunkten und hohen Verschiebungen zu passen.
Als Gewichtungsfunktion verwenden wir hier somit:
wk (~
p) =
1
P
1 + dk (~
p)m+1 ∗ d j (~
p)−m
(3.33)
j,k
Das Ergebnis der Transformation ist in rot dargestellt. Dabei ergeben sich fol-
54
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
100
4
5
100
III
y
50
y
6
III
3
50
II
II
I
I
1
2
x
x
100
50
100
50
Abbildung 3.5.1: Ausgangsgebiet (links) - Ergebnis nach Laurini (rechts)
gende Verschiebungen:
Punkt
I
II
III
x
23
82
41
y
32
43
50
∆x
5,98
8,89
5,07
∆y
4,41
6,94
3,06
x0
28,98
90,98
46,07
y0
36,41
49,94
53,06
Der Parameter m wird für dieses Beispiel gleich 1 gesetzt. Die daraus entstehende Gewichtung der einzelnen Vektoren findet man in Tabelle B.3 (unten).
Es ergibt sich eine durchschnittliche Verschiebung in X-Richtung von 6, 65 und
in Y-Richtung von 4, 8. Das Ergebnis des Verfahrens liefert eine relativ gute
Verschiebung, da sie nur wenig von der Durchschnittsverschiebung abweicht.
Wendet man das Verfahren nach [DFE01] auf diese Masche an, ergeben sich
folgende Verschiebungen:
Punkt
I
II
III
x
23
82
41
y
32
43
50
∆x
6,40
7,08
6,69
∆y
4,54
5,34
4,31
x0
29,40
89,08
47,69
y0
36,54
48,34
54,31
Abbildung 3.5.2 (links) zeigt das Ergebnis dieser Transformation. Die Verschiebung verhält sich ähnlich, wie beim Verfahren nach Laurini. Die Gewichtung
der einzelnen Vektoren findet man in Tabelle B.4 (unten). Zur die Berechnung
der Verschiebung wurden alle Passpunkte mit einbezogen, da von jedem Transformationspunkt aus, die Passpunkt direkt sichtbar sind. Als Durchschnittswerte für die Verschiebung ergeben sich 6, 72 und 4, 73.
Als nächstes wenden wir das Verfahren nach [Hau05] an. Verhält anders als
die vorherigen Verfahren. Zum einen fällt die Verschiebung geringer aus und
zum anderen treten jetzt negative Verschiebungen auf:
3.5. RUBBER-SHEETING BEISPIELE
6
50
y
y
50
4
4
5
100
5
100
55
6
3
III
3
III
II
II
I
I
1
2
1
2
x
x
100
50
100
50
Abbildung 3.5.2: Ergebnis nach Doytsher (links) & Haunert (rechts)
Punkt
I
II
III
x
23
82
41
y
32
43
50
∆x
3,31
-5,26
2,97
∆y
1,60
-0,03
-1,34
x0
26,31
76,74
43,97
y0
33,60
42,97
48,66
Vergleich man das Ergebnis dieser Transformation (Abbildung 3.5.2 (rechts))
mit den anderen, so fällt der Unterschied schnell auf, wie sich die kontinuierliche Verwendung von Vektoren zur diskreten Verwendung unterscheidet.
Als Abschluss wollen wir uns noch das Verfahren nach [Gil85] ansehen. Dazu
wurde das Beispielgebiet zuerst mit Hilfe des Triangulationsalgorithmus trianguliert und entsprechend der Gleichungen aus Abschnitt 3.4.1 transformiert:
Punkt
I
II
III
x
23
82
41
y
32
43
50
∆x
6,50
7,62
7,42
∆y
3,84
5,34
1,74
x0
29,50
89,62
48,42
y0
35,84
48,35
51,74
Abbildung 3.5.3 zeigt die Triangulation und das Ergebnis der Verschiebung.
Die Dreiecke werden durch die orangen Linien dargestellt und Tabelle B.6
enthält die Ausgabe des Triangulationsalgorithmus. Die Tabelle B.5 enthält
das Ergebnis der Transformation.
KAPITEL 3. GRUNDLAGEN DER RUBBER-SHEETING-VERFAHREN
5
100
4
6
III
3
y
50
II
I
2
1
56
x
50
100
Abbildung 3.5.3: Ergebnis nach Gillman
Kapitel 4
Durchführung der
Rubber-Sheeting-Verfahren
In diesem Kapitel wir wollen nun die kennengelernten Rubber-Sheeting-Verfahren auf digitale Kartenblätter anwenden. Dazu betrachten wir zunächst
unsere Arbeitsgrundlage, die die Ausgangssituation für das Rubber-Sheeting
darstellt. Danach werden wir die einzelnen Schritte der Durchführung des
Rubber-Sheeting vorstellen. Am Ende des Kapitels werden wir noch Metriken
festlegen, um die Rubber-Sheeting-Ergebnisse vergleichbar zu machen.
4.1
Matching von Objekten in räumlichen Datenbanken
Um überhaupt ein Rubber-Sheeting durchführen zu können, benötigt man
Informationen in welcher Art und Weise die Karte zu verschieben ist. Dafür
gibt es sicherlich viele Möglichkeiten die Verschiebung für ausgewählte Punkte
einer Karte zu bestimmen. In dieser Arbeit wollen wir den Ansatz des Matching
von zwei Kartenblättern verwenden.
Kartographische Objekte werden heute in vielen unabhängigen Datenbeständen gepflegt und verwaltet, dabei ist die Aktualität und Vollständigkeit oft sehr
unterschiedlich. In dieser Arbeit ist die Ausgangssituation so, dass wir zwei
Datensätze haben, von denen der erste ein digitales Landschaftsmodell im
ATKIS-Modell enthält und der zweite Straßendaten aus diesem Gebiet. Da die
Straßeninformationen im zweiten Datensatz deutlich schöner modelliert sind
als im ersten, möchte man die Kartenobjekte des ersten Datensatzes mit denen
aus dem zweiten kombinieren, um so ein aktuelles Kartenblatt zu erstellen.
Da die Objekte aus dem ersten Datensatz nicht direkt zu den Objekten aus
dem zweiten passen, müssen diese, entsprechend der Abweichung der beiden
Kartenblätter zueinander, transformiert werden. Diese Transformation wird
durch das Rubber-Sheeting erreicht.
Aber wie bestimmt man nun diese Abweichung der Kartenblätter von ein57
58KAPITEL 4. DURCHFÜHRUNG DER RUBBER-SHEETING-VERFAHREN
ander? Dazu benötigt man Objekte, die in beiden Datensätzen das gleiche
darstellen. An diesen Objekten kann dann die Verschiebung voneinander bestimmt werden. Das Problem dabei ist aber, dass die Objekte in unterschiedlichen Maßstäben und Einteilungen 1 vorliegen können. Dadurch können sich
m:n-Zuordnung der Objekte ergeben.
Deshalb wird im Vorfeld des Rubber-Sheeting ein Matching auf den beiden
Datenbeständen durchgeführt, um so eine Zuordnung von Objekten des einen
zum anderen Datensatz zu erhalten. Der Matching-Prozess setzt sich dabei aus
mehreren Stufen zusammen:
• Semantische Filterung
Es werden nur Objektklassen miteinander verglichen, die sich semantisch überlappen. Die semantische Bedeutung ist durch den ATKIS-Objektartenkatalog
gegeben.
• Ermittlung möglicher Zuordnungen
Es wird nun versucht über das Buffer-Growing-Verfahren passende Kandidaten
für die Zuordnung zu finden.
• Regelbasierte Auswahl
Bei dem obigen Zuordnungsschritt können Konflikte zwischen zwei möglichen
Zuordnungen auftreten, diese werden durch ein Regelwerk aufgelöst. Zusätzlich
werden die gefundenen Zuordnungen mit Hilfe von Qualitätskriterien bewertet.
• Manuelle Nachbearbeitung
Der gesamte Matching-Prozess wird in [Man02] und [Kre04] beschrieben. Die
Artikel [ML04] und [LMT04] geben eine Übersicht über die Identifikation kartographischer Objekte in räumlichen Datenbanken. Für die Anwendung des
Rubber-Sheeting ist der Aufbau und Ablauf des Matching nicht so essentiell,
aber das Ergebnis schon.
4.2
Ergebnisse des Matchings
Als Ergebnis des Matching-Prozesses erhalten wir ein Linkschema, das die
Zuordnungen der Objekte zueinander enthält. Die Abbildung 4.2.1 (rechts)
zeigt den Aufbau dieses Schemas. Um die Zuordnung einfacher und eindeutig zu machen, werden die ursprünglichen Objekte geeignet zusammengefasst 2 . Dadurch erreicht man, das die m:n-Zuordnung in eine 1:1-Zuordnung
übergeht. Die so entstandenen aggregierten Objekte der Quelle A und B sind
über das Objekt Link eindeutig einander zugeordnet. Im weiteren Verlauf
werden wir nur noch mit den aggregierten Objekten weiter arbeiten, da diese
1
z.B. aufgrund von kartographischen Generalisierungen zu grob maßstäbigen Repräsentationen oder wie im Falle von ATKIS-Daten durch unterschiedliche Objektbildungsregeln
2
Beim zusammenfassen von Objekten spricht man auch vom aggregieren“. Das Ergebnis
”
sind aggregierte Objekte.
4.3. ANWENDEN DES RUBBER-SHEETINGS
59
Link
0..1
LINK
Aggregated_Object_A
1..*
Object_A
0..1
Aggregated_Object_B
1..*
Object_B
Abbildung 4.2.1: Beispiel für die Zuordnung von Objekten & Linkschema
durch ihre 1:1-Zuordnung einfacher zu handhaben sind als m:n-Zuordnung
der ursprünglichen Objekte. Abbildung 4.2.1 (links) zeigt die Zuordnungen.
Die schwarzen Pfeile stehen für die m:n-Zuordnung, der rote Pfeil mit den
Kreisen für die 1:1-Zuordnung der aggregierten Objekte. Wenn wir im weiteren Verlauf von A- bzw. B-Objekten sprechen, dann meinen wir die Objekte
der Klassen Aggregated Object A bzw. B.
Für einige der Verfahren werden benötigt man zugeordnete Maschen. Dazu
sucht man Mengen von Link-Zuordnungen, die in beiden Kartenblättern Maschen bilden. Da nur vollständige Maschen zugeordnet werden können, kann
es passieren, wenn das Matching von Objekten nicht genau genug arbeitet
und dadurch Lücken in den möglichen Maschen entstehen, dass einige dieser
Maschen auch nicht als Maschen erkannt und somit auch nicht zugeordnet
werden. Im schlechtesten Fall reichen große Löcher in das Kartenblatt hinein.
Dies kann umgangen werden, wenn man den Kartenrand mit in das Kartenblatt übernimmt und auch zuordnen lässt. Dadurch erreicht man, dass es
immer eine große“ Masche gibt, deren Verschiebung dann auch einfach zu
”
berechnen ist.
4.3
Anwenden des Rubber-Sheetings
Wie wir bereits im Abschnitt 3.3 gesehen haben, gliedert sich das RubberSheeting in mehrere Schritte auf. Dabei unterscheiden wir drei Phasen voneinander:
(I) Vorbereiten der Daten (Importphase)
(II) Erzeugung der Vektoren 3 (Erzeugungsphase)
(III) Anwenden der Rubber-Sheeting-Funktion (Transformationsphase)
4.3.1
Gegebene Daten
Die Daten, die zu transformieren sind, werden in einem ATKIS-konformen
Datenmodell gehalten. Abbildung 4.3.1 zeigt das hier verwendete Datemodell. Die ObjektID ist der eindeutige Schlüssel des ATKIS-Objektes, wogegen
3
an den zugeordneten aggregierten Objekten
60KAPITEL 4. DURCHFÜHRUNG DER RUBBER-SHEETING-VERFAHREN
Objekt
ObjektID
ObjektNr
ObjektArt
ObjektGeometrie
besitzt
0..*
0..*
Objektattribut
Abbildung 4.3.1: ATKIS-Datenmodell
node_is_part_of
face_is_part_of
1..*
tdm_sf_x
0..*
0..*
egde_is_part_of
0..*
lies_on
0..*
tdm_node_x
0..*
0..1
edge_of
1..*
tdm_edge_x
0..*
0..2
tdm_face_x
is_startnode_of
0..*
0..*
0..*
0..*
lies_in
0..1
0..1
is_endnode_of
lies_in
Abbildung 4.3.2: Topologisches Datenmodell aus [Tie03]
die ObjektNummer nur einen Teil dieses Schlüssels enthält. Die ObjektArt bezeichnet den ATKIS-Schlüssel aus dem ATKIS-Objektartenkatalog 4 . Jedem
Objekt können zusätzlich ein oder mehrere ATKIS-Attribute zugeordnet werden. Die Objektgeometrie enthält die geometrische Darstellung des Objektes.
Hier wird der Datentyp SDO GEOMETRY verwendet.
Diese geometrischen Daten werden dann zusätzlich in ein topologisches Datenmodell überführt. Das verwendete Verfahren stammt aus [Tie03] und liefert
das Datenmodell aus Abbildung 4.3.2. Die entsprechenden Eigenschaften des
topologischen Datenmodelles findet man in Abschnitt 2.3.2 wieder.
Bemerkung 4.3.1 Für das Rubber-Sheeting ist die Konvertierung zwischen den Modellen nicht Ausschlag gebend. Die Rubber-Sheeting-Transformation findet ohnehin
nur auf den Stützpunkten der Geometrien Anwendung, ob diese Punkte nun im geometrischen oder topologischen Datenmodell sind, spielt für die Transformation keine
Rolle. Die Unterscheidung ist für die spätere Interpretierung und Weiterverwendung
des Ergebnisses wichtig.
4.3.2
Vorbereitung der Ergebnisse für das Rubber-Sheeting
Um das Rubber-Sheeting in seinem Ablauf so übersichtlich wie möglich zuhalten, werden zunächst alle für das Rubber-Sheeting benötigten Daten in
ein eigenes Schema 5 geladen. Wir verwenden dabei eine anderes Schema als
4
Den Aufbau von ATKIS findet man in Abschnitt 2.2
Vorhandene Schemata können natürlich auch weiterhin verwendet werden, solange sie die
geforderten Eigenschaften erfüllen.
5
4.3. ANWENDEN DES RUBBER-SHEETINGS
Topological_Object_Node
lies_in
0..*
ID
Type
Geometry
Geometric_Object
61
0..1
Topological_Object_Face
ID
Geometry
0..*
end_node
left_face
ID
Name
Type
Geometry
start_node
0..*
1..*
right_face
Topological_Object_Edge
lies_on
0..*
0..1
ID
Geometry
1..*
Abbildung 4.3.3: Repräsentation der Objekte - geometrische (links) & topologische (rechts) Objekte
das der gegebenen Daten, um zu zeigen welche Attribute für das RubberSheeting notwendig sind. Dabei werden bereits existierende Schlüsselattribute
nach Möglichkeit erhalten. Das Rubber-Sheeting kann auf die Kartenobjekte
im geometrischen und topologischen Datenmodell angewendet werden.
Dazu werden zunächst die ursprünglichen Kartenobjekte (aus 4.3.1), die im
geometrischen Datenmodell vorliegen, als Geometric Object importiert. Diese Klasse besitzt einen eindeutigen Schlüssel (ID), einen frei wählbaren Namen
(Name) und einen Typ (Type). Der Typ enthält den ursprünglichen ATKISObjektschlüssel, um die Identifizierung des Objektes zu erleichtern. Das Attribut Geometry nimmt die geometrische Darstellung des Objektes auf. Es wird
hier der Oracle-Datentyp SDO Geometry verwendet. Die Erläuterungen zu diesen Datentyp findet man in Abschnitt 2.6. Abbildung 4.3.3 (links) zeigt die
Repräsentation des geometrischen Objektes.
Die topologische Darstellung des Kartenblattes wird mit Hilfe der Erweiterung
[Tie03] aus den ursprünglichen geometrischen Objekten extrahiert. Das Ergebnis wird in das topologische Datenmodell (Abbildung 4.3.3 - rechts) importiert.
Die Knoten werden durch die Klasse Topological Object Node, Kanten durch
Topological Object Edge und Maschen durch Topological Object Face repräsentiert. Dieses Datenmodell lehnt sich an das Modell aus Abbildung 4.3.2
verzichtet jedoch auf die Angabe des Simple Features (tdm sf x).
Die aggregierten Objekte der Quelle A und B, die wir als Ergebnis des Matching-Prozesses erhalten, werden ebenfalls durch die Klassen aus Abbildung 4.3.3 repräsentiert. Der Import erfolgt, je nachdem in welchem Datenmodell sich die aggregierten Objekte befinden, in die Klasse Geometric Object bei
geometrischen Objekten oder in die Klassen Topological Object Node, - Edge
und - Face, wenn es sich um topologische Objekte handelt. Um sie konzeptionell von den ursprünglichen Objekten abzutrennen, werden die aggregierten
Objekte jeweils in eigene Tabellen importiert.
Zusätzlich wird die Zuordnung der Objekte durch die Klasse Link dargestellt. Beim geometrischen Datenmodell besteht die Zuordnung jeweils zwi-
62KAPITEL 4. DURCHFÜHRUNG DER RUBBER-SHEETING-VERFAHREN
Geometric_Object
Topological_Object_Edge
Topological_Object_Face
Vector
Agg_Object_A
ID
X1,Y1
X2,Y2
Point1
Point2
Geometry
Agg_Object_B
0..1
0..1
1..*
Link
Abbildung 4.3.4: Repräsentation der Verschiebungsvektoren
schen zwei geometrischen Objekten. Beim topologischen Datenmodell besteht
die Zuordnung jeweils zwischen den Kanten- und Maschen-Objekten. Die
mögliche Zuordnung von Punkt-Objekten wird hier nicht verwendet.
Um den Zugriff auf die geometrischen Objekte zu beschleunigen, werden alle
Attribute des Datentyps SDO GEOMETRY indexiert.
4.3.3
Erstellung der Verschiebungsvektoren
Die Abweichung bzw. Verschiebung der gemeinsamen Kartenobjekte wird
durch das Vector-Objekt repräsentiert. Die Verschiebung wird an den zugeordneten aggregierten Objekten bestimmt. Je nachdem auf welchem Datenmodell
man arbeiten möchte, verwendet man die Ergebnisse des Matching-Prozesses
auf den geometrischen oder topologischen Daten. Das Ergebnis der Vektorerstellung ist dann datenmodellunabhängig.
Ein Vektor setzt sich aus folgenden Attributen zusammen:
• ID - eindeutiger Schlüssel
• ID A und ID B - Zuordnung zu jeweils einem A- und B-Objekt, das über
Link zugeordnet ist.
• X1, Y1 und X2, Y2 - Passpunkt auf dem A- bzw. B-Objekt.
• und der entsprechenden geometrischen Darstellungen im Datentyp SDOGEOMETRY:
– Point1 - geometrische Darstellung von X1, Y1
– Point2 - geometrische Darstellung von X2, Y2
– Geometry - geometrische Darstellung des gesamten Vektors
4.3. ANWENDEN DES RUBBER-SHEETINGS
63
Line
aus Quelle A
Line
aus Quelle B
Nur Anfangs und Endpunkt
an den Stütz punkten
äquidistant verteilt
Abbildung 4.3.5: Vektorerzeugung
Bemerkung 4.3.2 Dem aufmerksamen Leser ist sicherlich die Redundanz in der
Vektor-Repräsentation aufgefallen. Diese doppelte Speicherung der Koordinaten eines Vektors, die als Standardattribut und als Datentyp SDO GEOMETRY gespeichert
werden, ist auch gewollt. Eine Selektion von Passpunkten geht über eine Anfrage, die
die indexierten Attribute X1, Y1 bzw. X2, Y2 verwendet, deutlich schneller als wenn
die Anfrage mit einem geometrischen Vergleichsoperator auf den Attributen Point1
bzw. Point2 ausgeführt wird. Ohne die geometrische Darstellung würde man aber
die Möglichkeit von geometrischen Operatoren auf diesen Attributen verlieren. Somit
ist die oben gewählte Repräsentation eines Vektor sehr flexibel gehalten.
Für die Erzeugung der Vektoren lassen sich drei generelle Ansätze unterscheiden (siehe auch Abbildung 4.3.5):
• Vektoren an den Anfangs- und Endpunkten der Geometrie
• Vektoren an den Stützpunkten der Geometrie
• äquidistante Verteilung der Vektoren auf der Geometrie
Vektoren nur am Anfangs- und Endpunkt
In diesem Ansatz wird an jedem Start- und Endstützpunkt der aggregierten
Objekte ein Vector-Objekt erzeugt. Dazu bildet man Paare der A- und BObjekte, die über einen Link miteinander verbunden sind, und erzeugt jeweils
einen Vektor am Start- und Endstützpunkt des Paares.
Dabei kann aber der Fall auftreten, das die beiden zugeordneten Geometrien unterschiedliche Orientierungen aufweisen und somit die Reihenfolge der Stützpunkte entgegengesetzt verläuft. Würde man nun die Vektoren
an den Start- und Endpunkten der Geometrien erzeugen, so würde man
nicht die gegenüberliegenden Punkte miteinander verbinden, sondern die
Vektoren jeweils über Kreuz“ erstellen. Abbildung 4.3.6 zeigt diesen Fall.
”
Diese falsch erzeugten Vektoren würden bei der Anwendung der RubberSheeting-Funktion zu Fehlern führen. Um dies auszuschließen, lassen sich zwei
64KAPITEL 4. DURCHFÜHRUNG DER RUBBER-SHEETING-VERFAHREN
Line
aus Quelle A
Line
aus Quelle B
Fehlerhafte
Vektoren
gewollte
Vektoren
Abbildung 4.3.6: Fehlerhafte Vektorerzeugung bei entgegengesetzter Orientierung
Prüfungsverfahren verwenden, die feststellen, wie die Geometrien verlaufen
und bei Bedarf die Reihenfolge der Stützpunkte umdrehen.
• Abstandsbasierte Prüfung
Man vergleicht dazu den Abstand des ersten Stützpunktes des A-Objektes zu dem ersten, sowie letzten Stützpunkt des B-Objektes. Ist der
Abstand zum letzten Stützpunkt kleiner als zum ersten, dann wird die
Geometrie des B-Objektes umgedreht.
• Winkelbasierte Prüfung
Man vergleicht hier die Winkel der Vektoren, die durch die Start- und
Endpunkte der Geometrien erzeugt werden. Wenn der Winkel größer
90◦ ist, wird die Geometrie des B-Objektes umgedreht.
Bei dieser Art der Erstellung können eventuell Vektoren doppelt erzeugt, wenn
sich zwei aggregierte Objekte an ihren Start- bzw. Endpunkten berühren. Für
diese Punkte werden dann jeweils ein Vektor pro Objekt erzeugt. Diese doppelten Vektoren können aber leicht am Ende des Erstellungsprozesses identifiziert und entfernt werden. Dazu vergleicht man jeweils die Koordinaten
der Stützpunkte (X1, Y1, X1, Y2) zweier Vektoren miteinander und entfernt
Vektoren, die die gleichen Koordinaten aufweisen. Zur schnelleren Identifizierung, bietet sich ein Index auf den Attributen X1, Y1, X1, Y2 an. Je nachdem
wie genau die aggregierten Objekte platziert sind, kann man durch Rundungen
der Koordinatenwerte zusätzlich auch dicht anliegende Vektoren identifizieren
und entfernen. Abbildung 4.3.5 (links) zeigt des Ergebnis der Erzeugung.
Dieser Ansatz ist die schnellste Möglichkeit Vektoren zu erzeugen. Die Verteilung über das Kartenblatt ist im Allgemeinen sehr ausgewogen, da ja nur
jeweils an den Start- und Endpunkten der aggregierten Objekte Vektoren entstehen. Dies kann sich aber auch zum Nachteil entwickeln, wenn die aggregierten Objekte sehr lang sind, und dadurch keine Verschiebung zwischen Start-
4.3. ANWENDEN DES RUBBER-SHEETINGS
65
und Endpunkt der langen Objekte ermittelt wird. Anders formuliert, es entstehen Bereiche im Kartenblatt, an denen keine Verschiebung berechnet wird, ob
wohl es Objekte gibt, die sich für die Berechnung eignen würden.
Vektoren an den Stützpunkten
Das Erzeugen von Vektoren an den Stützpunkten der beiden Geometrien läuft
ganz ähnlich wie der obige Ansatz. Zunächst prüft man wieder, ob die Geometrien entgegengesetzt orientiert sind und dreht sie bei Bedarf.
Dann durchläuft man die Stützpunkte des A-Objekts und misst den Abstand
zum Startpunkt. Diesen Abstand kann man über die Länge des aggregierten
Objektes in eine prozentuale Angabe in Bezug auf die Gesamtlänge übersetzen.
Mit dieser Prozentangabe kann man auf dem B-Objekt den entsprechenden zugeordneten Passpunkt bestimmen und dort einen Vektor erzeugen. Wenn alle
Punkte von A durchlaufen sind, wendet man die Vorgehensweise auch für
das B-Objekt an. Zum Schluss werden dann eventuell auftretende Duplikate
entfernt. Abbildung 4.3.5 (mitte) zeigt des Ergebnis der Erzeugung. Für den
einfacheren Umgang mit den Abständen bei den beiden Geometrien, verwendet man das Oracle-Package SDO LRS, das in Abschnitt 2.6.3 vorgestellt wurde.
Dieser Ansatz ist der langsamste von den hier vorgestellten Ansätzen, da von
jeder Geometrie immer alle Stützpunkte durchlaufen werden müssen. Vorteil ist aber, dass die Verschiebung sehr genau repräsentiert wird, da jeder
Stützpunkt auch zum Passpunkt wird. Die Verteilung der Vektoren hängt stark
von den Geometrien und deren Stützpunkten ab, es können Häufungen von
Vektoren auftreten.
Äquidistant verteilte Vektoren
Verändern wir nun den Ansatz von den Vektoren an den Stützpunkten. Nun
benutzt man keine Stützpunkte mehr zur Bestimmung von Passpunkten, sondern durchläuft das A-Objekt und misst den Abstand zum Startpunkt. Wenn
man einen gewissen Abstand zum Startpunkt erreicht hat, setzt man an dieser
Stelle einen Passpunkt. Der Abstand lässt sich über einen Parameter einstellen. Nun bestimmt man den entsprechenden Abstand zum Startpunkt und
berechnet daraus den prozentualen Abstand. Auf dem B-Objekt wird dann
ein entsprechender Passpunkt mit dem prozentualen Abstand bestimmt und
ein Vektor erzeugt. Duplikate entstehen bei diesem Ansatz in der Regel nicht.
Abbildung 4.3.5 (rechts) zeigt des Ergebnis der Erzeugung.
Dieser Ansatz bildet einen Mittelweg zwischen den beiden obigen Ansätzen.
Durch die Parameter des Abstands lässt sich die Verteilung der Vektoren gut
steuern. Je geringer der Abstand, um so dichter die Vektoren und so länger die
Berechnungszeit. Der Abstandsparameter hängt stark von den verwendeten
Geometrien ab.
Das Verfahren sollte nur auf Objekte möglichst gleicher Länge angewendet
66KAPITEL 4. DURCHFÜHRUNG DER RUBBER-SHEETING-VERFAHREN
1..*
Vector
1..*
1..*
Point2
Point1
Point3
1..*
1..*
Triangle
ID
Geometry
1..*
Abbildung 4.3.7: Repräsentation der Dreiecke
werden. Wenn sich die Längen der Geometrien zu stark von einander unterscheiden, entsteht ein gewisses Ungleichgewicht in der Abstandsverteilung
der Vektoren auf den Objekten. Ist z.B. das A-Objekt sehr viel länger als das BObjekt, dann werden viele Vektoren in sehr dichtem Abstand auf dem B-Objekt
erzeugt. Die daraus resultierende Gesamtverschiebung ist nicht in jedem Fall
gut für die spätere Transformation.
Triangulierung
Für das Verfahren nach [Gil85] benötigt man zusätzlich zu den Verschiebungsvektoren eine Triangulierung über die erzeugten Passpunkte aller Vektoren.
Für die Triangulierung verwenden wir hier den Algorithmus aus [Che05].
Ein Dreieck wird in der Datenbank durch das Objekt Triangle repräsentiert.
Abbildung 4.3.7 zeigt dieses Objekt. Das Attribut ID ist der eindeutige Schlüssel
für jedes Dreieck. Ein Dreieck setzt sich dann aus den drei Eckpunkten zusammen, die als Referenz (Fremd-Schlüssel) auf den entsprechenden Passpunkt
des Vektor-Objektes gespeichert werden. Das Attribut Geometry stellt die geometrische Darstellung des Dreiecks zur Verfügung.
Zur Herstellung der Triangulation durchläuft der Algorithmus folgende Schritte:
(1) Initialisieren der benötigten Objekte, entsprechend Abschnitt 3.4.1
(2) Für jedes Vector-Objekt wird der Passpunkt (X1, Y1) in die Triangulation
eingefügt (sequentiell)
(3) Für jedes entstandene Dreieck
• erstelle ein neues Triangle-Objekt und
• erzeuge die entsprechende Objektgeometrie
4.3. ANWENDEN DES RUBBER-SHEETINGS
4.3.4
67
Durchführung des Rubber-Sheeting
Die Vorbedingungen für die Rubber-Sheeting-Funktionen sind nun erfüllt und
wir können sie anwenden. Die Funktionen sind vom Datenmodell unabhängig,
da sie unabhängige Punkt-Transformationen durchführen. Somit können unsere Kartenblätter, die im geometrischen und topologischen Datenmodell vorliegen, mit der gleichen Funktion transformiert werden.
Beim geometrischen Modell wird die Rubber-Sheeting-Funktion auf jeden
Stützpunkt des Attributs Geometry des Geometric Object angewendet. Je
nachdem wie redundant die Implementierung des topologischen Datenmodells gehalten ist und die Aktualisierungen 6 der Punkt-Geometrien in den
Linien- und Maschen-Geometrien fortsetzen, muss die Transformation auf alle
Stützpunkte dieser topologischen Objekte angewendet werden.
Wenn sich die Aktualisierung der Punkt-Geometrien in den Linien- und Maschen-Objekten fortsetzt, dann braucht die Transformation nur auf das Attribut Geometry des Objektes Topological Object Node angewendet werden.
Anderenfalls muss die Transformation auf alle topologischen Objekte (Punkte, Kanten und Maschen) angewendet werden. Um die Transformation nicht
für mehrfach auftretende Stützpunkte immer erneut zu berechnen, wird das
Ergebnis, die Verschiebung des Punktes, zwischengespeichert und wenn der
Punkt nochmal auftritt, wird das bereits berechnete Ergebnis für die Verschiebung wieder verwendet.
Der Aufbau der einzelnen Rubber-Sheeting-Funktionen ist prinzipiell sehr
ähnlich strukturiert. Sie unterscheiden sich nur in der Form der Berechnung
der Transformation. Die Funktion bekommt das zu transformierende Objekt
im Datentyp SDO Geometry, sowie zusätzliche Parameter, und liefert dann das
transformierte Objekt im selben Datentyp zurück. Die Berechnung der Verschiebung erfolgt dabei stützpunktweise pro Geometrie mit der gewählten
Rubber-Sheeting-Funktion. Der Aufbau der Funktionen findet sich in Algorithmus 4.3.1 wieder.
Das Laurini-Verfahren bezieht alle vorhandenen Verschiebungsvektoren des
Kartenblattes in die Berechnung der Transformation mit ein, deshalb müssen
hier keine speziellen Vektoren ausgewählt werden. Bei den anderen Verfahren
sieht dies ein wenig anders aus. So benötigt z.B. das Verfahren nach [Gil85]
die Identifizierung des Dreieckes, in dem der zu transformierende Stützpunkt
liegt, und somit welche drei Vektoren für die Transformation dieses Punktes
zuständig sind. Dies lässt sich einfach über eine geometrische Anfrage realisieren, in der der Stützpunkt als Ausgangspunkt genommen und bestimmt wird,
welches Dreieck-Objekt diesen Punkt überlagert. Als Datenbank-Operator für
diese Art der Anfrage verwendet man SDO Relate. Bei den Verfahren nach
[DFE01] und [Hau05] ist die Anfrage ähnlich, nur das hier die überdeckende
Masche gesucht wird.
6
Aktualisierung bedeutet, wenn man einen Punkt (NODE) mit einer Rubber-Sheeting-Funktion
transformiert, dann wird diese Veränderung in den Koordinaten des Punktes an die enthaltenen
Kanten (EDGE) und Maschen(FACE) weitergereicht und dort entsprechend aktualisiert.
68KAPITEL 4. DURCHFÜHRUNG DER RUBBER-SHEETING-VERFAHREN
Algorithmus 4.3.1 Aufbau der Rubber-Sheeting-Funktion
Eingabe: g : SDO GEOMETRY
Ausgabe: SDO GEOMETRY
i : INTEGER
x, y : NUMBER
dx, dy : NUMBER
for i In 1 . . . g.Koordinaten.Count()/2 do
x := g.Koordinaten(2i − 1)
y := g.Koordinaten(2i)
if ExistiertVektorPasspunkt(x, y) then
{Es existiert ein Verschiebungsvektor mit dem Passpunkt (x, y), dann
wird dieser für die Verschiebung dieses Vektors direkt verwendet.}
g.Koordinaten(2i − 1) := XVerschiebungVonVektorPasspunkt(x, y)
g.Koordinaten(2i) := YVerschiebungVonVektorPasspunkt(x, y)
else if PunktSchonTransformiert(x, y) then
{Wurde der Punkt bereits früher von der Funktion transformiert, dann
wird die berechnete Verschiebung verwendet.}
g.Koordinaten(2i − 1) := BekannteXVerschiebungVonPunkt(x, y)
g.Koordinaten(2i) := BekannteYVerschiebungVonPunkt(x, y)
else
{Führe die Transformation für den Punkt (x, y) mit der Rubber-SheetingFunktion durch und bestimme die Verschiebung. Die Funktion ergibt sich aus dem entsprechenden Rubber-Sheeting-Verfahren aus Abschnitt 3.4. Je nach Verfahren werden unterschiedliche Vektoren zur
Berechnung herangezogen.}
dx := BerechneXVerschiebungVonPunkt(x, y)
dy := BerechneYVerschiebungVonPunkt(x, y)
{Speichere das Ergebnis der Transformation, um bei erneutem Auftreten, direkt die Verschiebung zu verwenden.}
SpeichereVerschiebung(x, y, dx, dy)
g.Koordinaten(2i − 1) := x + dx
g.Koordinaten(2i) := y + dy
end if
end for
return g
4.4. FILTERUNG DER VEKTOREN
4.4
69
Filterung der Vektoren
Beim Verfahren nach Laurini aus Abschnitt 3.4.2 haben wir schon gesehen, dass
die Laufzeit der Funktion stark von der Anzahl der Verschiebungsvektoren
abhängt. Wir wissen aber auch, dass diese Funktion relativ unabhängig von
der Anzahl und Lage von Vektoren ist. Denkt man jetzt noch in Richtung
der anderen Rubber-Sheeting-Verfahren, z.B. das Verfahren nach Doytsher, so
könnte man zur Verbesserung der Laufzeit hier auch eine Einschränkung der
Vektoren vornehmen.
Übertragt man nun den Maschen-Ansatz auf dieses globale Verfahren, so erhält
man ein lokales Verfahren, das wir im folgenden Maschen-lokal nennen wollen.
Für die Berechnung der Transformation werden nicht mehr alle Vektoren des
Kartenblattes verwendet, sondern nur noch die Vektoren, deren Passpunkt innerhalb der Maschen liegt, die den zu transformierenden Punkt enthält. Diese
Veränderung beschleunigt das Verfahren enorm. Die Qualität des Ergebnisses
verändert sich kaum gegenüber dem globalen Verfahren, da die Verschiebung
der Maschen eines Kartenblattes oft sehr aussagekräftig für die Gesamtverschiebung einer Karte ist.
Verfolgt man die Idee der Lokalisierung noch ein wenig weiter, so kommt man
auf zwei weitere Ansätze, dem Objekt-lokalen und Punkt-lokalen Ansatz. Beim
ersten Ansatz wird nur eine gewissen Umgebung um das Objekt herum für
die Transformation verwendet. Der Abstand zum Objekt wird über einen Parameter gesteuert und lässt sich mit Hilfe des SDO WITHINDISTANCE-Operators in
der Datenbank umsetzen. Da dieser Operator Index-basiert arbeitet, erfolgt die
Berechnung der Ergebnisse sehr effizient. Alle in diesem Abstand liegenden
Verschiebungsvektoren werden zur Berechnung der Transformation verwendet.
Der Punkt-lokale Ansatz geht noch einen Schritt weiter, jetzt wird nur noch eine
gewisse Umgebung um den zu transformieren Stützpunkt betrachtet. Um die
Anfrage auch hier effizient zu gestalten, sucht man hier alle Vektoren, die sich
in einem rechteckigen Fenster um den Punkt befinden. Als Anfrage verwendet
man dazu eine Bereichsanfrage auf den Vektor-Attributen X1, Y1. Da diese
Attribute indexiert sind, erfolgt auch hier eine effiziente Bearbeitung.
Diese beiden Ansätze können sich sehr positiv auf die Laufzeit der Funktion
auswirken, da für die Berechnung der Rubber-Sheeting-Funktion nur noch
Vektoren in einer Umgebung verwendet werden. Dies hat aber auch einen
sehr großen Nachteil. Wenn die Umgebung zu klein gewählt wird, kann der
Fall auftreten, dass manche Objekte gar nicht oder viel zu gering transformiert
werden. Bei dem Punkt-lokalen Ansatz kann zusätzlich der Fall auftreten, das
die einzelnen Stützpunkte eines Objektes sehr unterschiedlich voneinander
transformiert werden, da die Transformation auf unterschiedlichen Vektoren
basieren kann. Bei beide Ansätzen kann die Forderung der Topologieerhaltung
des Rubber-Sheetings nicht garantiert werden.
70KAPITEL 4. DURCHFÜHRUNG DER RUBBER-SHEETING-VERFAHREN
4.5
Bewertungskriterien
Zum Abschluss wollen wir uns noch mit der Fragestellung befassen, wie man
die Ergebnisse der einzelnen Rubber-Sheeting-Verfahren vergleichen bzw. bewerten kann. Dazu wollen wir uns vier verschiedene Metriken überlegen, um
eine Einordung nach vier Kriterien vornehmen zu können. Als Kriterien wollen
wir folgendes festhalten:
1. Dauer der Gesamtberechnung für die Kartentransformation
2. Veränderungen in der Topologie in Bezug auf die ursprüngliche Topologie
3. Abweichung von Flächenobjekten zwischen zwei Rubber-Sheeting-Ergebnissen
4. Verschiebungsverhalten zwischen dem Rubber-Sheeting-Ergebnis und
den gegeben Verschiebungen
4.5.1
Laufzeit
Die Laufzeit eines Rubber-Sheeting-Verfahrens lässt sich einfach über zwei
Zeitpunkte bestimmen, die einmal am Start und am Ende der Ausführung
festgehalten werden. Da die meisten Berechnungsoperationen mehr als eine
Minute benötigen, reicht eine Genauigkeit im Sekundenbereich. Damit keine
Datenbank-Operation 7 die Messung der Berechnung beeinflusst, wird die Zeit
immer nur an den Berechnungsschritten gemessen.
Um die Laufzeiten der unterschiedlichen Rubber-Sheeting-Verfahren vergleichen zu können, müssen zusätzliche Informationen über die Messung festgehalten werden. Zu diesen Informationen gehören generell immer
• Was wurde gestoppt?
– Name der ausgeführten Funktion oder Methode
– verwendete Parameter
• Auf wie viele Objekte wurde die Berechnung angewendet? Dabei sind je
nach Objekttyp folgende Angaben ergänzend:
– Wie viele Stützpunkte gibt es insgesamt bei den Objekten?
– Durchschnitt der Stützpunkte?
7
Das Anlegen oder Löschen von Tabellen und Indexen weißt oft eine sehr unterschiedliche
Ausführungszeit auf.
4.5. BEWERTUNGSKRITERIEN
4.5.2
71
Topologieveränderung
Bei dieser Metrik möchte man wissen, ob es nach der Transformation Veränderungen in der Topologie gegeben hat. Dazu berechnet man jeweils alle topologischen Beziehungen der Ausgangsdaten und der transformierten Daten und
vergleicht diese anschließend. Als topologische Beziehungen verwenden wir
die topologischen Prädikate aus Abschnitt 2.5.
Die topologische Veränderung lässt sich durch folgende Schritte berechnen:
1. Man führt einen Self-Join der ursprünglichen geometrischen Objekte über
das Attribut Geometry durch. Als Vergleichsoperator verwendet man
SDO RELATE mit der Prüfung auf alle Schnitte (ANYINTERACT). Als Ergebnis
speichert man alle Paare von Objekten, die über SDO RELATE in Beziehung
stehen, sowie deren topologische Beziehung.
2. Man wendet den ersten Schritt auch auf das Ergebnis der Transformation
an.
3. Dann vergleicht man die Ergebnisse, dabei treten drei Fälle auf:
• NEW RELATION - es tritt eine topologische Beziehung auf, die nur in
dem Ergebnis der Transformation zu finden ist.
• LOST RELATION - eine topologische Beziehung, die in den ursprünglichen Daten auftrat, ist nun nicht mehr vorhanden.
• MODIFIED RELATION - eine vorhandene Beziehung hat sich in eine
andere verändert.
Diese Art der Prüfung der Topologieveränderung ist gut geeignet für das
geometrische Datenmodell, aber lässt sich so nicht direkt auf das topologische Modell anwenden. Entweder transformiert man das topologische wieder
zurück in das geometrische Datenmodell und führt die obige Prüfung durch
oder prüft alternativ folgende Bedingungen:
1. Start- bzw. Endpunkt einer Linie muss mit der entsprechenden PunktGeometrie übereinstimmen.
2. Die Linien einer Masche müssen durch den Rand der entsprechenden
Maschen-Geometrie überdeckt werden.
3. Die Linien-Geometrien dürfen keine Schnitte aufweisen und sich nur an
ihren Start- oder Endpunkten berühren.
4. Ein Konten der vorher auf einer Line lag oder sich in einer Masche befunden hat, muss dies jetzt auch erfüllen.
Diese Bedingungen prüft man gegen die ursprünglichen Daten und gegen das
Ergebnis des Rubber-Sheetings und ordnet alle Veränderungen entsprechend
Schritt 3 (siehe oben) ein.
72KAPITEL 4. DURCHFÜHRUNG DER RUBBER-SHEETING-VERFAHREN
gemeinsame
Fläche
A XOR B
Objekt
aus A
Objekt
aus B
Abbildung 4.5.1: XOR-Operation
4.5.3
Flächenabweichung
Möchte man nun zwei Rubber-Sheeting-Ergebnisse miteinander vergleichen,
so kann man die Abweichung der Ergebnisse über die Flächenunterschiede
errechnen. Beim geometrischen Datenmodell werden dazu die Flächenobjekte
miteinander verglichen, beim topologischen die Maschen.
Da die Schlüssel der geometrischen Objekte gegenüber der Transformation invariant sind, lassen sich die Objekte des Ergebnis 1 eindeutig den Objekten aus
Ergebnis 2 zuordnen. Der Flächenunterschied von Objekt A zu Objekt B lässt
sich mit Hilfe des XOR-Operators beschreiben. A XOR B liefert genau die Teile
der beiden Geometrien, die bei beiden nicht gemeinsam sind. Abbildung 4.5.1
zeigt das Ergebnis.
Damit man später eine Vergleichszahl als Ergebnis erhält, wird der Flächeninhalt der erhaltenden Fläche bestimmt und ins Verhältnis zur Gesamtfläche
beider Objekte gesetzt. Dieses Verhältnis gibt die Abweichung der Fläche von
A zu B an und liegt im Bereich von 0 bis 1.
AREA(A XOR B)
AREA(A OR B)
Da man die Abweichung aber über alle Flächenobjekte des Kartenblattes haben möchte müssen die einzelnen Unterscheide aufsummiert werden und ins
Verhältnis zur Gesamtfläche der Objekte gesetzt werden.
P
AREA(A XOR B)
alle Objekte
P
AREA(A OR B)
(4.1)
alle Objekte
Mit der Gleichung (4.1) hat man nun ein Maß, um die prozentuale Flächenabweichung von zwei Ergebnissen zu bestimmen. Wenn man mehr als zwei Ergebnisse miteinander vergleichen will, dann wählt man ein Rubber-SheetingErgebnis als Referenz und berechnet die Abweichung immer gegen dieses
Ergebnis.
4.5. BEWERTUNGSKRITERIEN
4.5.4
73
Verschiebungsverhalten
Will man etwas über die Verschiebung an sich wissen, kann man aus den erstellten Verschiebungsvektoren die Verschiebung extrahieren und sich daraus
ein Maximum und Minimum, sowie einen Durchschnitt berechnen lassen. Diese Kennzahlen geben Aufschluss über die geforderte Verschiebung einer Karte.
Wendet man dies dann auch auf das Ergebnis der Transformation an, so kann
man erkennen, wie das Verfahren die geforderte Verschiebung umgesetzt hat.
In erster Linie dient diese Metrik als Heuristik zur Erkennung von Fehlern.
Weichen die Kennzahl der Durchschnittsverschiebung zu stark von der ursprünglichen ab, dann ist dies ein gutes Anzeichen für einen Fehler in der Anwendung des Rubber-Sheeting-Verfahrens. In den Beispielen aus Abschnitt 3.5
sieht man einen Einsatz dieser Metrik.
74KAPITEL 4. DURCHFÜHRUNG DER RUBBER-SHEETING-VERFAHREN
Kapitel 5
Testergebnisse
In diesem Kapitel wollen wir die Verfahren auf geographische Daten anwenden. Wir betrachten als erstes die Testergebnisse des Rubber-Sheetings auf dem
geometrischen und topologischen Datenmodell, um festzustellen, welches Modell für die Transformation geeignet ist. Im zweiten Teil werden wir auf einem
anderen Gebiet, speziell die Maschen-basierten Verfahren untersuchen. Hier
werden die Verfahren nur auf dem topologischen Modell angewendet.
Als Gebiete für die Testtransformation wollen wir hier die Kartenausschnitte von Buchholz und Weiterstadt betrachten. Die beiden Gebiete liegen im
geometrischen und topologischen Datenmodell vor. Buchholz ist im Maßstab
1:250000 und Weiterstadt ist im Maßstab 1:50000. Im Weiterstadt-Gebiet existiert zusätzlich zu dem Matching auf den aggregierten geometrischen Objekten, ein Matching auf den topologischen Kanten und Maschen. Abbildung 5.0.1
zeigt die verwendeten Kartenausschnitte.
Das Rubber-Sheeting wird auf einem Oracle 10g Datenbankserver ausgeführt.
Installiert ist die Version 10.2.0.1.0 64Bit Enterpise Edition. Ausgeführt wird die
Datenbank auf zwei AMD Opteron 2GHz Prozessoren mit 8GB Hauptspeicher.
75
76
KAPITEL 5. TESTERGEBNISSE
Abbildung 5.0.1: Buchholz 1:250000 (grün) & Weiterstadt 1:50000 (rot)
5.1. STATISTISCHE DATEN
5.1
77
Statistische Daten über die Kartenausschnitte
Um nun die Ergebnisse des Rubber-Sheeting-Verfahren auch richtig einzuordnen, wollen wir zunächst einige statistische Daten über die Kartenausschnitte
erfassen. Beginnen wir mit dem Kartenausschnitt von Buchholz.
• Ausdehnung der Karte 1 :
Pmin (3544338, 5896477) und Pmax (3566808, 5918949)
• Kartenfläche: 500370601,96 m2
• Objekte im geometrischen Datenmodell
– 436 Objekte mit durchschnittlich 21,48 Stützpunkten
– 9364 Stützpunkte insgesamt
• Objekte im topologischen Datenmodell
– 1018 Knoten mit 1018 Stützpunkten
– 1487 Kanten mit 11533 Stützpunkten
– 76 Maschen mit 4828 Stützpunkten
– 17379 Stützpunkte insgesamt
• Matching von 87 gemeinsamen geometrischen Objekten
Für den Kartenausschnitt Weiterstadt werden wir ausschließlich mit dem topologischen Datenmodell arbeiten. Dazu ist ein Matching der topologischen
Kanten und Maschen erzeugt worden. Das Ergebnis dieses Matching-Prozess
wird zur Erzeugung der Vektoren verwendet.
• Ausdehnung der Karte:
Pmin (463810, 5521850) und Pmax (471957, 5529147)
• Kartenfläche: 30591839,72 m2
• Objekte im geometrischen Datenmodell
– 2031 Objekte mit durchschnittlich 5,21 Stützpunkten
– 10590 Stützpunkte insgesamt
• Objekte im topologischen Datenmodell
– 1483 Knoten mit 1483 Stützpunkten
– 2210 Kanten mit 1483 Stützpunkten
– 638 Maschen mit 1483 Stützpunkten
1
Angegeben ist hier der unterstes linke und der höchste rechte Punkt des minimal
überdeckenden Rechtecks. Maßeinheit ist Meter
78
KAPITEL 5. TESTERGEBNISSE
– 13223 Stützpunkte insgesamt
• Matching von 1061 gemeinsamen topologischen Objekten (Kante oder
Masche)
• zugeordnete Maschen
– 154 Maschen 2
– durchschnittliche Maschenfläche: 52481,64 m2
– überdeckte Kartenfläche von diesen Maschen: 36,59 %
5.2
5.2.1
Vergleich der Rubber-Sheeting-Ergebnisse des geometrischen und topologischen Datenmodells
Ergebnisse des geometrischen Datenmodells
Auf dem geometrischen Datenmodell werden folgende Rubber-Sheeting-Verfahren angewendet:
• Laurini
Parameter: m = 2
• Laurini Objekt-lokal
Parameter: m = 2 und Abstand 500m
• Laurini Punkt-lokal
Parameter: m = 2 und Abstand 500m
• Gillman
Parameter: • Hybrid
Parameter: m = 2 für Laurini-Transformation und Abstand 1000m für äquidistantes Gitter
Die Vektoren werden äquidistant und an den Start- und Endpunkten der Geometrien erzeugt. Als Abstand auf den Geometrien wurde 100m gewählt. Diese
Vektoren werden von den Verfahren nach Laurini und Hybrid verwendet. Die
Erzeugung dauerte 5s und es wurden 1933 Vektoren aus 87 zugeordneten Objekten erstellt. Für das Gillman-Verfahren werden nur Vektoren an den Startund Endpunkten erzeugt. Die Erstellung nötigte weniger als 1s und erzeugte
94 Vektoren.
2
über Link aber nur 7 verbunden, genutzt werden können aber alle erzeugten
5.2. GEOMETRISCHES GEGEN TOPOLOGISCHES DATENMODELL
79
Ausführungszeit
Für die Transformation von 436 Objekten wurde folgende Zeit benötigt:
Verfahren
Laurini
Laurini Objekt-Lokal
Laurini Punkt-Lokal
Gillman
Hybrid
Zeit
21,1 Minuten
14,5 Minuten
13,3 Minuten
12,2 Minuten
12,9 Minuten
Verschiebungsverhalten
Folgende Verschiebung 3 wird durch die Vektoren vorgegeben:
• minimale Verschiebung: 6,53
• maximale Verschiebung 847,26
• durchschnittliche Verschiebung: 134,92
Die Verfahren haben diese wie folgt umgesetzt:
Verfahren
Laurini
Laurini Objekt-Lokal
Laurini Punkt-Lokal
Gillman
Hybrid
min.
1,13
0,00
0,00
1,75
1,03
max.
627,75
662,16
707,50
768,31
533,69
durchsch.
109,02
89,57
51,89
138,67
108,82
Bemerkung 5.2.1 Eine minimalen Verschiebung von 0 bedeutet für das Ergebnis des
Verfahrens, das es mindestens einen Stützpunkt gibt, der nicht transformiert wurde.
Topologieveränderung
Folgende topologische Veränderungen treten nach der Transformation auf:
• Laurini: 261 topologische Veränderungen, davon
– 124 neue Beziehungen
– 9 veränderte Beziehungen
– 128 fehlende Beziehungen
– 177 Objekte sind von den Veränderungen betroffen
3
Die Verschiebung entspricht der Länge des Vektors.
80
KAPITEL 5. TESTERGEBNISSE
• Laurini Objekt-lokal: 404 topologische Veränderungen, davon
– 117 neue Beziehungen
– 74 veränderte Beziehungen
– 213 fehlende Beziehungen
– 202 Objekte sind von den Veränderungen betroffen
• Laurini Punkt-lokal: 228 topologische Veränderungen, davon
– 110 neue Beziehungen
– 7 veränderte Beziehungen
– 111 fehlende Beziehungen
– 151 Objekte sind von den Veränderungen betroffen
• Gillman: 295 topologische Veränderungen, davon
– 146 neue Beziehungen
– 2 veränderte Beziehungen
– 147 fehlende Beziehungen
– 190 Objekte sind von den Veränderungen betroffen
• Hybrid: 290 topologische Veränderungen, davon
– 143 neue Beziehungen
– 4 veränderte Beziehungen
– 143 fehlende Beziehungen
– 188 Objekte sind von den Veränderungen betroffen
Flächenabweichung
Folgende Flächenabweichungen kann man zwischen den Ergebnissen messen
• Laurini zu
– nicht transformierten Objekten: 16,01%
• Laurini Objekt-lokal zu
– nicht transformierten Objekten: 16,23%
– Laurini: 6,39%
• Laurini Punkt-lokal zu
– nicht transformierten Objekten: 6,75%
– Laurini: 12,01%
• Gillman zu
5.2. GEOMETRISCHES GEGEN TOPOLOGISCHES DATENMODELL
81
– nicht transformierten Objekten: 17,54%
– Laurini: 10,53%
• Hybrid zu
– nicht transformierten Objekten: 15,45%
– Laurini: 1,81%
– Gillman: 10,39%
5.2.2
Ergebnisse des topologischen Datenmodells
Auf dem topologischen Datenmodell wurde folgende Rubber-Sheeting-Verfahren angewendet:
• Laurini
Parameter: m = 2
• Laurini Objekt-lokal
Parameter: m = 2 und Abstand 500m
• Laurini Punkt-lokal
Parameter: m = 2 und Abstand 500m
• Gillman
Parameter: • Hybrid
Parameter: m = 2 für Laurini-Transformation und Abstand 1000m für äquidistantes Gitter
Die Vektoren werden äquidistant und an den Start- und Endpunkten erzeugt.
Als Abstand auf den Geometrien wurde 100m gewählt. Die Vektoren werden
von den Verfahren nach Laurini und Hybrid verwendet. Die Erzeugung dauerte 5s und es wurden 1933 Vektoren erstellt. Für das Gillman-Verfahren werden
nur Vektoren an den Start- und Endpunkten erzeugt. Die Erstellung nötigte
weniger als 1s und erzeugte 94 Vektoren.
Ausführungszeit
Für die Transformation von 2581 Objekten wurde folgende Zeit benötigt:
Verfahren
Laurini
Laurini Objekt-Lokal
Laurini Punkt-Lokal
Gillman
Hybrid
Zeit
39,1 Minuten
31,8 Minuten
28,9 Minuten
24,1 Minuten
24,0 Minuten
82
KAPITEL 5. TESTERGEBNISSE
Verschiebungsverhalten
Folgende Verschiebung wird durch die Vektoren vorgegeben:
• minimale Verschiebung: 6,53
• maximale Verschiebung 847,26
• durchschnittliche Verschiebung: 134,92
Die Verfahren haben diese wie folgt umgesetzt:
Verfahren
Laurini
Laurini Objekt-Lokal
Laurini Punkt-Lokal
Gillman
Hybrid
min.
1,13
0,00
0,00
1,75
1,03
max.
847,26
847,26
847,26
847,26
533,69
durchsch.
113,22
76,36
63,06
137,22
109,90
Topologieveränderung
Folgende topologische Veränderungen treten nach der Transformation auf:
• Laurini: 41 topologische Veränderungen, davon
– 40 neue Beziehungen
– 0 veränderte Beziehungen
– 1 fehlende Beziehungen
– 29 Objekte sind von den Veränderungen betroffen
• Laurini Objekt-lokal: 191 topologische Veränderungen, davon
– 143 neue Beziehungen
– 0 veränderte Beziehungen
– 48 fehlende Beziehungen
– 119 Objekte sind von den Veränderungen betroffen
• Laurini Punkt-lokal: 46 topologische Veränderungen, davon
– 45 neue Beziehungen
– 0 veränderte Beziehungen
– 1 fehlende Beziehungen
– 34 Objekte sind von den Veränderungen betroffen
• Gillman: 45 topologische Veränderungen, davon
– 45 neue Beziehungen
5.2. GEOMETRISCHES GEGEN TOPOLOGISCHES DATENMODELL
83
– 0 veränderte Beziehungen
– 0 fehlende Beziehungen
– 25 Objekte sind von den Veränderungen betroffen
• Hybrid: 2 topologische Veränderungen, davon
– 2 neue Beziehungen
– 0 veränderte Beziehungen
– 0 fehlende Beziehungen
– 2 Objekte sind von den Veränderungen betroffen
Flächenabweichung
Folgende Flächenabweichungen kann man zwischen den Ergebnissen messen
• Laurini zu
– nicht transformierten Objekten: 13,14%
• Laurini Objekt-lokal zu
– nicht transformierten Objekten: 8,36%
– Laurini: 11,49% 4
• Laurini Punkt-lokal zu
– nicht transformierten Objekten: 5,54%
– Laurini: 12,94% 4
• Gillman zu
– nicht transformierten Objekten: 14,37%
– Laurini: 8,58%
• Hybrid zu
– nicht transformierten Objekten: 12,69%
– Laurini: 1,58%
– Gillman: 8,45%
4
Ein fehlerhaftes Objekt konnte nicht in die Berechnung miteinbezogen werden.
84
KAPITEL 5. TESTERGEBNISSE
5.3
Vergleich der Rubber-Sheeting-Ergebnisse der globalen und Maschen-lokalen Verfahren
Auf dem topologischen Datenmodell werden folgende Rubber-Sheeting-Verfahren angewendet:
• Laurini
Parameter: m = 2
• Laurini Maschen-lokal
Parameter: m = 2
• Doytsher
Parameter: • Hybrid
Parameter: m = 2 für Laurini-Transformation und Abstand 1000m für äquidistantes Gitter
Die Vektoren werden äquidistant und an den Start- und Endpunkten erzeugt.
Als Abstand auf den Geometrien wurde 100m gewählt. Die Vektoren werden
auf den Zuordnungen des topologischen Modelles berechnet. Die Erzeugung
dauerte 13s und es wurden 1549 Vektoren aus 1061 zugeordneten Objekten
erstellt.
Ausführungszeit
Für die Transformation von 4286 Objekten wurde folgende Zeit benötigt:
Verfahren
Laurini
Laurini Maschen-Lokal
Doytsher
Hybrid
Zeit
8,1 Minuten
7,2 Minuten
7,1 Minuten
17,8 Minuten
Verschiebungsverhalten
Folgende Verschiebung wird durch die Vektoren vorgegeben:
• minimale Verschiebung: 0,12
• maximale Verschiebung 396,67
• durchschnittliche Verschiebung: 22,02
Die Verfahren haben diese wie folgt umgesetzt:
5.3. GLOBALE GEGEN MASCHEN-LOKALE VERFAHREN
Verfahren
Laurini
Laurini Maschen-Lokal
Doytsher
Hybrid
min.
0,14
0,00
0,00
0,21
max.
343,92
97,99
48,09
175,69
durchsch.
15,67
2,89
1,95
18,28
Topologieveränderung
Folgende topologische Veränderungen treten nach der Transformation auf:
• Laurini: 1528 topologische Veränderungen, davon
– 670 neue Beziehungen
– 0 veränderte Beziehungen
– 858 fehlende Beziehungen
– 836 Objekte sind von den Veränderungen betroffen
• Laurini Maschen-lokal 5 : 813 topologische Veränderungen, davon
– 313 neue Beziehungen
– 0 veränderte Beziehungen
– 500 fehlende Beziehungen
– 420 Objekte sind von den Veränderungen betroffen
• Doytsher 5 : 803 topologische Veränderungen, davon
– 300 neue Beziehungen
– 0 veränderte Beziehungen
– 503 fehlende Beziehungen
– 407 Objekte sind von den Veränderungen betroffen
• Hybrid: 0 topologische Veränderungen, davon
– 0 neue Beziehungen
– 0 veränderte Beziehungen
– 0 fehlende Beziehungen
– 0 Objekte sind von den Veränderungen betroffen
5
Es wurden nur zugeordnete Maschen transformiert.
85
86
KAPITEL 5. TESTERGEBNISSE
Flächenabweichung
Folgende Flächenabweichungen kann man zwischen den Ergebnissen messen
• Laurini zu
– nicht transformierten Objekten: 7,70% 6
• Laurini Maschen-lokal 5 zu
– nicht transformierten Objekten: 2,34% 6
– Laurini: 6,47% 6
• Doytsher 5 zu
– nicht transformierten Objekten: 1,74% 4
– Laurini: 7,64% 4
• Hybrid zu
– nicht transformierten Objekten: 21,59% 4
– Laurini: 23,77% 4
Bemerkung 5.3.1 Bei der Berechnung der Flächenunterschiede trat bei einigen Verfahren, das Problem auf, das Oracle einen Fehler innerhalb der Funktionen SDO XOR.
SDO UNION oder SDO INTERSECTION meldete. Die genaue Ursache könnte nicht ergründet werden. Deshalb wurden diese Problem-Objekte aus der Berechnung der
Flächenunterschiede heraus genommen.
5.4
Fazit
Schauen wir uns als Abschluss dieses Kapitel der Ergebnisse der Transformationen als Karte genauer an. Abbildung 5.4.1 (oben) zeigt die Ergebnisse der Laurini Transformation auf dem geometrischen Datenmodell; (unten)
auf dem topologischen Datenmodell. Grün sind die Ausgangsdaten, rot die
Transformation mit Laurini, lila die Transformation mit Laurini-Objekt-lokal,
blau die Transformation mit Laurini-Punkt-Lokal. Man erkennt sofort die
Ähnlichkeiten in den Transformationsergebnissen, doch bei genauerem Hinsehen, erkennt man auch die Schwächen der Verfahren. So treten die Fälle auf,
das bei den lokalen Verfahren Stützpunkte gar nicht transformiert werden,
dargestellt in Abbildung 5.4.1 Mitte rechts. Im topologischen Datenmodell treten zusätzlich die Fälle auf, das die Verfahren die Bogenlinien in Zick-Zack”
Linien“ transformieren, erkennbar in Abbildung 5.4.1 (unten) Mitte links.
Bei der Vektorerzeugung treten die folgenden zwei Besonderheiten auf, dargestellt in Abbildung 5.4.2:
6
Zwei fehlerhafte Objekte konnten nicht in die Berechnung miteinbezogen werden.
5.4. FAZIT
Abbildung 5.4.1: Ergebnisse der Transformation mit Laurini
87
88
KAPITEL 5. TESTERGEBNISSE
Abbildung 5.4.2: Widersprüchliche Vektoren
• ein Passpunkt wird auf zwei Passpunkte verschoben oder
• zwei Passpunkte werden auf einen Passpunkt verschoben.
Diese besonderen Vektoren entstehen aus falschen Zuordnungen von Liniensegmenten, die der Matching-Prozess geliefert hat. Beim Verfahren nach Gillman führt dies dazu, dass die Triangulation der Passpunkte nach der Transformation entartet. Abbildung 5.4.3 (oben) zeigt die Triangulation vor und
nach der Transformation. Abhilfe schafft hier der Hybrid-Ansatz, da die in
der ersten Phase durchgeführte Transformation nach Laurini, unempfindlich
gegenüber diesen Vektoren ist. Das äquidistante Gitter sorgt dafür, dass die Triangulation nicht mehr entarten kann; Abbildung 5.4.3 (unten). Abbildung 5.4.4
zeigt die Rubber-Sheeting-Ergebnisse vom Verfahren nach Gillman (rot) und
dem Hybrid-Ansatz (blau), die ursprünglichen Daten sind in grün dargestellt
- (oben) mit dem geometrischen Datenmodell und (unten) mit dem topologischen Datenmodell. Die Geometrien bleiben weitestgehend in einer schönen“
”
Form und auch die Topologie wird nur wenig verletzt.
Abschließend kann man festhalten, das die Verfahren die Rubber-SheetingTransformation schon gut umsetzten. Allgemein lässt sich für die Qualität des
Rubber-Sheetings beobachten, um so qualitativ hochwertiger die ursprünglichen Kartendaten sind, desto genauer verläuft das Matching der Kartenobjekte und liefert als Ergebnis gute Zuordnungen der Objekte. Die Erstellung der
Verschiebungsvektoren wird dadurch maßgeblich beeinflusst. Um so exakter
diese Vektor also erstellt werden können, um so schöner ist das Ergebnis der
Rubber-Sheeting-Transformation. Für topologisch korrekte Transformationen
sollte immer das topologische Datenmodell verwendet werden. Aber Nachteil
dieses Modelles ist, dass es deutlich mehr Stützpunkte enthält als das geometrische und somit anfälliger für Zick-Zack-Linien“ wird. Generell lässt sich
”
keine allgemein gültige Aussage treffen, auf welchen Daten welche RubberSheeting-Transformation die besten“ und schönsten“ Ergebnisse erzielt.
”
”
5.4. FAZIT
89
Abbildung 5.4.3: Veränderung in der TIN Struktur - vor und nach der Transformation
90
KAPITEL 5. TESTERGEBNISSE
Abbildung 5.4.4: Ergebnisse der Transformation mit Gillman und Hybrid
Kapitel 6
Ausblick
Automatische Parameterbestimmung bei Laurini
Um das Rubber-Sheeting von Laurini richtig durchführen zu können, muss der
Parameter m aus Gleichung (3.22), der den Einfluss der Verschiebungsvektoren
auf die Transformation steuert, geeignet gewählt werden. Ein theoretischer
Ansatz zur Bestimmung dieses Parameters wurde in [Kre04] untersucht, aber
nicht automatisiert. In dieser Arbeit wurde der Parameter experimentell für
die entsprechenden Testgebiete bestimmt. Möchte man nun aber das RubberSheeting automatisieren, benötigt man ein Verfahren zur Bestimmung.
Dieses Verfahren sollte zum einen den Parameter geeignet selbst wählen können, aber auch zum anderen dem erfahrenen Benutzer eine Möglichkeit anbieten, die Bestimmung des Parameters zu beeinflussen. Dazu müssten geeignete
Kennzahlen aus dem Kartenmaterial untersucht werden, die dann über geeignete Funktionen den Parameter bestimmen. Alternativ können dem Benutzer
auch verschiedene Werte aus dem Rubber-Sheeting-Verfahren angezeigt werden, z.B. wie in der Tabelle B.3. Dort sieht der Benutzer wie sich der gewählte
Parameter auf die Einflüsse der Vektoren auswirkt. Eventuell sollten diese
Ergebnisse auch graphisch dargestellt werden und die richtige Wahl des Parameters zu erleichtern.
Regeln zur Passpunktwahl beim Hybrid-Ansatz
In dieser Arbeit haben wir beim Hybrid-Ansatz aus Abschnitt 3.4.5 die neuen
Passpunkte anhand eines äquidistanten Gitters bestimmt. Wie auch entsprechend erwähnt, könnte man auch Regeln aufstellen, um die neuen Passpunkte
automatisch an besonderen für Verschiebung repräsentativen Stellen der Karte
zu erzeugen.
In der Bildverarbeitung werden schon seit längerem Triangualtionsverfahren
zur Bildtransformation eingesetzt. Dazu müsste untersucht werden, ob sich
die Regeln zur Bestimmung von Passpunkten in den Bilder auch auf die Kartenblätter übertragen lassen. Ein andere Möglichkeit Regeln festzulegen ist, die
91
92
KAPITEL 6. AUSBLICK
Abbildung 6.0.1: Verbesserung der Transformatio von starren Geometrien
Passpunkte entsprechend der Verteilung der Objekte auf der Karte zu setzen.
So werden z.B. in Bereichen, in denen viele Objekte liegen, werden viele Passpunkte und in Bereichen, in denen kaum Objekte liegen, nur wenige gesetzt.
Zusätzliche Metrik für Linien
Die Metrik, die in dieser Arbeit verwendet wird, um die Abweichung von
Rubber-Sheeting-Ergebnissen zu bestimmen, arbeitet nur auf Flächenobjekten.
Als nächsten Schritt müssten Möglichkeiten untersucht werden, wie man Abweichungen von Linienobjekten zweier Rubber-Sheeting-Ergebnisse messen
und bewerten kann.
Als mögliche Größe könnten z.B. die Längen der Linien verwendet werden. So
lässt sich als Maß
L1 − L2
l :=
L1 + L2
definieren. L1 ist die Länge des Objektes des ersten Rubber-Sheeting-Ergebnisses und L2 des zweiten.
Eine andere Möglichkeit wäre zu messen, wie viel Prozent der Linien aus den
Ergebnissen überscheiden sich. Damit würde man eine Aussage bekommen,
wie viel Prozent der transformierten Linien gleich sind. Abschließend sollte
man dann noch untersuchen, ob es möglich ist, die Ergebnisse der Flächenund Linienmetrik zu kombinieren, um ein gemeinsames Maß der Abweichung
der Rubber-Sheeting-Ergebnisse zu bestimmen.
Starre Geometrien
Es entstehen zur Zeit nach dem Rubber-Sheeting noch einige Veränderungen in
der Topologie, die dadurch herrühren, das die zu transformierenden Geometrien sehr starr“ sind. Starr bedeutet in diesem Zusammenhang, dass der Ab”
stand zwischen zwei Stützpunkten sehr groß ist. In bestimmten Konstellationen kann dies dazu führen, das sich die Topologie verändert. Abbildung 6.0.1
(links) zeigt ein Beispiel für eine solche Situation. Dabei werden die äußeren
Punkte nur ein wenig verschoben und die Punkte in der Mitte stärker. Das
93
Ergebnis ist, das sich jetzt die beiden Linien überschneiden. Ein möglicher
Ansatz wäre hier, einfach neue Stützpunkte in die vorhandenen Geometrien
einzufügen, wenn sie zu starr sind. Abbildung 6.0.1 (rechts) zeigt dies.
Alternativen in der Implementierung
In der für diese Arbeit gewählten Implementation wird für jeden Stützpunkt
der zu transformierenden Geometrien die Rubber-Sheeting-Funktion angewendet. Alternativ könnte man hier auch versuchen eine Funktion zu implementieren, die alle Stützpunkte der Geometrien in eine Tabelle schreibt
und nach der Transformation diese verschobenen Punkte wieder in ihre entsprechenden Geometrien zurückschreibt. Dadurch entsteht die Möglichkeit,
die Rubber-Sheeting-Funktionen direkt als Operationen zwischen Tabellen anzuwenden. Dies könnte zu einer Verbesserung in der Laufzeit der RubberSheeting-Verfahren führen.
94
KAPITEL 6. AUSBLICK
Kapitel 7
Implementierung
Zum Schluss wollen wir noch kurz auf die konkrete Implementierung eingehen. Die Implementierung teilt sich in 7 Packages auf, von denen wir die
wichtigsten Teile kurz erläutern wollen. Aber bevor wir damit beginnen, werden wir uns zunächst die verwendete Tabellenstruktur anschauen. Die verwendeten Grundlagen für Implementierung in PL/SQL können in [Feu99] und
[KGB04] ausführlich nachgelesen werden.
7.1
Tabellenstruktur
Folgende Tabellenstruktur wird für das Rubber-Sheeting verwendet. Alle Tabellen beginnen mit dem selben Präfix, der das Anwendungsschema beschreibt
und im folgenden mit AppName bezeichnet wird. Die Einstellungen werden in
der speziellen Setup-Tabelle gespeichert:
AppName Setup (
Key
Value
NVARCHAR2(50)
NVARCHAR2(50) )
mit
• Key
eindeutiger Schlüsselname, z.B. XMin
• Value
Wert des Schlüssels, z.B. 432345
95
96
KAPITEL 7. IMPLEMENTIERUNG
7.1.1
Geometrisches Datenmodell (GDM)
Die Basisdaten für das geometrische Modell werden in den folgenden Tabellen
gehalten und entsprechen den Geometric Object aus Abbildung 4.3.3 (links).
geometrische Objekte
AppName ( ID
Name
Type
Geometry
NUMBER
NVARCHAR2(50)
NVARCHAR2(50)
SDO GEOMETRY )
aggregierte geometrische Objekte der Quelle A
AppName A ( . . . wie AppName . . . )
aggregierte geometrische Objekte der Quelle B
AppName B ( . . . wie AppName . . . )
mit
• ID
eindeutiger Objektschlüssel
• Name
Name des Objektes, hier der ursprüngliche Schlüssel des importierten Objektes
• Type
Typ des Objektes, hier ATKIS-Objektschlüssel
• Geometry
geometrische Darstellung
Links zwischen den aggregierten Objekten
AppName Links ( ID1 NUMBER
ID2 NUMBER )
mit
• ID1
ID des ersten Datensatzes (Quelle A), Referenz auf AppName A
• ID2
ID des zweiten Datensatzes (Quelle B), Referenz auf AppName B
7.1.2
Topologisches Datenmodell (TDM)
Die Daten des topologischen Datenmodells werden in folgenden Tabellen gehalten und entsprechen den Topologic Object * aus Abbildung 4.3.3 (rechts).
7.1. TABELLENSTRUKTUR
97
Knoten-Tabelle der Objekte
AppName Node ( ID
Node Type
Lies On Edge
Lies In Face
Geometry
NUMBER
NVARCHAR2(50)
NUMBER
NUMBER
SDO GEOMETRY )
mit
• ID
eindeutiger Schlüssel des Knotens, entspricht Schlüssel aus dem Import
• Node Type
Knotentyp, isolierte Knoten oder Linienknoten
• Lies On Edge
Knoten liegt auf Kante mit ID
• Lies In Face
Knoten liegt in Masche mit ID
• Geometry
geometrische Darstellung
Kanten-Tabelle der Objekte
AppName Edge ( ID
Start Node
End Node
Left Face
Right Face
Geometry
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
SDO GEOMETRY )
mit
• ID
eindeutiger Schlüssel der Kante, entspricht Schlüssel aus dem Import
• Start Node
ID des Startknoten der Linie
• End Node
ID des Endknoten der Linie
• Left Edge
ID der linken Masche der Linie 1
• Right Face
ID der rechten Masche der Linie 1
1
Wird momentan in der Erweiterung [Tie03] nicht berechnet.
98
KAPITEL 7. IMPLEMENTIERUNG
• Geometry
geometrische Darstellung
Maschen-Tabelle der Objekte
AppName Face ( ID
Version
Geometry
NUMBER
NUMBER
SDO GEOMETRY )
mit
• ID
eindeutiger Schlüssel der Masche, entspricht Schlüssel aus dem Import
• Version
Nummer der Masche gibt an, ob es sich um eine äußere oder innere Masche
handelt
• Geometry
geometrische Darstellung
aggregierte topologische Objekte der Quelle A
AppName A T ( . . . wie AppName . . .
)
aggregierte topologische Objekte der Quelle B
AppName B T ( . . . wie AppName . . .
)
Maschen über die aggregierten topologischen Objekte der Quelle A
AppName A Mesh ( ID
NUMBER
Geometry SDO GEOMETRY )
Maschen über die aggregierten topologischen Objekte der Quelle B
AppName B Mesh ( . . . wie AppName A Mesh . . . )
mit
• ID
eindeutiger Schlüssel des agg. Objektes
• Geometry
geometrischer Darstellung
Zuordnung des aggregierten Objektes zu der Masche
AppName A MeshPart ( OID NUMBER
MID NUMBER )
mit
• OID
ID des agg. Objektes
• MID
ID der Masche
7.1. TABELLENSTRUKTUR
99
Links zwischen den topologischen Objekten
AppName Links T ( . . . wie AppName Links. . .
7.1.3
)
Vektoren
Die erzeugten Vektoren werden in der folgende Tabelle gespeichert, die dem
Vector-Objekt aus Abbildung 4.3.4 entspricht.
AppName Vectors (
No
ID1
ID2
X1
Y1
X2
Y2
Geometry
Point A
Point B
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
SDO GEOMETRY
SDO GEOMETRY
SDO GEOMETRY )
mit
• No
eindeutiger Schlüssel des Vektors
• ID1
ID des agg. Objektes aus Quelle A
• ID2
ID des agg. Objektes aus Quelle B
• X1
X-Koordinate auf dem agg. Objekt aus Quelle A
• Y1
Y-Koordinate auf dem agg. Objekt aus Quelle A
• X2
X-Koordinate auf dem agg. Objekt aus Quelle B
• Y2
Y-Koordinate auf dem agg. Objekt aus Quelle B
• Geometry
geom. Darstellung des Vektors
• Point A
geom. Darstellung des Punktes auf dem agg. Objekt aus Quelle A
• Point B
geom. Darstellung des Punktes auf dem agg. Objekt aus Quelle B
100
7.1.4
KAPITEL 7. IMPLEMENTIERUNG
Triangulation
Die im Java Programm erzeugten Dreiecke werden in der folgenden Tabelle
gespeichert, die dem Triangle-Objekt aus Abbildung4.3.7 entspricht.
AppName TIN (
ID
Vertex1
Vertex2
Vertex3
X1
Y1
X2
Y2
X3
Y3
Geometry
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
SDO GEOMETRY )
mit
• ID
eindeutiger Schlüssel des Dreiecks
• Vertex1
ID des Vektors am ersten Dreieckspunkt
• Vertex2
ID des Vektors am zweiten Dreieckspunkt
• Vertex3
ID des Vektors am dritten Dreieckspunkt
• X1
X-Koordinate des ersten Passpunktes
• Y1
Y-Koordinate des ersten Passpunktes
• X2
X-Koordinate des zweiten Passpunktes
• Y2
Y-Koordinate des zweiten Passpunktes
• X3
X-Koordinate des dritten Passpunktes
• Y3
Y-Koordinate des dritten Passpunktes
• Geometry
geom. Darstellung des Vektors
7.1. TABELLENSTRUKTUR
7.1.5
101
Neue Passpunkte beim Hybrid-Ansatz
Die neuen Passpunkte vom Hybrid-Ansatz werden in einer ähnlichen Struktur
gehalten wie die Vektoren.
AppName CP (
No
X1
Y1
X2
Y2
Geometry
Point A
Point B
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
SDO GEOMETRY
SDO GEOMETRY
SDO GEOMETRY )
mit
• No
eindeutiger Schlüssel des Vektors
• X1
X-Koordinate auf dem agg. Objekt aus Quelle A
• Y1
Y-Koordinate auf dem agg. Objekt aus Quelle A
• X2
X-Koordinate auf dem agg. Objekt aus Quelle B
• Y2
Y-Koordinate auf dem agg. Objekt aus Quelle B
• Geometry
geom. Darstellung des Vektors
• Point A
geom. Darstellung des Punktes auf dem agg. Objekt aus Quelle A
• Point B
geom. Darstellung des Punktes auf dem agg. Objekt aus Quelle B
7.1.6
Ergebnisse
Die nachfolgenden Tabellen enthalten die Ergebnisse der Rubber-SheetingVerfahren, dabei werden die Tabellen mit 1 bis 3 durchnummeriert und erlauben so mehrere Ergebnisse zuspeichern.
Ergebnis des geometrischen Rubber-Sheeting-Prozesses
AppName RS {1. . . 3} ( . . . wie AppName . . . )
102
KAPITEL 7. IMPLEMENTIERUNG
Ergebnis des topologischen Rubber-Sheeting-Prozesses
AppName RS {1. . . 3} Node ( . . . wie AppName Node . . .
AppName RS {1. . . 3} Edge ( . . . wie AppName Edge . . .
AppName RS {1. . . 3} Face ( . . . wie AppName Face . . .
Verschiebungsvektoren der letzten Transformation
AppName RSVecs ( . . . wie AppName Vectors . . .
Veränderungen in der Topologie
AppName Top Error ( Name1
Name2
ErrorType
Relation
)
NVARCHAR2(50)
NVARCHAR2(50)
NVARCHAR2(50)
NVARCHAR2(50) )
mit
• Name1
Name des ersten Objektes
• Name2
Name des zweiten Objektes
• ErrorType
Fehler der auftritt, entsprechend Abschnitt 4.5.2
• Relation
topologische Relation, z.B. MEETS, TOUCH, . . . .
Ergebnis des Qualitätsvergleiches
AppName Quality ( RefTable
TestTable
ResultType
Result
NVARCHAR2(100)
NVARCHAR2(100)
NVARCHAR2(150)
NVARCHAR2(150) )
mit
• RefTable
Name der Referenztabelle
• TestTable
Name der zu überprüfenden Tabelle
• ResultType
Ergebnistyp
• Result
Ergebnis
)
)
)
7.2. PACKAGES
Performanz-Tabelle
Performance ( ID
Name
Objects
Parameter
StartDate
EndDate
103
NUMBER
NVARCHAR2(100)
NUMBER
NVARCHAR2(150)
TIMESTAMP(6)
TIMESTAMP(6) )
mit
• ID
eindeutiger Schlüssel
• Name
Name / Beschreibung der Ausführung
• Objects
Anzahl der Objekte die von der Berechnung betroffen sind
• Parameter
Alle verwendeten Parameter
• StartDate
Startzeitpunkt
• EndDate
Endzeitpunkt
Für die einfache Ansicht wie lange eine Berechnung gedauert hat, existiert
noch eine Sicht auf diese Tabelle. Performance RunTime enthält die obigen
Informationen, zeigt aber nicht Start- und Endzeitpunkt, sondern direkt die
Laufzeit.
7.2
Packages
Folgende Packages wurden implementiert:
• RubberSheetingTables
stellt Methoden zum Verwalten der Tabellen des Rubber-Sheeting-Prozesses
bereit.
• TriangulationTables
stellt Methoden zum Erstellen der TIN-Struktur bereit. Wird vom Algorithmus
der Triangulierung benötigt und stellt das Ergebnis dem Verfahren nach [Gil85]
zur Verfügung.
• RubberSheetingProcess
stellt Methoden für die Prozesssteuerung der Rubber-Sheeting-Verfahren zur
Verfügung. Es steuert die Vektorerstellung und die Durchführungen der RubberSheeting-Funktionen.
104
KAPITEL 7. IMPLEMENTIERUNG
• RubberSheetingFunctions
stellt die Rubber-Sheeting-Funktionen als PL/SQL Functions bereit. Wird vom
Package RubberSheetingProcess verwendet.
• PerformanceTracker
misst die benötigte Ausführungszeit und hält Kennzahlen für den Vergleich fest.
• TopologieTracker
bietet Methoden zur Überprüfung der Topologie des Ergebnisses eines RubberSheeting-Verfahrens an.
• QualityTracker
stellt Methoden zum Vergleich der Qualität der Rubber-Sheeting-Verfahren bereit.
Bemerkung 7.2.1 Die nachfolgende Aufführung der implementierten Prozeduren
und Funktionen ist bei weitem nicht vollständig. Auf die Angabe von Hilfsfunktionen
wurde bewusst verzichtet. In eckige Klammern gefasste Parameter sind optional. Der
Parameter p AppName der bei vielen Methoden auftritt, bezeichnet den Tabellen-Präfix.
7.2.1
Rubber-Sheeting-Prozess
Zum Rubber-Sheeting-Prozess zählen die ersten drei Packages, diese stellen
die folgenden Methoden zur Verfügung:
RubberSheetingTables
• PROCEDURE AddDimensionInformation(p AppName,
p Xmin, p Xmax, p Ymin, p Ymax)
Fügt die Ausdehnung des Kartenblattes in die Setup Tabelle ein.
• PROCEDURE CreateGeoTable(p AppName, [p Suffix])
Erstellt eine Tabelle für die geometrischen Objekte. p AppName ist der Name der
Tabelle, p Suffix, sofern nicht NULL, wird an den Namen angehängt.
• PROCEDURE CreateLinksTable(p AppName, [p Suffix])
Erstellt eine Link-Tabelle für die Zuordnung von Objekten. Name der Tabelle
ist p AppName LINKS. p Suffix wird an den Namen angehängt, sofern nicht
NULL.
• PROCEDURE CreateMeshTables(p AppName, [p Suffix])
Erstellt Tabellen für die agg. topologischen Objekte, die Maschen und deren
Zuordnungen. Die Namen lauten p AppName[ p Suffix] T, p AppName[ pSuffix] MESH und p AppName[ p Suffix] PART.
• PROCEDURE CreateTopoTables(p AppName, [p Suffix])
Erstellt die Tabelle für die topologischen Objekte. Die Namen der Tabellen lauten p AppName Mesh, - Edge und - Node. p Suffix wird an die Namen angehängt, wenn nicht NULL.
7.2. PACKAGES
105
• PROCEDURE CreateVectorTable(p AppName)
Erstellt die Vektortabelle mit dem Namen p AppName VECTORS.
• PROCEDURE CreateRSVectorTable(p AppName)
Erstellt die Tabelle mit berechneten Verschiebungen. Der Name lautet p AppName RSVECS.
• PROCEDURE DropGeoTable(p AppName, [p Suffix])
Entfernt die Tabelle des geometrischen Objektes.
• PROCEDURE DropLinksTable(p AppName, [p Suffix])
Entfernt die Link-Tabelle.
• PROCEDURE DropMeshTables(p AppName, [p Suffix])
Entfernt die Tabellen der Maschen, agg. topo. Objekte und deren Zuordnungen.
• PROCEDURE DropTopoTables(p AppName, [p Suffix])
Entfernt die topologischen Tabellen.
• PROCEDURE DropVectorTable(p AppName)
Entfernt die Vektortabelle.
• PROCEDURE DropRSVectorTable(p AppName)
Entfernt die berechnete Verschiebungstabelle.
• PROCEDURE DropRSTables(p AppName)
Entfernt alle Tabellen des Rubber-Sheeting-Ergebnisses.
TriangulationTables
• PROCEDURE CreateTINTable(p AppName)
Erstellt die Tabelle für das Ergebnis der Triangulation. Die Tabelle heißt p AppName TIN.
• PROCEDURE DropTINTable(p AppName)
Entfernt die Triangulationstabelle.
• FUNCTION GenerateTriangle(p X1, p X1, p X2, p Y2, p X3, p Y3)
RETURN SDO GEOMETRY
Erstellt eine Dreiecksgeometrie aus den angegeben Punkten.
• FUNCTION GetTriangleID(p AppName, p X, p Y)
RETURN SDO GEOMETRY
Liefert die ID des Dreieckes zurück, das den Punkt enthält. 2
• PROCEDURE InitTIN(p AppName)
Erstellt das Initialdreieck an den Kartenpunkten.
2
Dieses Ergebnis wird bei mehren überdeckenden Dreiecken eindeutig gemacht.
106
KAPITEL 7. IMPLEMENTIERUNG
• FUNCTION InsertTriangle(p AppName,
p Vertex1, p X1, p Y1,
p Vertex2, p X2, p Y2,
p Vertex3, p X3, p Y3, [p WithGeometry])
RETURN NUMBER
Fügt ein neues Dreieck in die TIN-Tabelle ein und liefert dessen ID zurück. Wenn
p WithGeometry , 0 ist, dann wird bei Einfügen direkt die Dreiecksgeometrie
erzeugt.
• FUNCTION InsertVector(p AppName, p X1, p Y1, p X2, p Y2)
RETURN NUMBER
Fügt einen neuen Vektor in die Vektor Tabelle ein und liefert dessen Nummer
zurück.
• UpdateGeometry(p AppName)
Aktualisiert oder erstellt die Geometrie der Dreiecke in der Tabelle p AppNameTIN.
RubberSheetingProcess
• PROCEDURE GenerateVectorsAtEndPoints(p AppName, [p Tracking])
Erzeugt die Vektoren an den Start- bzw. Endpunkten der geometrischen agg.
Objekte. p Tracking gibt an, ob die Ausführungszeit gemessen werden soll.
• PROCEDURE GenerateVectorsAtShapePoints(p AppName,
[p Tracking])
Erzeugt die Vektoren an den Stützpunkten der geometrischen agg. Objekte.
p Tracking gibt an, ob die Ausführungszeit gemessen werden soll.
• PROCEDURE GenerateVectorsWithDistance(p AppName, p Measure,
[p EndPoints], [p Tracking])
Erzeugt die Vektoren im Abstand von p Measure an den geometrischen agg.
Objekten. p EndPoints gibt an, ob zusätzlich an den Start- und Endpunkten
Vektoren erstellt werden sollen. p Tracking gibt an, ob die Ausführungszeit
gemessen werden soll.
• PROCEDURE RunRubberSheetingOnGDM(p AppName, p RSAlgorithm,
[p mValue], [p DistanceValue], [p Tracking])
Führt das Rubber-Sheeting auf den geometrischen Objekten aus. Dazu werden
die Ergebnistabellen erstellt, die Objekte übernommen und dann transformiert
mit p RSAlgorithm. Je nach Verfahren sind zusätzliche Parameter notwendig.
p mValue gibt bei Laurini den Parameter m an, p DistanceValue gibt bei den
lokalen Laurini-Verfahren den Abstand vom Objekt bzw. Punkt an. p Tracking
gibt an, ob die Ausführungszeit gemessen werden soll.
• PROCEDURE GenerateTVectorsAtEndPoints(p AppName,
[p Tracking])
Erzeugt die Vektoren an den Start- bzw. Endpunkten der topologischen agg.
Objekte. p Tracking gibt an, ob die Ausführungszeit gemessen werden soll.
7.2. PACKAGES
107
• PROCEDURE GenerateTVectorsAtShapePoints(p AppName,
[p Tracking])
Erzeugt die Vektoren an den Stützpunkten der topologischen agg. Objekte.
p Tracking gibt an, ob die Ausführungszeit gemessen werden soll.
• PROCEDURE GenerateTVectorsWithDistance(p AppName, p Measure,
[p EndPoints], [p Tracking])
Erzeugt die Vektoren im Abstand von p Measure an den topologischen agg.
Objekten. p EndPoints gibt an, ob zusätzlich an den Start- und Endpunkten
Vektoren erstellt werden sollen. p Tracking gibt an, ob die Ausführungszeit
gemessen werden soll.
• PROCEDURE RunRubberSheetingOnTDM(p AppName, p RSAlgorithm,
[p mValue], [p DistanceValue], [p Tracking])
Führt das Rubber-Sheeting auf den topologischen Objekten aus. Dazu werden
die Ergebnistabellen erstellt, die Objekte übernommen und dann transformiert
mit p RSAlgorithm. Je nach Verfahren sind zusätzliche Parameter notwendig.
p mValue gibt bei Laurini den Parameter m an, p DistanceValue gibt bei den
lokalen Laurini-Verfahren den Abstand vom Objekt bzw. Punkt an. p Tracking
gibt an, ob die Ausführungszeit gemessen werden soll.
• PROCEDURE generateControlPointsEquiDist(p AppName,
p distanceValue)
Erzeugt in dem Abstand p distanceValue ein äquidistantes Gitter von Passpunkten auf dem Kartengebiet.
• PROCEDURE runHybridRSStep1(p AppName,
p distanceValue, p mValue, [p Tracking])
Führt den ersten Schritt des Hybrid-Ansatzes aus. Die Laurini-Transformation
wird auf das äquidistante Gitter mit dem Abstand p distanceValue angewendet. Das Ergebnis dieses Schrittes wird in die Vektortabelle übernommen.
Als nächstes musst die Triangualtion durchgeführt werden, um Schritt 2 zu
ermöglichen. p Tracking gibt an, ob die Ausführungszeit gemessen werden
soll.
• PROCEDURE runHybridRSStep2(p AppName, p onTDM, [p Tracking])
Nachdem die Triangulierung erzeugt wurde, kann der zweite Schritt des HybridAnsatzes ausgeführt werden. Ein Wert p onTDM > 0 bewirkt das die Transformation auf die topologischen Daten angewendet wird. p Tracking gibt an, ob
die Ausführungszeit gemessen werden soll.
108
KAPITEL 7. IMPLEMENTIERUNG
Dabei sind folgende Rubber-Sheeting-Verfahren auf die Datenmodelle implementiert: 34
Verfahren
Laurini
Punktlokal
Objektlokal
Maschenlokal
Gillman
Doytsher
Haunert
Hybrid
7.2.2
Funktionsname
LAU98
LAU98-Local
LAU98-ObjectLocal
LAU98-MeshLocal
GIL85
DOY01 3
HAU05
zusätzliche Methoden
GDM
X
X
X
X
X
X
-4
X
TDM
X
X
X
X
X
X
-4
X
Rubber-Sheeting-Funktionen
Das Package RubberSheetingFunctions stellt die Funktionen für die RubberSheeting-Verfahren zur Verfügung, folgende Funktionen sind implementiert:
• FUNCTION DOY01(p Geometry, p AppName)
RETURN SDO GEOMETRY 3
Berechnet für eine Geometrie (p Geometry) die Transformation nach Doytsher.
• FUNCTION GIL85(p Geometry, p AppName)
RETURN SDO GEOMETRY
Berechnet für eine Geometrie (p Geometry) die Transformation nach Gillman.
• FUNCTION HAU05(p Geometry, p AppName)
RETURN SDO GEOMETRY 4
Berechnet für eine Geometrie (p Geometry) die Transformation nach Haunert.
• FUNCTION LAU98(p Geometry, p AppName, p mValue)
RETURN SDO GEOMETRY
Berechnet für eine Geometrie (p Geometry) die Transformation nach Laurini.
p mValue ist der Parameter, der den Einfluss der Vektoren entsprechend Gleichung (3.22) steuert.
• FUNCTION LAU98 Local(p Geometry, p AppName,
p mValue, p DistanceValue)
RETURN SDO GEOMETRY
Berechnet für eine Geometrie (p Geometry) die Transformation nach Laurini.
Für die Berechnung der Transformation eines Stützpunktes wird nur ein rechteckiges Fenster um diesen Punkt betrachtet.
• FUNCTION LAU98 MeshLocal(p Geometry, p AppName, p mValue)
RETURN SDO GEOMETRY
3
Das Verfahren von Doytsher wurde vereinfacht und prüft nun nicht auf die Sichtbarkeit
von Passpunkten. Es werden immer alle Vektoren einer Masche verwendet.
4
In der Arbeit vom 28. Februar 2007ist das Verfahren nach Haunert noch nicht implementiert.
7.2. PACKAGES
109
Berechnet für eine Geometrie (p Geometry) die Transformation nach Laurini.
Es werden aber nur die Vektoren der überdeckenden Masche verwendet.
• FUNCTION LAU98 ObjectLocal(p Geometry, p AppName,
p mValue, p ObjectID)
RETURN SDO GEOMETRY
Berechnet für eine Geometrie (p Geometry) die Transformation nach Laurini.
Es werden aber nur die Vektoren in einem bestimmten Abstand um das Objekt
herum verwendet. p ObjectID ist die ID der zu transformierenden Geometrie.
7.2.3
Bewertungsverfahren
Die letzten drei Packages stellen die Bewertungsverfahren für die RubberSheeting-Verfahren bereit. Folgende Methoden wurden implementiert und setzen die Bewertungskriterien aus Abschnitt 4.5 um.
PerformanceTracker
• PROCEDURE InsertRun(p Name,
p Objects, p Parameter, p StartDate, p EndDate)
Fügt einen neuen Datensatz in die Tabelle PERFORMANCE ein. p Name ist der
Name oder die Beschreibung, des zu messenden Ergebnisses. p Objects enthält
die Anzahl der Objekte, auf die die Operation angewendet wurde. p Parameter
enthält die verwendeten Parameter. p StartDate und p EndDate geben den
Start- und Endzeitpunkt an. Falls die Performanz-Tabelle nicht existiert, wird
sie angelegt.
TopologieTracker
• CheckTopologieOnGDM(p AppName, p ResultTable, [p Tracking])
Führt einen Topologievergleich des Rubber-Sheeting-Ergebnisses aus Tabelle
p AppName p ResultTable gegen die ursprünglichen geometrischen Daten
durch. p Tracking gibt an, ob die Ausführungszeit protokolliert werden soll.
• CheckTopologieOnTDM(p AppName, p ResultTable, [p Tracking])
Vergleicht die topologischen Eigenschaften aus Abschnitt 4.5.2 des RubberSheeting-Ergebnisses mit denen der ursprünglichen topologischen Daten. p ResultTable gibt den Suffix des zu vergleichenden Rubber-Sheeting-Ergebnisses
an. p Tracking gibt an, ob die Ausführungszeit protokolliert werden soll.
QualityTracker
• CalcShifting(p AppName)
Berechnet aus den vorhandenen Verschiebungsvektoren und dem letzten Ergebnis des Rubber-Sheetings die Kennzahlen für die minimale, maximale und
durchschnittliche Verschiebung der Karte.
110
KAPITEL 7. IMPLEMENTIERUNG
• CompareGDM(p AppName, p TestTable, [p RefTable],
[p Tracking])
Misst den Flächenunterschied, gemäß Abschnitt 4.5.3, zwischen den geometrischen Objekten. p TestTable ist das Suffix der zu überprüfenden Tabelle.
p RefTable ist das Suffix der Referenz-Tabelle gegen die getestet wird. Wenn
p RefTable NULL ist, dann werden die ursprünglichen Daten verwendet.
p Tracking gibt an, ob die Ausführungszeit protokolliert werden soll.
• CompareTDM(p AppName, p TestTable, [p RefTable],
[p Tracking])
Misst den Flächenunterschied zwischen den topologischen Maschen-Objekten.
p TestTable ist das Suffix der zu überprüfenden Tabelle. p RefTable ist das
Suffix der Referenz-Tabelle gegen die getestet wird. Wenn p RefTable NULL
ist, dann werden die ursprünglichen Daten verwendet. p Tracking gibt an, ob
die Ausführungszeit protokolliert werden soll.
7.3
Triangulationsalgorithmus
Für die Triangulierung verwenden wir hier den Algorithmus aus [Che05]. Da
dieser nur als interaktives Java-Applet programmiert wurde, musste dieser für
der Verwendung in der Oracle-Datenbankumgebung angepasst werden. Dazu
wurden folgende Veränderung im Source Code vorgenommen:
1. Erweiterung um einen Datenbank-Connector, der die Verbindung zur
Oracle Datenbank verwaltet.
2. Anpassung des Datentyps Point, damit dieser zur Repräsentation eines
Passpunktes der Datenbank passt. Ein Punkt hat nun die Form (ID, X,
Y), dabei entspricht die ID dem eindeutigen Schlüssel in der Datenbank,
X, Y stehen für die Koordinaten des Punktes.
3. Erweiterung für das sequentielle Laden der Passpunkte aus der Datenbank.
4. Erweiterung für das sequentielle Speichern der entstandenen Dreiecke
in der Datenbank.
Dabei durchläuft der Algorithmus folgende Schritte:
(1) Herstellen der Verbindung zur Datenbank
(2) Initialisieren der benötigten Objekte
• Tabellenstruktur erstellen (in der Datenbank)
• Initialdreieck erstellen (im Programm)
(3) Für jedes Vektor-Objekt wird der Passpunkt (X1, Y1) des Vector-Objektes
in die Triangulation eingefügt (sequentiell)
7.3. TRIANGULATIONSALGORITHMUS
(4) Für jedes entstandene Dreieck (im Programm)
• füge ein neues Dreiecks-Objekt (in die Datenbank) ein
• erzeuge die Objektgeometrie
111
112
KAPITEL 7. IMPLEMENTIERUNG
Anhang A
Implementierungsbeispiele
A.1
Durchführung des Rubber-Sheetings
Wir wollen das Gebiet mit dem Namen HAN250“ mit dem Verfahren von
”
Laurini und der Optimierung Objekt-lokal“ transformieren. Die Daten sind
”
bereist geladen und liegen im geometrischen Datenmodell vor. Dann führen
wir folgende Schritte durch:
1. RSTables.DropRSTables(´HAN250´);
Zuerst vorhandene Rubber-Sheeting-Ergebnisse entfernen, damit das Schema
wieder sauber ist. (Optional)
2. RSProcess.GenerateVectorWithDistance(´HAN250´, 100, 1);
Wir erzeugen hiermit Vektoren aus den Tabellen HAN250 A, HAN250 B, HAN250LINKS. Die Vektoren sind äquidistant im Abstand 100 verteilt. An den Startund Endpunkten werden zusätzlich Vektoren erzeugt. Das Ergebnis dieses
Schrittes befindet sich in der Tabelle HAN250 Vectors.
3. RSProcess.RunRubberSheetingOnGDM(´HAN250´,
´LAU98-ObjectLocal´, 2, 300);
Jetzt wird das Rubber-Sheeting durchgeführt. Das Ergebnis steht dann in der
Tabelle HAN250 RS 1
RSTables steht für das Package RubberSheetingTables, RSProcess steht für das
Package RubberSheetingProcess.
A.2
Topologie des Ergebnisses testen
Nun wollen wir das Ergebnis des obigen Beispiels auf Topologieveränderungen überprüfen. Dazu wird der Befehl
TopologieTracker.CheckTopologieOnGDM(´HAN250´, ´RS 1´)
113
114
ANHANG A. IMPLEMENTIERUNGSBEISPIELE
ausgeführt. Das Ergebnis findet sich dann in der Tabelle HAN250 Top Error.
Anhang B
Tabellen für die
Rubber-Sheeting Beispiele
100
y
50
III
II
I
x
100
50
Hier befinden sich die ausführlichen Zwischenergebnisse der Rubber-SheetingBeispiele aus Abschnitt 3.5. Tabelle B.1 gibt die Koordinaten und Verschiebung
der Vektoren aus den abgebildeten Gebiet an. Tabelle B.2 gibt die Koordinaten
und Abstände der zu transformierenden Punkte an.
Vektor
1
2
3
4
5
6
x
25
60
95
75
34
10
y
10
20
40
65
80
50
∆x
4
10
7
7
5
7
∆y
8
-2
8
6
5
3
x0
29
70
102
82
39
17
y0
18
18
48
71
85
53
Tabelle B.1: Vektoren und deren Verschiebung
115
116
ANHANG B. TABELLEN FÜR DIE RUBBER-SHEETING BEISPIELE
Punkt
I
II
III
x
23
82
41
y
32
43
50
d(v1 )
22,091
65,863
43,081
d(v2 )
38,897
31,828
35,511
d(v3 )
72,443
13,342
54,918
d(v4 )
61,587
23,087
37,162
d(v5 )
49,244
60,605
30,806
d(v6 )
22,204
72,339
31,000
Tabelle B.2: Transformationspunkte und deren Abstand zu den Passpunkten
Punkt
I
II
III
Punkt
I
II
III
w(v1 )
0,3337
0,0443
0,0926
x
23
82
41
y
32
43
50
w(v2 )
0,1307
0,1885
0,1351
∆x
5,98
8,89
5,07
∆y
4,41
6,94
3,06
w(v3 )
0,0357
0,5877
0,0556
x0
28,98
90,98
46,07
w(v4 )
0,0512
0,3140
0,1239
y0
36,41
49,94
53,06
w(v5 )
0,0822
0,0532
0,1753
w(v6 )
0,3313
0,0359
0,1733
Tabelle B.3: Rubber-Sheeting nach Laurini - (oben) die transformierten Punkte;
(unten) der Einfluss (Gewichtung) der Vektoren
Punkt
I
II
III
Punkt
I
II
III
w(v1 )
0,0453
0,0152
0,0232
x
23
82
41
y
32
43
50
w(v2 )
0,0257
0,0314
0,0282
∆x
6,40
7,08
6,69
∆y
4,54
5,34
4,31
w(v3 )
0,0138
0,0750
0,0182
x0
29,40
89,08
47,69
w(v4 )
0,0162
0,0433
0,0269
y0
36,54
48,34
54,31
w(v5 )
0,0203
0,0165
0,0325
w(v6 )
0,0450
0,0138
0,0323
Tabelle B.4: Rubber-Sheeting nach Doytsher - (oben) die transformierten Punkte; (unten) der Einfluss (Gewichtung) der Vektoren
Punkt
I
II
III
x
23
82
41
y
32
43
50
Punkt
I
II
III
λ1
-0,2706
0,2078
-0,5968
∆x
6,50
7,62
7,42
∆y
3,84
5,34
1,74
λ1
-0,4118
0,5059
0,4189
x0
29,50
89,62
48,42
λ1
0,9294
0,2863
0,1622
y0
35,84
48,35
51,74
ω
0,0012
0,0008
0,0005
Tabelle B.5: Rubber-Sheeting nach Gillman - (oben) die transformierten Punkte;
(unten) das Ergebnis der Parameter λ1 , λ2 , λ3
117
Dreieck
1
2
3
4
5
6
7
8
9
10
11
12
13
D1
6 (10.0,50.0)
I (140.0,5.0)
4 (75.0,65.0)
I (140.0,5.0)
6 (10.0,50.0)
2 (60.0,20.0)
I (140.0,5.0)
6 (10.0,50.0)
I (140.0,5.0)
6 (10.0,50.0)
3 (95.0,40.0)
6 (10.0,50.0)
I (140.0,5.0)
D2
I (5.0,5.0)
3 (95.0,40.0)
I (5.0,140.0)
3 (95.0,40.0)
2 (60.0,20.0)
4 (75.0,65.0)
4 (75.0,65.0)
1 (25.0,10.0)
1 (25.0,10.0)
1 (25.0,10.0)
4 (75.0,65.0)
I (5.0,140.0)
1 (25.0,10.0)
D3
I (5.0,140.0)
4 (75.0,65.0)
5 (34.0,80.0)
2 (60.0,20.0)
5 (34.0,80.0)
5 (34.0,80.0)
I (5.0,140.0)
2 (60.0,20.0)
I (5.0,5.0)
I (5.0,5.0)
2 (60.0,20.0)
5 (34.0,80.0)
2 (60.0,20.0)
Tabelle B.6: Ergebnis der Triangulierung
118
ANHANG B. TABELLEN FÜR DIE RUBBER-SHEETING BEISPIELE
Anhang C
Lösung der Integrale aus dem
Verfahren nach Haunert
Um die Verschiebung nach [Hau05] berechnen zu können, muss zuerst die
Lösung der Integrale aus Gleichung (3.32) bestimmt werden.
∆x0
∆y0




Z1
Z1
 ,X 

X 
∆xi (r) · dr 
dr 






=
Si,i+1 ·
Si,i+1 ·


2 (r) 
2 (r) 


S
S
i,0
i,0
i
i
0
0




Z1
Z1
 ,X 

X 
∆y
(r)
·
dr
dr 

i
S



·
S
·
=
 i,i+1
 i,i+1


2 (r) 
2 (r) 


S
S
i,0
i,0
i
i
0
0
mit i ∈ N, 1 ≤ i ≤ n = Anzahl der Passpunkte
auf der Masche und n + 1 = 1
mit
S2i,0 (r) = (xi − x0 + r · (xi+1 − xi ))2 + (yi − y0 + r · (yi+1 − yi ))2
= (xi+1 − xi )2 + yi+1 − yi 2 ·r2
|
{z
}
(C.1)
(C.2)
a
+ 2 · (xi − x0 ) · (xi+1 − xi ) + yi − y0 · yi+1 − yi ·r
|
{z
}
(C.3)
b
2
2
+ (xi − x0 ) + yi − y0
|
{z
}
(C.4)
c
∆x(r) =
∆xi +r · (∆xi+1 − ∆xi ),
|{z}
| {z }
d
(C.5)
e
∆x(r) = ∆xi + r · (∆xi+1 − ∆xi )
119
(C.6)
120ANHANG C. LÖSUNG DER INTEGRALE AUS DEM VERFAHREN NACH HAUNERT
Dadurch lassen sich die Lösungen der Integrale finden, wie folgt finden:
∆ = 4 · a · c − b2
S = Si,0 = a · r2 + b · r + c
Z
dr
Si,0
Z
=
dr
S
(C.7)

2·a·r+b
2


 √∆ · arctan √∆
= 

√
 − √2 · arctan 2·a·r+b
−∆
Z
∆x(r) · dr
S2i,0 (r)
−∆
für ∆ > 0
für ∆ < 0
d+r·e
S
Z
Z
dr
r · dr
= d·
+e·
S
S
!
Z
Z
1
b
dr
dr
= d·
+e·
· ln S −
·
S
2·a
2·a
S
! Z
e·b
dr
e
·
· ln S + d −
=
2·a
2·a
S
|{z}
(C.8)
Z
=
siehe (C.8)
(C.9)
(C.10)
(C.11)
(C.12)
Literaturverzeichnis
[Are02] A, C.A.: The Bowyer-Watson algorim / Department of Geodesy,
Faculty of Civil Engineering and Geosciences, Delf University of
Technology. 2002. – Case Study
[ATK01] ATKIS Version 3.0, Technical report. Amtliches TopographischKartographisches Informationssystem. 2001. – http://www.atkis.de
[Bri05] B, Thomas:
Geodatenbanksysteme in Theorie und Praxis - Einführung in objektrelationale Geodatenbanken unter besonderer
Berücksichtigung von Oracle Spatial. 1. Herbert Wichmann Verlag,
September 2005
[Che05] C, Paul: Voronoi Diagram / Delaunay Triangulation Source Code.
2005. – http://www.cs.cornell.edu/Info/People/chew/Delaunay.html
[Def] http://www.geoinformatik.uni-rostock.de/einzel.asp?ID=1514,
Stand: 15.01.2007
[Del34] D, Boris N.: Sur la sphere vide (engl. On the empty sphere).
In: Bulletin of Academy of Sciences of the USSR 1 (1934), S. 793–800
[DFE01] D, Yerahmiel ; F, Sagi ; E, Eti: Transformation of
Datasets in a Linear-based Map Conflation Framework. In: Surveying
and Land Information Systems 3 (2001), S. 159–169
[DG95] D, Yerahmiel ; G, Eytan: Rubber-Sheeting Algorithm
for Cadastral Maps. In: Journal of Surveying Engineering 121 (1995),
November, Nr. 4, S. 155–162
[EH90] E, Max J. ; H, John R.: Categorizing Binary Topological Relations Between Regions, Lines, and Points in Geographic
Databases / Department of Surveying Engineering, University of
Maine. 1990. – Forschungsbericht
[Feu99] F, Steven: Oracle PL/SQL - Grundlagen. 1. O’Reilly, 1999
[Gil85] G, Daniel W.: Triangulations for rubber-sheeting. In: Proceedings of AUTOCARTO Bd. 7, 1985
[Gün04] G̈, Kasten: LaTeX - Das umfassende Handbuch. 1. Galileo
Computing, 2004
121
122
LITERATURVERZEICHNIS
[Gut84] G, Antonin: R-Trees: A Dynamic Index Structure for Spatial
Searching. In: Y, Beatrice (Hrsg.): SIGMOD’84, Proceedings of
Annual Meeting, Boston, Massachusetts, June 18-21, 1984, ACM Press,
1984, S. 47–57
[Hau05] H, Jan-Henrik: Link based Conflation of Geographic Dataset.
In: ICA Workshop on Generalisation and Multiple Representation. La
Coruña/Spain, Juli 2005
[HOL01] H, Jung-Rae ; O, Ji-Hyeon ; L, Ki-Joune: Query transformation method by delaunay triangulation for multi-source distributed
spatial database systems. In: GIS ’01: Proceedings of the 9th ACM international symposium on Advances in geographic information systems.
New York, NY, USA : ACM Press, 2001. – ISBN 1–58113–443–6, S.
41–46
[ISO03a] International Standard ISO 19107:2003 - Geographic Information - Spatial
Schema. International Organization for Standardization (ISO). 2003
[ISO03b] International Standard ISO 19111:2003 - Spatial referencing by coordinates. International Organization for Standardization (ISO). 2003
[ISO04a] International Standard ISO 19125-1:2004 -Simple feature access – Part 1:
Common architecture. International Organization for Standardization
(ISO). 2004
[ISO04b] International Standard ISO 19125-1:2004 -Simple feature access – Part
2: SQL option. International Organization for Standardization (ISO).
2004
[ISO05] International Standard ISO 19103:2005 - Conceptual schema language.
International Organization for Standardization (ISO). 2005
[ISO06] International Standard ISO 13249-3:2006 - SQL multimedia and application packages – Part 3: Spatial. International Organization for
Standardization (ISO). 2006
[JRH+ 05] J, Mario ; R, Chris ; H, Jürgen ; Z, Barbara ; Q, Stefan: UML 2 glasklar. Praxiswissen für die UML Modellierung und Zertifizierung. 1. Carl Hanser Verlag, 2005
[KGB04] K, Ravi ; G, Albert ; B, Euro: Pro Oracle Spatial.
1. Apress, November 2004
[Kre04] K, Fabian:
Zuordung von flächenhaften Objekten bei der
Föderierung kartographischer Datenbanken, Universität Hannover, Diplomarbeit, Mai 2004
[Lan02]  L, Norbert: Geoinformatik in Theorie und Praxis. 1. Springer,
2002
LITERATURVERZEICHNIS
123
[Lau98] L, Robert: Spatial multi-database topological continuity and
indexing: a step towards seamless GIS data interoperability. In: Int.
J. Geographical Information Science 12 (1998), S. 373–402
[LMT04] L, Udo ; M, Daniela ; T, Michael: Identifikation katographischer Objekte in föderierten räumlichen Datenbanken. In:
Informatik Berichte DB 01/2004, 2004
[LS80] L, D. T. ; S, B. J.: Two algorithms for constructing a Delaunay triangulation. In: International Journal of Parallel Programming
9 (1980), Juni, Nr. 3, S. 219–242
[LT92] L, Robert ; T, Derek: Fundamentals Of Spatial Information Systems. Academic Press, 1992
[Man02] M, Daniela: Konzeption eines Föderierungsdienstes für geographische Datenbanken, Universität Hannover, Diplomarbeit, 2002
[ME01] M, Jim ; E, Andrew: SQL Multimedia and Application
Packages (SQL/MM). In: SIGMOD Record 30 (2001), Nr. 4, S. 97–102
[ML04] M, Daniela ; L, Udo: Datengestütztes Matching von Kartenobjekten. In: Mittelungen des Bundesamtes für Kartographie und
Geodäsie 31 (2004), S. 145–153
[Mur06a] M, Chuck ; A, Ning (Hrsg.) ; B, Bruce (Hrsg.) ; B, Janet (Hrsg.) ; L, Frank (Hrsg.) ; R, Siva (Hrsg.) ; W,
Jack (Hrsg.): Oracle Spatial Topology and Network Data Models, 10g
Release 2 (10.2). Oracle, 2006
[Mur06b] M, Chuck: Oracle Spatial User’s Guide and Reference, 10g Release
2 (10.2). Oracle, 2006
[MW99] M, Gerhard ; W, Thomas: Repetitorium der höheren Mathematik. Bd. 4. Binomi Verlag, 1999
[NK95] N, K. ; K, H.: Ein experimentelles Informationssystem für
ATKIS-Daten. In: Nachrichten aus dem Karten- und Vermessungswesen
113:1 (1995), S. 179–190
[OGC99] OpenGIS Simple Feature Specification for SQL, Revision 1.1. OGC Inc.
May 1999. – http://www.opengeospatial.org/docs/99-049.pdf
[OGC01] OpenGIS Abstract Specifications, Topic 1 - Feature Geometry. OGC Inc.
May 2001. – Version 5.0, http://www.opengeospatial.org
[Ram06] R, Paul: The State of Open Source GIS / Refractions Research.
2006. – Forschungsbericht
[Tie03] T, Michael: Entwicklung und Implementierung einer topologischen
Erweiterung für objektbasierte räumliche Datenbanken, Universität Hannover, Diplomarbeit, 2003
124
LITERATURVERZEICHNIS
[WLW06] W, Xiaqing ; L, Eugene ; W, Geoff: Interactive rubbersheeting using dynamic triangulation. In: SIGGRAPH ’06: ACM
SIGGRAPH 2006 Research posters. New York, NY, USA : ACM Press,
2006. – ISBN 1–59593–364–6, S. 80
[ZK03] Z, Borut ; K, Ivana: An incremental construction algorithm for Delaunay triangulation using the nearest-point paradigm.
In: International Journal of Geographical Information Science 17 (2003),
Nr. 2, S. 119–138
Abbildungsverzeichnis
2.2.1 Auszug aus dem ATKIS-Objektartenkatalog & abstraktes Schema des ATKIS-Modells . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2.2 Beispiel zweier ATKIS-Objekte . . . . . . . . . . . . . . . . . . .
9
2.2.3 Vektor- und Rastermodell . . . . . . . . . . . . . . . . . . . . . .
11
2.2.4 Topologische Primitive . . . . . . . . . . . . . . . . . . . . . . . .
13
2.3.1 Die Teilpakete des Paketes Geometry mit deren wichtigsten Klassen und Beziehungen nach [Bri05] . . . . . . . . . . . . . . . . .
15
2.3.2 Datenmodell für geometrische Primitive nach [Bri05] . . . . . .
16
2.3.3 Beispiel für zusammengesetzte geometrische Primitive . . . . .
17
2.3.4 Das Paket Topological primitive nach [Bri05] . . . . . . . . .
18
2.3.5 Beispiel für die Beziehung Realization . . . . . . . . . . . . . .
18
2.3.6 Beispiel für enthaltende top. Primitive . . . . . . . . . . . . . . .
19
2.4.1 Simple Features . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.4.2 Simple Feature Modell nach [Bri05] . . . . . . . . . . . . . . . . .
20
2.4.3 Punkte, Linien und Flächen im Simple-Feature-Modell nach
[Bri05] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.4.4 Wesentliche Teile des Klassenmodells von SQL/MM Spatial nach
[Bri05] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.4.5 Beispiel für gültige SQL/MM Geometrien . . . . . . . . . . . . .
24
3.1.1 einfache Rubber-Sheeting Beispiele nach [LT92] . . . . . . . . . .
36
3.1.2 Rubber-Sheeting-Beispiel . . . . . . . . . . . . . . . . . . . . . . .
37
3.3.1 Rubber-Sheeting-Prozess . . . . . . . . . . . . . . . . . . . . . . .
39
3.4.1 Zeitliche Anordnung der Rubber-Sheeting-Verfahren und deren
Beeinflussung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.4.2 Bestimmung des Initialdreiecks . . . . . . . . . . . . . . . . . . .
42
125
126
ABBILDUNGSVERZEICHNIS
3.4.3 Transformation in einem Dreieck . . . . . . . . . . . . . . . . . .
43
3.4.4 Einflussvektoren bei [DFE01] . . . . . . . . . . . . . . . . . . . .
48
3.4.5 Bestimmung der Einflussvektoren . . . . . . . . . . . . . . . . .
49
3.4.6 Transformation einer Masche - (links) nach [DFE01]; (rechts)
nach [Hau05] . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
3.4.7 Interpolation der Koordinatenunterschiede . . . . . . . . . . . .
51
3.4.8 Hybrid Ansatz mit zufällig gewählten Passpunkten . . . . . . .
52
3.5.1 Ausgangsgebiet (links) - Ergebnis nach Laurini (rechts) . . . . .
54
3.5.2 Ergebnis nach Doytsher (links) & Haunert (rechts) . . . . . . . .
55
3.5.3 Ergebnis nach Gillman . . . . . . . . . . . . . . . . . . . . . . . .
56
4.2.1 Beispiel für die Zuordnung von Objekten & Linkschema . . . .
59
4.3.1 ATKIS-Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.3.2 Topologisches Datenmodell aus [Tie03] . . . . . . . . . . . . . .
60
4.3.3 Repräsentation der Objekte - geometrische (links) & topologische (rechts) Objekte . . . . . . . . . . . . . . . . . . . . . . . . .
61
4.3.4 Repräsentation der Verschiebungsvektoren . . . . . . . . . . . .
62
4.3.5 Vektorerzeugung . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
4.3.6 Fehlerhafte Vektorerzeugung bei entgegengesetzter Orientierung 64
4.3.7 Repräsentation der Dreiecke . . . . . . . . . . . . . . . . . . . . .
66
4.5.1 XOR-Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
5.0.1 Buchholz 1:250000 (grün) & Weiterstadt 1:50000 (rot) . . . . . .
76
5.4.1 Ergebnisse der Transformation mit Laurini . . . . . . . . . . . .
87
5.4.2 Widersprüchliche Vektoren . . . . . . . . . . . . . . . . . . . . .
88
5.4.3 Veränderung in der TIN Struktur - vor und nach der Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
5.4.4 Ergebnisse der Transformation mit Gillman und Hybrid . . . .
90
6.0.1 Verbesserung der Transformatio von starren Geometrien . . . .
92
Tabellenverzeichnis
2.2.1 Übersicht Vektor- und Rastermodell . . . . . . . . . . . . . . . .
12
B.1 Vektoren und deren Verschiebung . . . . . . . . . . . . . . . . . 115
B.2 Transformationspunkte und deren Abstand zu den Passpunkten 116
B.3 Rubber-Sheeting nach Laurini - (oben) die transformierten Punkte; (unten) der Einfluss (Gewichtung) der Vektoren . . . . . . . . 116
B.4 Rubber-Sheeting nach Doytsher - (oben) die transformierten
Punkte; (unten) der Einfluss (Gewichtung) der Vektoren . . . . 116
B.5 Rubber-Sheeting nach Gillman - (oben) die transformierten Punkte; (unten) das Ergebnis der Parameter λ1 , λ2 , λ3 . . . . . . . . . 116
B.6 Ergebnis der Triangulierung . . . . . . . . . . . . . . . . . . . . . 117
127
Index
äquidistantes Gitter, 51
9-Intersection-Modell, 25
Ablaufrichtung, 16
ATKIS, 7
Bezugssystem, 28
boolesche Matrix, 25
Boundary, 17
Curve, 20
Datenmodell, 6
objektbasiertes, 10
raumbasiertes, 10
Delaunay-Triangulation, 11
digitales Kartographisches Modell, 7
digitales Landschaftsmodell, 7
Dimensionally Extended 9-IM, 26
Dimensionsmatrix, 26
Doytsher, 46
Sichtbarkeit, 47
Eigenschaften
Geometrische, 10
Temporale, 10
Thematische, 10
Topologische, 10
elastische Transformation, 35
Face, 17
Fläche, 20
Geo-Informationssystem, 5
Geodatenbanksysteme, 5
Geographic Features, 5
Geometrieart, 28
Geometriesammlung, 20
geometrische Beziehungen, 11
geometrische Funktionen, 6
geometrische Primitive, 16
geometrischer Datentyp, 6
GeometryCollection, 20
Geoobjekte, 5
Gewichtungsfunktion, 36
Gillman, 41
Haunert, 49
Hybrid-Transformation, 51
Indexstrukturen, 31
Initialdreieck, 41
ISO 19107, 14
isoliertes Primitive, 18
Kante
gerichtet, 13
isoliert, 13
Kanten, 13, 17
Klassifizierung, 40
Knoten, 17
Kombinationsfunktion, 36
Konten, 13
isoliert, 13
Koordinaten, 10
Koordinatensystem, 24
geographisch, 24
kartesisch, 24
Laurini, 44
Parameter m, 45
Linear Reference System, 24
lineare Interpolation, 50
lineares Bezugssystem, 24, 33
Linie, 20
LRS-Segment, 33
Masche, 17
Maschen, 13, 17
Objektartenkatalog, 7
128
INDEX
objektbasierte Vektordatenmodell, 14
objektrelationales DBS, 6
Oracle Spatial, 19, 27
Passpunkt, 37
Passpunkte, 36
Point, 20
Primitive
topologische, 13
Punkt, 20
Quadtrees, 31
R-Trees, 31
räumlich Datenbanksysteme, 5
räumliche Basisanfragen, 6
räumliche Bezugssysteme, 19
räumliche Indexe, 6
räumliches Bezugssystem, 22
räumliches Datenbankmodell, 19
Rand, 17
Rastermodell, 10
Rasterzellen, 10
relationales Datenbanksystem, 6
Rubber-Sheeting-Funktion, 40
Rubber-Sheeting-Prozess, 38
SDO ELEM INFO, 30
SDO GEOMETRY, 28
SDO GTYPE, 28
SDO LRS, 33
SDO ORDINATES, 29
SDO POINT, 29
SDO RELATE, 32
SDO WITHIN DISTANCE, 32
Simple Feature, 19
Simple Feature Specification, 19
Simple-Feature-Modell, 28
Spatial Database Systems, 5
Spatial Objects, 5
Spatial Reference System, 22
SQL/MM, 21
SQL/MM Spatial, 19, 21
Stützpunkte, 10, 11
Stützstellen, 11
stetige Transformationen, 36
Surface, 20
129
TIN, 11
Topologie, 11
topologische Primitive, 17
Triangulated Irregular Network, 11
Triangulation, 41
Triangulierung, 11
Umlaufrichtung, 17
Vektormodell, 10
Verschiebungsvektor, 37
Verschiebungsvektoren, 36
Herunterladen