F D I I ̈ P I F̈ ̈ E I L Ü 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