Diplomarbeit Interaktive 2D-Bildschirmkarten mit Datenbankanbindung Institut für Informatik III Rheinische Friedrich-Wilhelms-Universität Bonn vorgelegt von Hadžirešić Ernest Eifelstr. 26 53119 Bonn Betreuer Prof. Dr. Rainer Manthey Bonn, den 03. Mai 2004 II Eidesstatliche Erklärung: Ich erkläre hiermit, daß ich • die eingereichte Arbeit selbständig und ohne unerlaubte Hilfsmittel angefertigt, • nur die im Literaturverzeichnis aufgeführten Hilfsmittel benutzt und fremdes Gedankengut als solches kenntlich gemacht, • alle Personen und Institutionen, die mich bei der Vorebereitung und Anfertigung der Abhandlung unterstützt haben, genannt und • die Arbeit noch keiner anderen Stelle zur Prüfung vorgelegt habe. Ort, Datum Unterschrift (Vor- und Zuname) IV Vorwort Mein Dank gebührt Herrn Prof. Dr. Manthey für die Empfehlung, mich mit diesem sehr interessanten Thema zu beschäftigen. Außerdem möchte ich Ihm für seine Betreuung und sein Vertrauen danken. Durch die Gespräche mit Ihm konnte der Diplomarbeit erst dieser Rahmen gegeben werden. Außerdem bedanke ich mich bei meiner Ehefrau, Adna, für Ihre Geduld und Ihr Verständnis und für die überraschend guten Kochkünste, die sie in der letzten Phase der Diplomarbeit zu Tage gelegt hat. VI Inhaltsverzeichnis 1 Einleitung 2 Grundlagen aus der Geo-Informatik 2.1 Geo-Objekte und deren Modellierung . . . . . . . 2.1.1 Geometrie von Geo-Objekten . . . . . . . 2.1.2 Topologie von Geo-Objekten . . . . . . . . 2.1.3 Thematik von Geo-Objekten . . . . . . . . 2.1.4 Dynamik von Geo-Objekten . . . . . . . . 2.1.5 Modellierung von Geo-Objekten . . . . . . 2.2 Visualisierung von Geo-Objekten . . . . . . . . . 2.2.1 Der Begriff der Karte . . . . . . . . . . . . 2.2.2 Funktionalitäten eines GIS . . . . . . . . . 2.2.3 Graphische Darstellung von Geo-Objekten 5 . . . . . . . . . . 7 7 8 10 11 12 13 14 15 16 17 3 Grundlagen über Datenbanken 3.1 Datenbankentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Das Entity-Relationship-Modell . . . . . . . . . . . . . . . . . . . 3.3 Das relationale Datenmodell . . . . . . . . . . . . . . . . . . . . . 19 19 20 23 4 Softwaregrundlagen 4.1 Grundlagen zu Visual Basic . . . . . . . . . . . . 4.1.1 Die Bedienungselemente von Visual Basic 4.1.2 Der Aufbau von Visual Basic Programmen 4.1.3 Objektorientierte Programmierung . . . . 4.2 Datenzugriff . . . . . . . . . . . . . . . . . . . . . 4.2.1 ActiveX Data Objects . . . . . . . . . . . . . . . . . 28 28 28 30 31 32 33 5 Modellierung von Geo-Objekten 5.1 Konzeptuelle Modellierung . . . . . . . . . . . . . . . . . . . . . . 5.2 Abbildung auf Relationen . . . . . . . . . . . . . . . . . . . . . . 36 39 42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Ein Schichtenkonzept zur Visualisierung und Manipulation von Geodaten 46 6.1 Visualisierung von Geodaten . . . . . . . . . . . . . . . . . . . . . 46 1 Inhaltsverzeichnis 6.1.1 Schichtenkonzept . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 Wahl der Darstellung . . . . . . . . . . . . . . . . . . . . . Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 49 50 7 Architektur und Funktionalität des DataMap-Systems 7.1 Architektur und Komponenten . . . . . . . . . . . . . . . . . . . . 7.2 Oberfläche: Design und Funktionen . . . . . . . . . . . . . . . . . 57 57 61 8 Zusammenfassung und Ausblick 65 6.2 2 Abbildungsverzeichnis 2.1 2.2 2.3 2.4 Punkt als Vektor . . . . . . . . . . . . . . . . . . . . . . . . Geometrische Grundelemente im Vektor- bzw. Raster-Modell Layer-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . Raster-Modell: Fluss . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10 12 14 3.1 3.2 Ein konzeptuelles Schema . . . . . . . . . . . . . . . . . . . . . . Schwacher Entitätstyp . . . . . . . . . . . . . . . . . . . . . . . . 21 23 4.1 Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1 5.2 5.3 5.4 5.5 5.6 Entitätstyp Punkt . . . . . Entitätstyp Stadt . . . . . Entitätstyp Verbindung . . Entitätstyp Zuglinie . . . Entitätstyp Bundesländer Konzeptuelles Schema . . . . . . . . 40 40 41 42 42 43 6.1 6.2 6.3 Das Schichtenkonzept . . . . . . . . . . . . . . . . . . . . . . . . . Beispiel einer Fläche . . . . . . . . . . . . . . . . . . . . . . . . . Editieren einer Fläche . . . . . . . . . . . . . . . . . . . . . . . . 48 54 55 7.1 Oberflächendesign . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Tabellenverzeichnis 3.1 4 Relation in Tabellenform . . . . . . . . . . . . . . . . . . . . . . . 24 1 Einleitung Der Begriff Geo-Informationssytem (GIS), im engl. Sprachraum als Geographic Information Systems bezeichnet, ist Anfang der 60er Jahre zum ersten mal in der Literatur über den Aufbau eines raumbezogenen Informationssystems in Kanada zu finden. Seitdem ist eine rasante Entwicklung der GIS zu beobachten. Waren sie zu Beginn nur der Forschung oder dem Millitär vorbehalten, finden sich heutzutage zunehmend auch Formen eines GIS (Routenplaner) auch auf Computern privater Haushalte. Jedes Fachgebiet, welches Daten mit Raumbezug nutzt, kommt als potentieller Anwender in Frage. So sind GIS im Bereich der Geographie, Architektur oder Landschaftplanung unerläßlich. Das grundlegende Problem, das einer Verarbeitung von Daten im Bereich der Geoinformatik zugrundeliegt, ist die Vielfalt der Darstellungsmöglichkeiten von realen räumlichen Objekten. Es ist unmöglich alle Anwendungsbereiche, die durch Geo-Obejkte dargestellt werden können, in einem System zu vereinen. Dies hängt nicht zuletzt damit zusammen, dass an Geo-Objekte eine Vielzahl von Interessen und Themen angeknüpft werden können. Ziel dieser Diplomarbeit war es ein System zu entwickeln, das in der Lage ist, anhand der sich in der Datenbank befindlichen Daten eine interaktive Bildschrimkarte zu erzeugen. Dabei sollte nicht ein neues GiS entwickelt werden. Die Darstellung von Daten in visueller Form und damit eine möglichst benutzerfreundliche Anwendung sollte ermöglicht werden. Darüber hinaus sollte das System nicht bloß einen, sondern möglichst viele Anwendungsbereiche erfassen können, wobei hier das ICE/EC/IC- Streckennetz der Deutschen Bahn als Anwendungsbeispiel gedient hat. Gewünschte Änderungen sollen in die Datenbank übernommen und Anfragen über den Bildschirm direkt erstellt werden können. Ein Zusammenspiel zwischen der Datenbank und den visuellen Fähigkeiten sollte möglichst einfach erfolgen. Die bereits durch das VirtualMap realisierte Idee der Darstellung und Manipulation von Geo-Obejkten wurde hier für eine Neuentwicklung des Systems DataMap genutzt. Das DataMap-System sollte auf einem PC unter Microsoft Windows lauffähig sein und ist mit Visual Basic entwickelt worden. Als zugrundeliegendes Datenbanksystem wurde das in Microsoft Office enthaltene 5 1 Einleitung Access-System verwendet. Dabei wurde das System so entwickelt, dass jede andere relationale Datenbank benutzt werden kann. In Kapitel 2 werden die Grundlagen aus der Geo-Informatik erläutert. Dabei steht die Erklärung grundlegender Begriffe wie Geo-Objekte, Modellierung und Visualisierung im Vordergrund. Das nachfolgende 3. Kapitel befasst sich mit Datenbankgrundlagen, wobei vordergründig das Entity-Relationship und das relationale Datenmodell dargestellt werden. Das enwickelte Datenbankschema wurde mit Hilfe dieser beiden Modelle erarbeitet. Im 4. Kapitel wird die Entwicklungsumgebung Visual Basic vorgestellt und deren Komponenten erläutert. Dabei wird der Begriff der obejktorientierten Programmierung in Bezug zu Visual Basic erklärt. Des weiteren wird die für DataMap angewendete Datenzugriffsmethode (ADO) vorgestellt. In Kapitel 5 wird die Problematik der Modellierung von Geo-Objekten behandelt und ein ER-Schema für das obengenante Anwendungsbeispiel erzeugt. Anschließend erfolgt die Überführung dieses Schemas in ein relationales Schema. Mit der Visualisierung und Manipulation von Geodaten befasst sich das 6. Kapitel. Hier wird auch das Schichtenkonzept für den Aufbau einer Bildschrimkarte vorgestellt. Die Architektur des DatMap-Systems mit dazugehörigen Komponenten und deren Zusammenspiel wird in Kapitel 7 erläutert. Dabei werden auch das Design der Bildschrimkarte und die implementierten Funktionen erklärt. 6 2 Grundlagen aus der Geo-Informatik 2.1 Geo-Objekte und deren Modellierung Die Anwendungsgebiete der Geo-Informationssysteme (GIS) sind vielfältig. Dementsprechend finden sich in der Literatur viele Ansätze einer Definition. Der gemeinsamer Nenner dieser Definitionen ist das Verarbeiten geographischer Informationen in einer integrierten Umgebung. In [BZ 01] definieren R.Bill und M.Zehner Geo-Informationssysteme wie folgt: Ein Geo-Informationssystem ist ein rechnergestütztes System, das ” aus Hardware, Software, Daten und den Anwendungen besteht. Mit ihm können raumbezogene Daten digital erfasst und redigiert, gespeichert und reorganisiert, modelliert und analysiert sowie alphanumerisch und graphisch präsentiert werden.“ Raumbezogene Daten sind Informationen zu realen Objekten, die direkt oder indirekt mit einer Position auf der Erde verknüpft sind. Dies können beispielsweise Informationen über Städte, Länder u.a. sein. Je nach Fragestellung wird der Raumbezug unterschiedlich dargestellt. Im Verkehrswesen wird der Raumbezug über Angaben von zwei- oder dreidimensionalen Koordinaten angegeben. Diesen Angaben liegt ein Bezugssystem und eine primäre Metrik zugrunde. In der amtlichen Statistik wird der Raumbezug dagegen meist über eine sog. sekundäre Metrik angegeben. Beispiele für sekundäre Metrik sind Kennziffern (Postleitzahl, Telefonvorwahl usw.), Namen (Ortsname, Lagebezeichnung usw.) oder Adressen (Stadt, Hausnummer, Straßenname). Die Bindung von fachspezifischen Informationen an räumliche Bezugseinheiten oder an Objekte mit einem Raumbezug tritt dabei als typische Problematik auf. Als Geo-Objekttypen, d.h. als räumliche Objekte, an die die Informationen über reale Objekte gekoppelt werden, treten auf: • Punkt (Messstation, Stadt, Bergspitze etc.) • Linie (Zugverbindungen, Straßen, Flüsse etc.) • Fläche (Gemeindegebiet, Länder, Seen etc.) 7 2 Grundlagen aus der Geo-Informatik Auch für die Definition des Begriffs Geo-Objekt finden sich in der Literatur viele Ansätze. Prof.Dr Streit definiert in [Str 03] Geo-Objekte folgendermaßen: Ein Geo-Objekt ist das abstrakte Modell eines realen räumlichen ” Objektes, das hinsichtlich seiner räumlichen Lage (Geometrie), seiner Lagebeziehung zu anderen Geo-Objekten (Topologie), seiner fachlich relevanten Eigenschaften (Thematik) und seiner zeitlichen Veränderungen (Dynamik) gegenüber anderen Geo-Objekten unterschieden werden kann.“ Ein real räumliches Objekt beschreibt eine konkrete physisch, geometrisch oder begrifflich begrenzte Einheit der Natur. Ein Haus, eine Stadt oder ein Baum sind nur einige Beispiele eines real räumlichen Objekts. So kann auch ein Wagen, dessen aktuelle Position über GPS1 festgestellt werden könnte, als real räumliches Objekt betrachtet werden. Ein real räumliches Objekt wird durch ein GeoObjekt modelliert und über die Eigenschaften des Geo-Objekts (Geometrie, Topologie,Thematik und Dynamik) eindeutig definiert. Das abstrakte Modell einer Klimastation, zur Messung meteorologischer Parameter, ist das Geo-Objekt Punkt mit der: Geometrie - geographische Koordinaten beschreiben die räumliche Lage der Klimastation Topologie - Die Klimastation liegt im Stadtgebiet von Bonn Thematik - Meßdaten für Lufttemperatur Dynamik - Zeitliche Variationen der Lufttemperatur. 2.1.1 Geometrie von Geo-Objekten Die Geometrie eines Geo-Objektes umfasst die Angaben zur Lage des GeoObjektes auf der Basis eines eindeutigen räumlichen Bezugssystems (Lagekoordinaten). Ein räumliches Bezugssystem setzt als Bedingung eine definierte Metrik voraus. Die Metrik mißt den Abstand zwischen zwei Geo-Objekten z.B. den Abstand zwischen Punkt-Punkt oder Punkt-Fläche. Die Lagekoordinaten eines Geo-Objekts können durch geodätische Bezugssysteme wie geographische Koordinatensysteme, 3D-Koordinatensysteme [WGS84]2 , durch kartographische Bezugssystemen wie Gauß-Krüger-Koordinatensysteme oder UTM-Koordinatensysteme3 angegeben werden. Zur Abbildung von realen GeoObjekten in Geo-Informationssystemen bzw. zur Erfassung ihrer Geometrie sind 1 Global Positioning System: Navigations- und Vermessungsystem World Geodetic System 1984; Weltweites Referenzellipsoid als Basis der GPS-Vermessung 3 Universal Transverse Mercator Koordinaten 2 8 2.1 Geo-Objekte und deren Modellierung in einem Geo-Informationssystem ebenfalls Bezugsysteme erforderlich. Die Darstellung der Geo-Objekte erfolgt im sog. Vektormodell oder im sog. Rastermodell. Das Vektormodell hat den Punkt und die Linie als geometrische Grundelemente. Im gewählten räumlichen Bezugssystem wird ein Punkt durch die Angabe seiner Koordinaten eindeutig definiert. Die Bezeichnung Vektormodell entsteht aus der Möglichkeit, dass der Punkt als Endpunkt eines vom Nullpunkt ausgehenden, gerichteten Vektors aufzufassen ist (s. Abbildung 2.1). Abbildung 14: Abbildung 2.1: Punkt als Vektor Eine geradlinige oder geschwungene Kurve zwischen zwei Punkten ist eine Linie im geometrischen Sinne. Zur exakten geometrischen Beschreibung einer Linie muss eine mathematische Funktion verwendet werden (z.B Y = 8 + X 3 ). Eine solche mathematische Beschreibung realer Geo-Objekte ist sehr aufwendig und in der Regel nur näherungsweise möglich. Deshalb begnügt man sich mit einer vergröberten geometrischen Beschreibung der Linienform durch Zwischenpunkte und verbindende Geradenstücke. Je nach Komplexität der Linienform werden dabei mehr oder weniger solcher Zwischenpunkte verwendet. Auf diesen beiden Grundelementen, Punkt und Linie, lassen sich weitere komplexe Strukturen Die Topologie von Geoobjekten zur Modellierung von Geo-Objekten aufbauen. Eine zusammenhängende Folge mehrerer Punkte und Linien wird als Linienzug bezeichnet. Das Innere eines geschlossenen Linienzuges stellt eine Fläche im geometrischen Sinne dar. Bei der Darstellung von Geo-Objekten im Rastermodell ist die Rasterzelle das Grundelement. In Anlehnung an die Anwendungen in der Bildverarbeitung wird die Rasterzelle auch als Pixel bezeichnet. Sie besitzt eine rechteckige Form und überdeckt eine bestimmte Fläche. Die Genauigkeit der geometrischen Beschreibung eines Geo-Objektes hängt von der Basisgröße der Rasterzelle ab. Ein Punkt wird näherungsweise durch ein einzelnes Pixel dargestellt. Eine Linie wird durch entsprechende Anordnung zusammenhängender Pixel angenährt erfasst. Eine Fläche ist ebenfalls durch zusammenhängende Pixel darstellbar. 42 9 2 Grundlagen aus der Geo-Informatik TU Dresden a) Geometrisches Element Fachbereich Geowissenschaften Element Vektor Digital Buchroithner / Csaplovics / Schmidt GeoinformationsSysteme (1) Analog Raster Digital • Pixel Punkt x,y Koordinaten Linie x y-Koordinatenfolge Pixelfolge Fläche geschloss. x y-Koordinatenfolge Pixelfläche Analog 1) Einführung 2) Datentypen 3) Hard- & Software 4) Datenerfassung 5) Datenmodellierung b) Graphische Repräsentation 6) Datenanalyse 7) Präsentation 8) Beispiele & Trends Vektor • a Folie 65 von 88 Raster b c a' b' c' Abb.: Geometriedaten und deren graphische Ausgestaltung Abbildung 2.2: Geometrische Grundelemente im Vektor- bzw. Raster-Modell 2.1.2 Topologie von Geo-Objekten TU Dresden 2.1 Geometriedaten Fachbereich Die räumliche Beziehung von Geo-Objekten zueinander wird durch die Topologie Geowissenschaften gekennzeichnet. Diese ist stets ein gemeinsames Charakteristikum von zwei oder Buchroithner / Csaplovics / Schmidt mehreren Geo-Objekten. Als zentrale Konzepte sind zu nennen: • Vektoren bevorzugt für topologische Punkt- und Liniendarstellungen genutzt (Flurstück: Verbindungslinien vektoriell, Grenz- Geoinformations• Nachbarschaften liniennetzwerk) Systeme (1) • Rasterdaten eignen sich am besten für • Überlagerungen bzw. Überschneidungen 1) Einführung 2) Flächendarstellungen (Fernerkundung: stets Raster) • Teilmengenbeziehungen. Datentypen • Topologie: - muss in der Vektorwelt explizit angegeben werden In einem zweidimensionalen Raum sind zwischen den drei geometrischen Grund4) Datenerfassung - in der Rasterwelt durch die zeilen- und formen Punkt, Linie und Fläche, folgende topologische Beziehungen möglich: 5) Datenmodellierung spaltenweise Anordnung gegeben 3) Hard- & Software 6) Datenanalyse 1. Zwei Flächen benachbart, falls sie einegemeinsam gemeinsame • sind Rasterund Vektorwelt existieren in Grenze (mindestens gemeinsamen Grenzpunkt) besitzen. (Deutschland und Frankreich haraumbezogenen Informationssystemen. Beispiele &ben Trends eine gemeinsame Grenze und sind deshalb benachbart). 7) Präsentation einen 8) 2. Zwei Linien sind benachbart, falls der Endpunkt der einen mit dem Anfangspunkt der anderen Linien identisch ist. (Die Zugstrecke Köln-Bonn ist Folie 66 von 88 mit der Zugstrecke Bonn-Siegburg benachbart). 3. Zwei Punkte sind benachbart, wenn sie durch eine Strecke miteinander verbunden sind, wobei die Nachbarschaftsbeziehungen auch inhaltlich definiert 10 2.1 Geo-Objekte und deren Modellierung werden können. So sind bspw. A und B benachbarte Punkte, wenn sie direkt durch eine Strecke mit einer bestimmten Eigenschaft verbunden sind (z.B. Verbindung zweier Städte durch eine ICE-Linie). 4. Zwei Objekte überlagern bzw. schneiden sich, wenn sie (mindestens) einen gemeinsamen Punkt besitzen. 5. Eine Teilmengenbeziehung liegt z.B. dann vor, wenn ein Punkt auf einer Linie oder einer Fläche liegt oder wenn eine Fläche eine Teilfläche oder eine Linie enthält. 2.1.3 Thematik von Geo-Objekten Ein Geo-Objekt besitzt immer eine Thematik. Sie gibt Aufschluß über die inhaltliche Bedeutung des Geo-Objekts. Die Geometrie und die Topologie sagen über eine Linie auf einer Straßenkarte aus, dass sie eine bestimmte Lage und Länge hat, sich schneidet usw. Demgegenüber trägt die Thematik die Bedeutung der Linie z.B. als Autobahn, Bundesstrasse, Landstrasse usw. Die Thematik ist im allgemeinen durch mehrere Attribute (Merkmale) gekennzeichnet. Die Attribute können in unterschiedlichen Messskalen gemessen werden: 1. Nominalskala: Die Attributwerte werden nur durch Namen unterschieden. 2. Ordinalskala: Die Attributwerte werden durch Ziffern oder Zeichen mit einer definierten Ordnungsrelation beschrieben. 3. Metrische Skala: Die Attributwerte werden durch reelle Zahlen beschrieben. Die Beschreibung, Bearbeitung und Speicherung verschiedener Thematiken von Geo-Objekten in einem Geo-Informationssystem, kann durch das Layer-Modell oder durch das Objekt-Modell erfolgen. Das Layer-Modell (Schichten, Ebenen) ist ein klassisches Konzept, das in der Kartographie bei der Herstellung topographischer und thematischer Karten entwickelt wurde. Beim Layer-Modell werden die Geometriedaten der Objekte und deren Attribute streng nach der verschiedenen thematischen Bedeutung getrennt und in verschiedenen Layer (Ebene) gehalten. In einem Layer befinden sich nur Geo-Objekte gleicher geometrischer Dimension und gleicher Klassenzugehörigkeit. Bei einer konkreten Anwendung werden dann je nach fachlichem Bedarf ausgewählte Layer deckungsgleich übereinander gelegt. Die Gesamtsicht all dieser Layer ergibt dann den thematischen Rahmen der Untersuchung (s. Abbildung 2.3). Die Vorteile des Layer-Modells sind: • Thematische Übersichtlichkeit 11 44 2 Grundlagen Abbildungaus 16: der Geo-Informatik Abbildung 2.3: Layer-Modell • Layerspezifische Datenerfassung, Aktualisierung und Zugriffsrechte • Einfache und schnelle Suche nach Teil-Thematiken. Das Objekt-Modell ist ein neuartiges Konzept. Dieses orientiert sich am Prinzip objektorientierter Datenmodelle. Grundlage objektorientierter Datenmodelle ist die Abstraktion der Realität in Objekte, Klassen und Beziehungen. Geo-Objekte werden als Objekte mit eigener Identität modelliert. Jedes Objekt besitzt eigene Attributwerte zur Festlegung der Geometrie, Topologie, Thematik und Dynamik, sowie eigene Methoden. Dabei sind Objekte stets Instanzen der sie erzeugenden Klasse. Die Klasse beschreibt die Struktur und das Verhalten der ihr gehörenden Objekte. Die Kommunikation zwischen Klassen und deren Objekten erfolgt über Beziehungen. Kapselung von Objekten, Vererbung (Unterklassen werden von einer Klasse abgeleitet) und Polymorphismus sind weitere Merkmale objektorientierter Datenmodelle. Die Vorteile des Objekt-Modells sind: • Schnelle Suche nach einem bestimmten Objekt • Einfache Verwendung der Objekte • Individualität der Objekte wird betont. 2.1.4 Dynamik von Geo-Objekten Im Hinblick auf ihre Thematik können sich Geo-Objekte auch im Zeitablauf verändern. Die Messstationen, die Parameter zur Wetterbeobachtung erfassen, messen im Jahresverlauf unterschiedliche Werte von z.B. Lufttemperatur, Luftdruck oder Niederschlag. Auch der Ertrag von Weinanbaufläche kann sich im Verlauf mehrerer Ernteperioden ändern. Die aufgeführten Beispiele haben die Gemeinsamkeit, dass sich jeweils ihre Lage und ihr Raumbezug nicht ändern. Diese GeoObjekte, d.h. die Messstationen und die einzelne Weinanbauflächen, besitzen im 12 2.1 Geo-Objekte und deren Modellierung Zeitablauf (i.d.R) konstante Lagekoordinaten bzw. Grenzlinien. Eine zeitliche Variabilität besitzen diese Geo-Objekte lediglich hinsichtlich ihrer Thematik. Demgegenüber können Geo-Objekte im Zeitablauf auch eine räumliche Variabilität aufweisen, die ihre Lage und ihre Ausdehnung verändert. 2.1.5 Modellierung von Geo-Objekten Eine wichtige theoretische Grundlage der Geoinformatik ist die Modellierung von Geo-Objekten. Wie in der Definition des Begriffes Geo-Objekt beschrieben, werden in der Geoinformatik nicht die realen Raumobjekte selbst, sondern ihre gedanklichen Abbilder, also Modelle der Realität betrachtet. Die Modellierung eines realen Raumobjekts geschieht durch Abstraktion, d.h. durch Vereinfachung und Verallgemeinerung der Realität. Dabei werden nur diejenigen Strukturen, Funktionen und Beziehungen betrachtet, die für die Lösung eines fachspezifischen Problems unbedingt erforderlich sind. Es ist geläufig, daß Objekte auf der Erdkugel ohne weiteres in Kartenform dargestellt werden können. Hier erfolgt bereits eine Abstraktion vom 3- zum 2-dimensionalen. Das wichtigste Abstraktionsmittel der Modellierung ist die Zusammenfassung (Klassifikation) ähnlicher Objekte zu einem übergeordneten Typ (Klasse) unter Vernachlässigung spezieller Eigenschaften (Generalisierung). Ein Teich und ein See sind beide vom Typ stehendes Gewässer. Vernachlässigt wird dabei z.B. die unterschiedliche Größe und Genese von Teichen und Seen. Wesentlich ist nur noch, dass der Wasserkörper nicht dauerhaft im fließenden Zustand ist. Die Zusammenfassung mehrerer Teile zu einem Ganzen ist ein anderes gedankliches Mittel zur Abstraktion. Ein Kreis bspw. hat mehrere Gemeinden, wobei die Menge der zu diesem Kreis gehörenden Gemeinden semantisch zum Kreis zusammengefasst wird. Auch die Darstellung eines realen Raumobjektes kann durch eine ganze Reihe von Möglichkeiten erfolgen. Als Beispiel sei hier der Verlauf eines Flusses aufgeführt. Das einfache Modell der Geometrie dieses Flusses ist eine gerade Linie, die den Anfangs- und den Endpunkt verbindet. Das Modell dieses Flusses als Linienzug, also eine Folge von Punkten und Linien, ist ebenfalls möglich. Nach dem Raster-Modell kann das Modell des Flusse auch als Fläche betrachtet werden (s. Abbildung 2.4). Die Art der Modellierung hängt von sehr vielen Faktoren ab. Entscheidend hierbei sind die Fragestellungen, der Arbeitsaufwand oder etwa die Analysemethode. Bei der Analyse und Modellierung von Raumobjekten gibt es einige grundlegende Aspekte, die bei räumlichen Fragestellung zu beachten sind. Solche grundlegenden Aspekte sind die räumliche Dimension, die räumliche Auflösung und die räumliche Varianz. 13 ektklassen Abbildung 11: 2 Grundlagen aus der Geo-Informatik Abbildung 2.4: Raster-Modell: Fluss Ein Geo-Objekt kann von unterschiedlicher Dimension sein bzw. in unterschiedlicher Dimensionierung modelliert werden. Mit Dimension eines Geo-Objektes ist die Anzahl der voneinander unabhängigen Richtungen des Raumes, die zur geometrischen Modellierung des Raumobjektes verwendet werden, gemeint. Im Sinne der geometrischen Modellierung ergeben sich unterschiedliche Dimensionen des Geo-Objektes: • Punkt: 0-dimensional. Diese haben keine Längen- oder Flächenausdehnung und werden für die Darstellung z.B. von Bohrpunkten oder Meßstationen benötigt. • Linie: 1-dimensional. Linien haben zwar eine Länge, aber keine Flächenausdehnung. Sie beschreiben z.B. Fließgewässer, Straßenzüge oder Kanäle. • Fläche: 2-dimensional. Sie besitzt eine Flächengröße. Diese beschreibt z.B. Stadtgebiete, Biotope, Ackerflächen. Je nach Fragestellung (Abstraktionsgrad) kann die Dimension eines Raumobjektes bei der Modellierung zum Geo-Objekt verringert oder vergrößert werden. Einem bestimmten Raumobjekt kann man also verschiedene Geo-Objekte unterschiedlicher Dimensionalität zuordnen. Das Gebiet einer Stadt wird bei kleinmaßstäbiger Modellierung auf einen Punkt reduziert und bei großmaßstäbiger Modellierung dagegen als Fläche modelliert. Eine Straße wird bspw. für ein RoutingVerfahren als linienhaftes Objekt modelliert, für Tiefbau-Zwecke, bei großmaßstäbiger Betrachtung, hingegen als Fläche. 2.2 Visualisierung von Geo-Objekten In einem GIS werden abgespeicherte Daten in alphanumerischer und graphischer Form dargestellt. Der Schritt der Visualisierung ist insoweit von enormer Bedeu- 14 2.2 Visualisierung von Geo-Objekten tung, als die Daten in der raumbezogenen Datenbank alleine nutzlos sind, wenn sie nicht verschiedenartig präsentiert und ausgetauscht werden können. Die Daten eines GIS können zur Präsentation auf verschiedene Weise visualisiert oder transferiert werden: • Nichtgraphische Formen wie Tabellen und Berichte • Passive Graphik in Form von Karten • Digitaler Datenaustausch auf rechnerlesbaren Speichermedien oder via Netzwerk • Interaktive Graphik am Bildschirm im Form von Karten Wichtig dabei ist, dass die Präsentation in einer Form erfolgt, die für einen Benutzer verständlich und lesbar ist. Die am häufigsten genutzte Präsentationsfrom der Daten eines GIS ist die letztgenannte, d.h. die interaktive Graphik am Bildschirm im Form von Karten. Im Hinblick auf die Übermittlung von Informationen ist die Effizienz von Graphiken bekannt. Sie hängt mit den visuellen Fähigkeiten des Menschen zusammen. Nahezu die Hälfte der Neuronen des menschlichen Gehirns sind mit dem Sehen assoziiert. Die graphischen Zusammenhänge können weit schneller aufgenommen werden als andere, etwa durch Schrift oder Sprache weitergegebenen Informationen. Ein Bild sagt mehr als tausend Worte! 2.2.1 Der Begriff der Karte Eine allgemeingültige Definition für die Metapher Karte“ ist im Hinblick auf ” die Vielfalt ihrer Anwendungsgebieten sehr schwierig. Im Vorcomputerzeitalter war die Karte als 2-dimensionale, graphische Abstraktion bzw. als Projektion eines Weltausschnittes definiert. Karten werden ausschließlich im geographischen Kontext betrachtet. Nach G.Hake in [BZ 01] wird der Begriff Karte wie folgt definiert: Die Karte ist eine maßstäblich verkleinerte, generalisierte und erläu” terte Grundrissdarstellung von Erscheinungen und Sachverhalten der Erde, der anderen Weltkörper und des Weltraumes in einer Ebene.“ Das Zeitalter der graphikfähigen Rechner und die Digitalisierung von Daten eröffneten in den letzten Jahren völlig neue Möglichkeiten im Umgang mit Karten. Die Karte ist nicht mehr nur statische Graphik. Informationen, die in einer Karte dargestellt werden, können sich dynamisch ändern. Darüber hinaus kann ein Benutzer, der früher lediglich Betrachter einer Karte war, den Zustand und die dargestellten Informationen interaktiv beeinflussen oder sogar verändern. Die Definiton der Karte der Internationalen Kartographischen Vereinigung (ICA) [BZ 01] spiegelt mehr den heutigen Sinn der Karte wieder : 15 2 Grundlagen aus der Geo-Informatik Die Karte ist eine ganzheitliche Darstellung und intellektuelle Ab” straktion der geographischen Realität, die für einen bestimmten Zweck vermittelt werden soll, wozu die relevanten geographischen Daten in ein Endprodukt umgewandelt werden, das visuell, digital oder betastbar sein soll.“ Die gespeicherten Daten eines GIS werden durch eine Karte visuell dargestellt. Dabei ist die Karte ein wesentlicher Informationsträger und gleichzeitig dient sie als Medium zur Kommunikation. Aus der obigen Definition ist besonders hervorzuheben, dass die Karte eigentlich ein Endprodukt ist. Im Gegensatz dazu wartet der GIS-Datenbestand auf eine erneute Analyse zu einem bisher nicht vorgesehenem Zweck. Die Karte ist daher immer als Zwischenstadium und nicht als Endprodukt zu betrachten. 2.2.2 Funktionalitäten eines GIS Wie schon in 2.2 erwähnt wurde, ist die am häufigsten genutzte Präsentationsform eines GIS die Interaktive Graphik am Bildschirm im Form von Karten. Damit wird dem Benutzer eines GIS die Interaktion mit dem System geboten. Das Wort Interaktion“ ist lateinisch und bedeutet: ” Wechselbeziehung zwischen aufeinander ansprechenden Partner.“ ” Anforderungen, die ein Benutzer an das GIS stellt, ist eine benutzerfreundliche Anwendung. Es soll sehr schnell auf seine Interaktion reagieren können und gleichzeitig die Unterstützung beim Zugang zu allen Daten, unabhängig davon, ob der Benutzer nun von der Graphikseite oder Datenbankseite her agiert, bieten. Wenn der Zugang von der Graphikseite her erfolgt, ist der Anfrageraum die Graphik und der Suchraum ist dann die Datenbank. Umgekehrt ist es hingegen, wenn der Zugang von Datenbankseite her erfolgt. Der Anfrageraum ist die Datenbank und der Suchraum die Graphik. Für die Unterstützung bei der Interaktion stellt ein GIS ein Menge von Grundbefehlen zur Verfügung. Die wesentlichen Funktionalitäten eines GIS sind nach R.Bill unterteilt in: • Windowmanagement • Displaymanagement • Interaktionsmanagement Mit Window“ ist die Gesamtdarstellungsfläche eines Bildschirmes gemeint. Als ” Standardfunktionalitäten sind der Zoom (Vergrößern/Verkleinern) und der Pan (Verschieben/Neuzentrieren) zu nennen, die den gesamten visualisierten Datenstand manipulieren können. Die Pan-Funktion verschiebt den gesamten Bildschirminhalt und zentriert ihn an einer aktuellen Cursorposition neu. Der Datenbestand wird dadurch graphisch in verschiedene Richtungen durchgeblättert. Bei der Zoom-Funktion ist zwischen dem geometrischen Zoom und dem logischen 16 2.2 Visualisierung von Geo-Objekten Zoom zu unterscheiden. Geometrisches Zoomen präsentiert alle momentan angezeigten Informationen in einem Fenster je nach gesetztem Zoomfaktor (Vergrößerung odeer Verkleinerung). Beim logischen Zoomen werden bei einer Vergrößerung zusätzliche (d.h neue, bisher nicht dargestellte) Informationen angezeigt. Bei einer Verkleinerung werden dargestellte Informationen zum Teil unsichtbar gemacht. Das Displaymanagement bezeichnet alle Funktionen, die selektiv auf dem Datenbestand aktiviert werden können und die Graphik verändern. Das sind in erster Linie folgende Funktionen: 1. Display: graphische Anzeige der Objekte 2. Detectability: entscheidet, ob ein sichtbares Objekt anwählbar ist 3. Verify: Hervorheben des angewählten Objekts 4. Visibility: Objekte werden sichtbar bzw. unsichtbar gemacht. Die Reihenfolge der Anzeige von Objekten kann in einer Liste der Displayprioritäten festgelegt werden. Dadurch überdecken die Objekte mit der höheren Priorität die Objekte mit niedrigerer Priorität. Das Interaktionsmanagement bezeichnet die Funktionen, die während der Datengewinnung, der Datenfortführung und der selektiven Datenanalyse zur Geltung kommen. Es handelt sich um folgende Funktionen: 1. Insert: Erzeugung neuer Objekte 2. Delete: Löschen von Objekte 3. Redo: Wiederherstellungsoption 4. Update: Objekteigenschaften ändern 2.2.3 Graphische Darstellung von Geo-Objekten Die graphische Darstellung von Geo-Objekten muss so konzipiert sein, dass die hinter den numerischen Daten stehenden Informationen in der Graphik spontan wahrgenommen und im gewünschten bzw. richtigen Sinn verstanden werden können. So teilt z.B. die Farbe und die Größe graphischer Darstellung eines Geo-Objektes sehr viel an inhaltlicher Information mit. Die blaue Farbe ist für Gewässer reserviert. Die Größe eines Kreisringes auf einer Landkarte drückt die Einwohnerzahl einer Stadt aus. 17 2 Grundlagen aus der Geo-Informatik Mit der graphischen Semiologie (d.h Syntax; Semantik und Pragmatik) hat Bertin (1982) eine grundlegende Theorie der graphischen Darstellung von Daten entwickelt. Für die drei graphischen Grundelemente (Punkt, Linie und Fläche) der zwei-dimensionalen Darstellung auf Papier und Bildschirm unterscheidet er sieben graphische Variablen zur Modifikation. Die graphischen Variablen richten sich dabei an der jeweils zu vermittelnden Information: • Position • Größe • Helligkeit • Muster • Farbe • Richtung • Form Jede dieser graphischen Variablen hat spezielle Fähigkeiten zur Visualisierung von Informationen. Die Größe zeigt unterschiedliche Quantitäten und eignet sich zum Bewerten durch vergrößern oder verkleinern. Die Form hingegen zeigt unterschiedliche Qualitäten und erleichtert die Erkennung von dargestellten Objekten. Durch verschiedene graphische Darstellungsformen wird bspw. unterschieden, ob es sich bei der Visualisierung um ein Haus oder um einen Fluss handelt. Die Farbe ist in hohem Maße für Assoziationen geeignet. Durch einen Farbton werden verschiedene Qualitäten beschrieben. Eine Grün gefärbte Fläche assoziert bspw. einen Wald oder eine Wiese, eine blaue Fläche assoziert einen See oder das Meer. Durch die Farbsättigung beschreibt die Farbe auch Quantitäten. Tiefere Teile des Meeres können bspw. durch Dunkelblau und weniger tiefe Teile durch etwas helleres Blau dargestellt werden. Durch die Möglichkeit mehrere graphische Variablen zur Darstellung eines Objektes zu bündeln, erhält man mehr Informationen über das dargestellte Objekt. So wird bspw. im Diercke-Weltatlas [Die 88] die Einwohnerzahl der Orte (Städte) durch die Bündelung von Form, Größe und Farbe dargestellt. 18 3 Grundlagen über Datenbanken Dieses Kapitel orientiert sich an der Darstellung in [Kem 95]. 3.1 Datenbankentwurf Der Datenbankentwurf dient der Abbildung eines Ausschnitts der realen Welt (der sog. Miniwelt) auf ein Datenbankschema. Dieser Prozess ist in vier Phasen unterteilt: 1. Anforderungsanalyse 2. konzeptueller Entwurf 3. logischer Entwurf 4. physischer Entwurf. In jeder Phase werden bestimmte Ergebnisse erarbeitet, die in der nächsten weiterverwendet werden. Hierzu stehen auf jeder Ebene verschiedene Arbeitstechniken zur Verfügung. Die vier Ebenen müssen nicht streng sequentiell ablaufen. Es finden vielmehr Rücksprünge zwischen den einzelnen Ebenen statt, um entdeckte Fehler zu beheben oder bessere Lösungen zu schaffen. Durch die Ebene der Anforderungsanalyse werden relevante Aspekte der zu modellierenden realen Welt von unwichtigen abgegrenzt. Es werden Informationen über die zu modellierende reale Welt gesammelt. Diese Informationen werden auf ihre Verständlichkeit und Eindeutigkeit überprüft und danach klassifiziert, d.h. Information werden Objekten, Beziehungen, Operationen und Ereignissen zugeordnet. Das Ergebnis dieser Analyse ist ein Pflichtenheft (Anforderungsspezifikation). In diesem wird sowohl festgehalten, welche Objekte der realen Welt relevant sind, als auch deren Eigenschaften (Attribute) und Beziehungen zueinander. Die verwendeten Techniken sind u.a. Gespräche mit zukünftigen Anwendern oder Fragebögen. Die Überführung der noch weitgehend umgangssprachlich formulierten Anforderungen aus der Anforderungsanalyse in eine formale Spezifikation ist die Aufgabe 19 3 Grundlagen über Datenbanken des konzeptuellen Entwurfs. Dabei entsteht ein implementierungsunabhängiges, semantisches oder sog. konzeptuelles Schema. In diesem Schema wird in der Regel mit graphischer Notation beschrieben, welche Objekte durch Daten zu modellieren sind, durch welche Attribute diese Objekte zu kennzeichnen sind und in welcher Beziehung sie zueinander stehen. Für diese Phase gibt es mehrere mögliche Datenmodelle: • Entity-Relationship-Modell • Semantische Datenmodelle • Funktionale Datenmodelle • Objektorientierte Entwurfsmodelle. Auf der logischen Ebene entsteht das sog. logische Schema. Hier wird eine Datenbankanwendung in das Datenmodell des zum Einsatz kommenden DBMS modelliert. Der Logischen Ebene liegen unterschiedliche Datenmodelle zugrunde: • Netzwerkmodelle • Hierarchische Datenmodelle • Relationale Datenmodelle • Objektorientierte Datenmodelle (wie z.B. ODMG-93-Modell1 ). Der physische Entwurf ist der letzte Schritt eines Datenbankentwurfs. Hier erfolgt die Abbildung des Implementationsschemas auf ein DBMS. Primäres Ziel ist die Erhöhung der Leistungsfähigkeit der Datenbankanwendung. Hierzu werden z.B. Indexstrukturen, Cluster, Zeiger usw. benutzt. 3.2 Das Entity-Relationship-Modell Das am häufigsten benutzte Modell für den konzeptuellen Entwurf ist das Entity-Relationship-Modell (ER-Modell; Gegenstands-Beziehungs-Modell). Das ER-Modell wurde 1976 von Peter Chen [Che 76] entwickelt. Die elementaren Bausteine des ER-Modells sind, wie der Name schon sagt, die Entitäten (Entities, Gegenstände) und die Relationships (Beziehungen). Für die graphische Darstellung des ER-Modells wird die 1986 eingeführte Kanten-Notation verwendet. Eine Entität ist ein individuelles und identifizierbares Exemplar von Dingen, Personen oder Begriffen der realen Welt oder der Vorstellungswelt. Der Student, der 1 Object Database Management Group 20 3.2 Das Entity-Relationship-Modell Arzt, aber auch das Auto, der Sturm, die Fähigkeit, sind einige Beispiele für Entitäten. Entitäten mit gleichen Eigenschaften können unter einem eindeutigen, gemeinsamen Oberbegriff zu einem Entitätstyp zusammengefasst werden. Ein Student ist eine Entität, alle Studenten werden zum Entitätstyp Studenten zusammengefasst. Die graphische Darstellung des Entitätstyps ist ein Rechteck, das den Name des Entitätstyps enthält. Abbildung 3.1 zeigt die Entitätstypen Leser und Bücher. LsNr. Name Leser Adresse ausleihen datum Bücher BuchNr. Titel Author Abbildung 3.1: Ein konzeptuelles Schema Logische Verknüpfungen von einem oder mehreren Entitäten werden durch Beziehungen (Relationships) beschrieben. Zwischen Mann und Frau, als zwei verschiedenen Entitäten, besteht eine logische Verküpfung bzw. Beziehung, z.B. ver” heiratet“. Analog zu Entitätstypen werden auch die gleichartigen Beziehungen zu Beziehungstypen (Relationshiptyp) zusammengefasst. Eine Raute, die den Namen des Beziehungtyps enthält, ist die graphische Darstellung eines Beziehungstyps. Die Verbindung zwischen einem Beziehungstyp und den entsprechenden Entitätstypen wird durch Kanten repräsentiert (s. Abbildung 3.1). Im Unterschied zu Entitäten können Beziehungen nur in Verbindung mit den betreffenden Entitäten existieren. Je nach Anzahl der Entitätstypen, die jeweils in einer Beziehung stehen, unterscheidet man folgende Beziehungsarten: 1. rekursive Beziehung: Ein Entitätstyp steht mit sich selbst in Beziehung. 2. binäre Beziehung: Beziehungen zwischen zwei unterschiedlichen Entitätstypen. 3. n-stellige Beziehung: Beziehungen zwischen mehreren Entitätstypen. (n > 2). Die fachlichen Eigenschaften, die allen Entitäten eines Entitätstyps bzw. allen Beziehungen eines Beziehungstyps gemeinsam sind, werden durch Attribute beschrieben. Ein Attribut wird durch seinen Namen und seinen Wertebereich definiert. Der Wertebereich wiederum gibt die Menge aller möglichen bzw. 21 3 Grundlagen über Datenbanken zugelassenen Werte für ein Attribut an. Die graphische Darstellung des Attributs ist ein Kreis oder ein Oval. Durch die Kanten wird es dem Entitätstyp bzw. dem Beziehungstyp zugeordnet (s. Abbildung 3.1). Die Identifizierung einer Entität innerhalb seines Entitätstyps erfolgt über den sog. Schlüssel . Ein Schlüssel ist eine ausgezeichnete, minimale, identifizierende Attributskombination. Sehr oft ist es möglich, ein einzelnes Attribut als Schlüsselattribut zu bezeichnen. Das Schlüsselattribut wird wiederum durch Unterstreichung gekennzeichnet (s. Abbildung 3.1). Wie schon erwähnt, beschreiben Beziehungen eine logische Verknüpfungen zwischen Entitäten. Beziehungstypen können aber auch hinsichtlich ihrer Funktionalität charakterisiert werden. Dabei gibt die Funktionalität einer Beziehung an, mit wie vielen anderen Entitäten eine Entität eines Entitätstyps in einer konkreten Beziehung stehen kann bzw. muss. Ein binärer Beziehungstyp R zwischen Entitätstypen A und B heißt: • 1:1-Beziehung, falls jeder Entität aus A höchstens eine Entität aus B zugeordnet ist, und umgekehrt jeder Entität aus B maximal eine Entität aus A. • 1:N-Beziehung, falls jeder Entität aus A keine, genau eine oder mehrere Entitäten aus B zugeordnet sein können, aber jede Entität aus B mit maximal einer Entität aus A in Beziehung stehen kann. • N:1-Beziehung, analog zu 1:N. • N:M-Beziehung, falls jeder Entität aus A beliebig viele Entitäten aus B zugeordnet sein können und umgekehrt jede Entität aus B mit beliebig vielen Entitäten aus A in Beziehung stehen kann. Für alle Entitäten gilt, daß sie innerhalb ihres Entitätstyps über die Schlüsselattribute eindeutig identifizierbar sind. Sie sind außerdem in ihrer Existenz von der Existenz einer anderen Entität unabhängig. Solche Entitäten werden regu” lär“ oder stark“ bezeichnet. In der Realität existieren oft Entitäten, bei denen ” dies nicht gilt. Solche Entitäten werden als schwache Entitäten bezeichnet. Die schwachen Entitätstypen benötigen für ihre Existenz die Beteiligung an einer 1:N Beziehung mit einem (regulären) Entitätstyp. Die Entitäten eines schwachen Entitätstyps sind nur in Kombination mit dem Schlüsselattribut des betreffenden (regulären) Entitätstyps eindeutig identifizierbar. Die graphische Darstellung für schwache Entitätstypen ist ein doppelt umrandetes Rechteck. Der existenzbestimmende Beziehungstyp wird ebenfalls durch Verdoppelung der Raute und der von dieser Raute zum schwachen Entitätstyp ausgehenden Kante markiert. 22 3.3 Das relationale Datenmodell Zug 1 hat N Wagon Abbildung 3.2: Schwacher Entitätstyp Abbildung 3.2 enthält das Beispiel des schwachen Entitätstyps Wagon. Die Entitäten diesen Typs sind existenzabhängig von dem Zug, dem ensprechende Wagons gehören. 3.3 Das relationale Datenmodell Auf der logischen Ebene werden Datenbankanwendungen mit den Konzepten (d.h. in dem Datenmodell) des zum Einsatz kommenden Datenbanksystems modelliert. Das relationale Datenmodell wurde 1970 von E.F. Codd entwickelt und mit Hilfe der Mengentheorie beschrieben. Dieses Modell bildet die Basis für relationale Datenbanken. Im Gegensatz zur satzorientierten Verarbeitung von Daten, wie das beim Netzwerkmodell und dem hierarchischen Modell der Fall ist, zeichnet sich das relationale Datenmodell durch mengenorientierte Verarbeitung von Daten aus. Das Grundelement des relationalen Datenmodells ist die Relation. Eine Relation R wird definiert als eine Teilmenge des kartesischen Produktes über den Wertebereich (Domänen) der Attribute des Relationsschemas: R ⊆ dom(A1 ) x · · · x dom(An ) Ein Relationsschema beschreibt die Struktur einer Relation und besteht aus einer Menge von Attributen. Ein Element der Menge R wird als Tupel bezeichnet. Innerhalb einer Relation, wird jedes Tupel durch ein Attribut bzw. eine Kombination von Attributen eindeutig identifiziert. Solche Attribute werden wiederum Primärschlüssel genannt. Meistens erfolgt die visuelle Reprästentation einer Relation in Form einer Tabelle. Dabei repräsentiert jede Spalte ein Attribut und jede Zeile ein Tupel. Das zugehörige Relationsschema hat die Form: Leser: {[LsNr : integer, Name : string, Adresse : string]} Für den Enwurf eines relationalen Schemas existieren zwei alternative Methoden: 1. Zunächst wird ein ER-Schema entwickelt. Daraus wird ein relationales Schema mit Entitäts- und Beziehungs-Tabellen abgeleitet. 23 3 Grundlagen über Datenbanken Leser LsNr. Name 1001 Adna Hadziresic 1002 Ernest Hadziresic .. .. . . Adresse Eifelstr. 26 Eifelstr. 26 .. . Tabelle 3.1: Relation in Tabellenform 2. Die funktionalen Abhängigkeiten aus der Anforderungsanalyse werden gesammelt. Daraus wird ein relationales Schema in Normalform erzeugt. Da die Überführung vom konzeptuellen Schema in das relationale Schema fast automatisch erfolgen kann, wird die erste Methode bevorzugt. Die Überführung geschieht nach folgenden Regeln: • Für jeden Entitätstyp des ER-Modells wird eine Relation (Tabelle) erstellt. Diese Relation enthält alle Attribute eines Entitätstyps. • Auch für jeden Beziehungstyp wird eine Relation erstellt. Dabei enthält die Relation als Attribute alle Primärschlussel der beteiligten Entitätstypen und alle Attribute, die zu dem Beziehungstyp gehören. Diese Regeln, angewendet auf das ER-Diagramm in Abbildung 3.1, ergeben folgendes relationales Schema: Leser : {[LsNr : integer, Name : string, Adresse : string]} Bücher : {[BuchNr : integer, Titel : string, Author : string]} ausleihen : {[LsNr : integer, BuchNr : integer, datum : date]} Die Attribute der aus einem Beziehungstyp entstandenen Relation, werden als Fremdschlüssel bezeichnet. Sie beziehen sich auf Primärschlüssel der beteiligten Entitätstypen. Im obigen Beispiel sind es LsNr und BuchNr in der Relation ausleihen. Die Relation ausleihen stellt eine 1:N-Beziehung dar. Da ein Buch nur von einem Leser ausgeliehen werden kann, hat die Relation ausleihen den Primärschlüssel BuchNr . Dies ergibt sich auch aus der funktionalen Sichtweise der Beziehung. Eine binäre 1:1-, 1:N, und N:1-Beziehung, zwischen Entitätstypen E1 und E2 , kann als partielle Funktion angesehen werden. Dabei ist die Richtung“ ” der Funktionen im Fall einer 1:1-Beziehung nicht wichtig (R : E1 → E2 oder R : E2 → E1 ). Bei einer 1:N-Beziehung ist hingegen die Richtung“ zwingend ” und geht vom N“-Entitätstyp zum 1“-Entitätstyp. Analoges gilt für N:1 Bezie” ” hungen. Für die Relation ausleihen bedeutet das: ausleihen : Bücher → Leser 24 3.3 Das relationale Datenmodell Dieses relationale Schema läßt sich weiter verfeinern. Dabei werden die Relationen, die für die Modellierung von Beziehungstypen eingeführt wurden, eliminiert. Die Elimination erfolgt durch Zusammenfassen von Relationen, die 1:1-, 1:Noder N:1-Beziehungen repräsentieren, mit Relationen, die Entitätstypen repräsentieren. Voraussetzung ist, daß die Relationen einen gleichen Schlüssel besitzen. Dabei wird der Schlüssel der Relation, die einen Beziehungstyp modelliert, als Fremdschlüssel in die Relation, die einen Entitätstyp modelliert, übernommen. Auch vorhandene Attribute werden übernommen. Angewandt auf das obige relationale Schema ergibt dieser Schritt der Verfeinerung folgendes: Leser : {[LsNr, Name, Adresse]} Bücher : {[BuchNr, Titel, Author, ausgeliehnt von, datum]} Die Elimination der Relationen, die N:M-Beziehungstypen repräsentieren, ist nicht sinnvoll und würde i.a. zu schwerwiegenden Anomalien führen. Ebenfalls können schlecht entworfene relationale Schemata zu Anomalien führen. Man unterscheidet drei Arten von Anomalien: 1. Updateanomalien 2. Einfügeanomalien 3. Löschanomalien Um eine Datenredundanz eines relationalen Schemas zu vermeiden, werden bei der sog. Normalisierung Relationen aufgespalten, um möglichst hohe Normalformen von Relationen zu erreichen. Dies bedeutet die Zerlegung von Relationen nach bestimmten Kriterien, so dass aber insgesamt der Informationsgehalt erhalten bleibt. Eine Relation R wird in die Relationen R1 , . . . , Rn zerlegt. Dabei enthalten die Relationen R1 , . . . , Rn jeweils nur eine Teilmenge der Attribute aus R, also Ri ⊆ R für 1 ≤ i ≤ n. Es gibt zwei grundlegende Kriterien für eine solche Zerlegung von Relationen [Kem 95]: 1. Verlustlosigkeit: Die in der ursprünglichen Relation R enthaltenen Informationen müssen aus den neuen Relationen R1 , . . . , Rn rekonstruierbar sein. 2. Abhängigkeitserhaltung: Die für R geltenden funktionalen Abhängigkeiten müssen auf die Relation R1 , · · · , Rn übertragbar sein. Die Zerlegung basiert auf der Kenntniss der funktionalen Abhängigkeit zwischen den Attributen. Eine funktionale Abhängigkeit innerhalb einer Relation besteht zwischen zwei Attributmengen X und Y, wenn in jedem Tupel der Relation der Attributwert in den X-Attributen den Attributwert in den Y-Attributen festlegt. Die Normalformen sind: 1. Erste Normalform: Sie verlangt, daß alle Attribute atomare Wertebereiche haben. Die Attributwerte dürfen also nicht zusammengesetzt oder mengenwertig sein. 25 3 Grundlagen über Datenbanken 2. Zweite Normalform: Eine Relation ist in zweiter Normalform, wenn sie erster Normalform ist und jedes Nichtschlüsselattribut von jedem Schlüsselkandidaten voll funktional abhängig ist. Voll funktional bedeutet, daß ein Attribut Y funktional von Attribut X abhängig ist, aber von keiner Teilmenge von X. 3. Dritte Normalform: Eine Relation ist in dritter Normalform, wenn sie in zweiter Normalform ist und kein Nichtschlüsselattribut transitiv vom Schlüsselkandidaten abhängt. Ein relationales Schema muss zwei fundamentale Integritätsbedingungen erfüllen: 1. Entitäts-Integrität: Der Wertebereich der Primärschlusselattribute darf keine Nullwerte enthalten. 2. Referentielle Integrität: Wenn in einer Relation ein Fremdschlüssel vorhanden ist, dann muss der Fremdschlüsselwert auch als Primärschlüssel in der korrespondierenden Relation auftauchen. Wie bereits erwähnt, bildet das relationale Datenmodell die Basis für relationale Datenbanken. Mit einem relationalen Schema wird die Struktur aller Datenobjekte des betrachteten Anwendungsbereiches in einem relationalen Datenmodell beschrieben. Neben dieser Datadefinitionssprache(DDL2 ) wird auch eine Datenmanipulationssprache (DML3 ) benötigt, mit der man Informationen aus der Datenbank extrahieren, einfügen, ändern oder löschen kann. Die Datenmanipulationssprache besteht aus: • Anfragesprache (Query Language) und • Sprache zum Einfügen von Daten, zur Änderung und zum Löschen von abgespeicherte Daten. Als Anfragesprachen in relationalen Datenbanken wurden zwei formale Sprachen konzipiert: 1. Relationenalgebra 2. Relationenkalkül Die Relationenalgebra definiert eine Menge von Operatoren mit deren Hilfe neue Relationen erzeugt werden können. Die Menge der Operatoren umfasst insbesondere die der Mengenalgebra, da die Relationen Mengen sind (z.B. Durchschnitt, Vereinigung, Differenz u.a.). Zudem existieren weitere Operatoren wie die Projektion einer Relation auf ausgewählte Attribute, die Selektion bestimmter Tupel 2 3 Data Definition Language Data Manipualtion Language 26 3.3 Das relationale Datenmodell oder Kombination zweier Relationen auf der Basis korrelierender Attributwerte sog. Join. Allen Operatoren ist gemeinsam, dass ihr Resultat in jedem Fall wieder die Form einer Relation hat. Dies bedeutet, dass diese Sprache abgeschlossen ist. Bei einem Relationenkalkül handelt sich auch um eine abgeschlossene Sprache, d.h. das Ergebnis der Anfrage ist wiederum eine Relation. Der Relationenkalkül spezifiziert gewünschte Relationen in deskriptiver Weise ohne Angabe von Operationen. Die Einschränkung der Menge der gewünschten Tupel erfolgt mittels mathematischen Prädikatenkalküls erster Stufe, der quantifizierte Variablen und Werte zuläßt. SQL ist eine weit verbreitete Sprache zur Datendefinition und Datemanipulation relationaler Datenbanken. Die theoretischen Grundlagen für SQL bilden die Relationenalgebra und der Relationenkalkül. SQL stellt eine Reihe von Befehlen zur Manipulation relationaler Datenbanken zur Vefügung. Die Anfragen in SQL werden mit dem Befehl SELECT formuliert. Für die Veränderungen am Datenbestand stellt SQL folgenden Befehle zur Verfügung: • INSERT, für Einfügen von Daten • UPDATE, für Änderung von vorhandenen Daten • DELETE, für Löschung von Daten. Außerdem können neue Relationen definiert (CREATE TABLE), vorhande aus Relationenschemata gelöscht (DROP TABLE) und eine Relation kann um weitere Attribute ergänzt (ALTER TABLE) werden. 27 4 Softwaregrundlagen 4.1 Grundlagen zu Visual Basic Visual Basic ist eine ereignisorientierte Programmiersprache und visuelle Entwicklungsumgebung, die sowohl einzeln als auch als Bestandteil von Visual Studio zu erhalten ist. Microsoft baute Visual Basic auf einer Programmiersprache (BASIC1 ) auf, die für Anfänger entwickelt wurde. Das Geheimnis von Visual Basic ist in seinem Namen ausgedrückt: Visual“. Die Bezeichnung Visual“ bezieht ” ” sich dabei auf das Verfahren zum Erstellen von graphischen Benutzeroberflächen. Anstatt unzählige Programmzeilen zu schreiben, die Aussehen und Position der Oberflächenelemente festlegen, werden einfach vorgefertigte Objekte an den gewünschten Ort hinzugefügt. 4.1.1 Die Bedienungselemente von Visual Basic An dieser Stelle werden einige Bedienungselemente von Visual Basic erklärt, mit dem primären Ziel einen ersten Überblick zu verschaffen. Nachdem Visual Basic gestartet wird, erscheinen am Bildschirm mehrere Fenster: ein Hauptfenster mit Menü und Symbolleiste, eine Toolbar mit den zur Verfügung stehenden Steuerelementen, ein leeres Formularfenster, ein Projektfenster und ein Eigenschaftsfenster (siehe Abbildung 4.1). Das Formularfenster bildet den Bildschirmhintergrund für ein Visual Basic Programm. Der erste Schritt bei der Entwicklung eines typischen Visual Basic Programms spielt sich in diesem Fenster ab. Hier können verschiedene Steuerelemente eingefügt, deren Größe und Position und andere Eigenschaften geändert werden. Ein Doppelklick auf ein beliebiges Element des Formularfensters führt in das Codefenster. Dort kann der Code zum jeweiligen Steuerelement eingegeben werden kann. Die Toolbox (Werkzeugsammlung) enthält alle zur Zeit verfügbaren Werkzeuge, die Steuerelemente repräsentieren. Um ein Steuerelement in ein Formular einzufügen, wird zuerst auf das entsprechende Werkzeug in der Toolbox angeklickt. Mit 1 BASIC steht für Beginner’s All-puprose Symbolic Instruction Code 28 4.1 Grundlagen zu Visual Basic der Maus wird im Formular ein Rahmen gezeichnet, der die Größe und Position des Steuerelements bestimmt. Wenn weitere Werkzeuge erforderlich sind, die in der Toolbox nicht angezeigt sind, werden über das Kontextmenü Komponenten“ ” neue hinzugefügt. Abbildung 4.1: Visual Basic Das Codefenster wird zur Eingabe des Programmcodes verwendet. Ein Codefenster kann einem Formular oder einem Modul zugeordnet sein. Das Codefenster wird entweder vom Projektfenster aus (Button Code anzeigen“ ) oder durch ” einen Doppelklick des Formularfensters geöffnet. Im Eigenschaftsfenster werden die Eigenschaften des Formulars oder die darin ausgewählten Steuerelemente angezeigt. Jede Eigenschaft hat sowohl einen Namen, über den sie angesprochen wird, als auch einen Wert. Typische Eigenschaften sind der Name des Steuerelements, seine Beschriftung (Caption), Schriftart, Höhe, Breite usw.. Im Projektfenster werden alle Komponenten einer Anwendung verwaltet. Mögliche Komponenten sind: 29 4 Softwaregrundlagen • Projekte: Eine Anwendung kann mehrere Projekte umfassen. Projekte haben immer die Dateinamenerweiterung .VBP. • Formulare: Sie bestehen aus einem Formular und dessen Programmcode. Diese werden im eigenen Fenster mit Objekt anzeigen“ oder Code anzei” ” gen“ dargestellt, aber in einer gemeinsamen Datei gespeichert. Formulardateien haben immer die Dateinamenerweiterung .FRM. • Module: Sie bestehen ausschließlich aus einem Programmcode, in dem globale Prozeduren und Variablen definiert sind. Die Dateinamenerweiterung ist .BAS. • Klassenmodule: Sie sind Codemodule zur Beschreibung von Objektklassen. Die Dateinamenerweiterung ist .CLS. • Benutzerdokumente: Sie sind Dokumentobjekte für eine Anwendungsbeschreibung. Die Dateinamenerweiterung ist .DOB. Neben den gerade beschriebenen Fenstertypen gibt es in Visual Basic noch weitere Fenstertypen, wie z.B. einen Objektkatalog mit einer Referenz aller verfügbaren Objekte. Desweiteren gibt es bspw. einen Menü-Editor zum Erstellen von Menüs, ein Formularlayoutfenster zur Positionierung von Formularen, und ein Farbpalettenfenster zum bequemen Einstellen von Farben. 4.1.2 Der Aufbau von Visual Basic Programmen Ein typisches Visual Basic Programm besteht aus mindestens einem Formular. In diesem werden verschiedene Steuerelemente wie bspw. Buttons, Textfelder, Optionsfelder usw., eingefügt. In Visual Basic können einem Steuerelement verschiedene Ereignisse zugeordnet werden. Die Reaktion auf ein eingegebenes Ereignis ist der Aufruf einer Ereignisprozedur. Eine Ereignisprozedur enthält Anweisungen, die ausgeführt werden, sobald ein Ereignis eintritt. Durch ein Ereignis, bspw. Klicken einer Schaltfläche namens Bild zeigen“, wird eine Reaktion hervorgerufen, die ein ” Bild im Formular anzeigt. Jede Form und jedes Steuerelement besitzt eine Anzahl von möglichen Ereignissen (Click, DblClick, KeyPress usw.). Es müssen Prozeduren für jene Ereignisse geschrieben werden, auf die wir im Programm reagieren möchten. Alle anderen Ereignisse, für die keine Prozedur geschrieben wurde, führen dann zu keiner Reaktion des Programms. Das Erstellen eines neuen Programms beginnt mit der Definition des ersten Formulars. Dabei werden die einzelnen Steuerelemente in das Formular eingefügt, ihre Größe und ihre Eigenschaften werden je nach Verwendungszweck eingestellt. 30 4.1 Grundlagen zu Visual Basic Dabei hat das Formular schon während der Definition das Aussehen wie im endgültigen Programm. Als nächstes werden die Programmteile zur Reaktion auf Benutzerereignisse geschrieben. Diese Ereignissprozeduren sind fest mit dem Formular verbunden. Wenn das Programm mehrere Fenster braucht, müssen weitere Formulare definiert und dazugehörende Ereignisprozeduren geschrieben werden. Neben Ereignisprozeduren können auch Unterprozeduren und Funktionen2 geschrieben werden. Es wird unterschieden zwischen private“ Prozeduren, die ” nur innerhalb eines Formulars verwendet werden, und public“ Prozeduren, die ” im gesamten Programm verwendet werden können. 4.1.3 Objektorientierte Programmierung Obwohl Visual Basic nicht richtig zur Gruppe der objektorientierter Sprachen gehört, beinhaltet sie dennoch eine Reihe von Prinzipien, die diese Gattung von Sprachen charakterisieren. Wenn der Entwickler die Steuerelemente der Werkzeugsammlung nutzt, greift er genau genommen nicht auf Objekte sondern auf Klassen zu, welche die möglichen Eigenschaften, Methoden und Ereignisse beschreiben. Erst zur Laufzeit werden Objekte, sogenannte Instanzen, dieser Klasse erzeugt. Visual Basic bietet auch die Möglichkeit, eigene Klassen zu schreiben. Hierfür wird eine Vorlage, das Klassenmodul, zur Verfügung gestellt. In einem Klassenmodul wird der Code einer Klasse von neuen Objekten implementiert. Diese Objekte können neu definierte Eigenschaften und Methoden enthalten. Da von Visual Basic-Objekten nur Eigenschaften, Methoden und Ereignisse außerhalb des Objektes zur Verfügung stehen, wird auch das Prinzip der Kapselung unterstützt. Auf die inneren Abläufe hat der Anwender keinen Einfluß. Diese Kapselung führt zum Prinzip der Abstraktion, da ein Objekt eingesetzt werden kann, ohne dessen innere Funktionalität kennen zu müssen. Im Gegensatz zu rein objektorientierten Programmiersprachen unterstützt Visual Basic jedoch keine Vererbung, d.h. es können keine Unterklassen erzeugt werden, welche die Methoden ihrer Oberklassen erben. Daher wird bei Visual Basic lediglich von einer objektbasierten Sprache gesprochen. Dennoch unterstützt Visual Basic Polymorphismus durch Verwendung von Mehrfachschnittstellen des Komponentenobjektmodells COM3 , auf das hier nicht näher eingegangen wird. 2 VB unterscheidet mehrere Arten von Prozeduren: Unterprozeduren, Funktionen, Ereignisprozeduren und Property-Prozeduren 3 Component Object Model 31 4 Softwaregrundlagen 4.2 Datenzugriff Zum Zugriff von Anwendungen auf Datenbanken werden Anwendungsprogrammierschnittstellen (API’s) benötigt. Solche Schnittstellen für den universellen Zugriff auf Datenbanken hat Microsoft durch Open Database Connectivity (ODBC) und durch Object Linking and Embedding Database (OLE-DB) realisiert. ODBC ist ein internationaler Standard für eine Verarbeitung relationaler Daten aus diversen Datenquellen unter Verwendung der SQL-Abfragesyntax. Da es sich um einen interantionalen Standard handelt, können verschiedene relationale Datenquellen verwaltet werden, die sowohl von Microsoft als auch von Drittanbietern stammen können. ODBC setzt lediglich voraus, daß Daten in Form einer relationalen Datenbank vorhanden sein müssen. OLE-DB ist eine Schnittstelle, die den Zugriff auf alle Typen von Daten ermöglicht und baut auf dem Erfolg des ODBC auf. Bei OLE-DB gibt es keine Einschränkung in Bezug auf die Abfragesyntax oder die Struktur der Daten. Die einzige Voraussetzung ist, dass Daten in Tabellenform zurückgemeldet werden können. OLE-DB ist damit sowohl für relationale als auch für nicht relationale Datenquellen geeignet. Im Visual Basic stehen drei Programmierschnittstellen für den Datenzugriff zur Verfügung: • ADO (ActiveX Data Objects) • RDO (Remote Data Objects) • DAO (Data Access Objects) DAO ist eine High-Level Schnittstelle. Im Gegensatz zur Low-Lewel Schnittstelle, wie ODBC und OLEDB es sind, die nur aus der Programmiersprache C++ angesprochen werden können, kann DAO auch von weniger maschinenahen Sprachen (Java, VB) und Skriptsprachen (Perl, JavaScript, VBScript) angesprochen werden. DAO ist ein objektorientiertes Datenzugriffsmodell, das mit Access und anderen ISAM-Datenbanken eingeführt wurde. Dabei basiert DAO auf ODBC und kann zudem universell verwendet werden. Es ist aber relativ langsam, wobei nur der Zugriff auf Jet-Datenbanken optimiert ist. Bei RDO handelt es sich ebenfalls um eine High-Level Schnittstelle, die als Nachfolger von DAO entwickelt wurde. Wie DAO baut auch RDO auf ODBC auf und erlaubt zusätzlich den Zugriff auf entfernte Datenquellen, z.B. über das Internet. RDO ist in seiner Funktionsweise eingeschränkt, da es nicht besonders gut auf 32 4.2 Datenzugriff Jet- oder ISAM-Datenbanken zugreift. Zudem kann es nur mit Hilfe vorhandener ODBC-Treiber auf relationale Datenbanken zugreifen. Als objektorientierte Datenzugriffs- schnittstelle bietet RDO Objekte, Eigenschaften und Methoden, die zum Zugreifen auf komplexe Aspekte von gespeicherten Prozeduren und komplexen Ergebnismengen notwendig sind. 4.2.1 ActiveX Data Objects ADO ist der Nachfolger von DAO/RDO und baut auf dem OLE-DB Modell auf. Es ist eine Schnittstelle über die alle OLE-DB Datenbanken angesprochen werden können. Mit ADO ist der Zugriff auf Datenbanken über das Internet möglich. ADO vereint alle Vorteile der beiden Vorgänger. Es ist schnell und einfach zu benutzen. Wie seine beiden Vorgänger ist ADO eine objektorientierte Datenzugriffsschnittstelle und verfügt über sieben Hauptobjekte. Connection-Objekt : Dieses Objekt ist das zentrale Objekt von ADO. Es wird verwendet um einzelne Verbindungen zu einer Datenbank aufzubauen und zu schließen. Dem Connection-Objekt steht eine Reihe von Eigenschaften und Methoden zur Verfügung, die die Verbindungsart spezifiziern. Die Eigenschaft z.B. ConnectionString“ enthält Informationen, die zum Einrich” ten einer Verbindung zu einer Datenquelle verwendet werden. Mit der Methode Open“ wird eine Verbindung zu einer Datenquelle geöffnet. ” Recordset-Objekt : Mit dem Recordset wird durch eine Tabelle navigiert und Datensätze verändert. Der Zugriff auf Tabellen erfolgt über Eigenschaften und Methoden des Recordsets. Ein aktuelles Recordset enthält immer nur eine Zeile mit seinen Spalten. Command-Objekt : Hiermit wird ein Befehl definiert, der auf der Datenbank ausgeführt wird. Das kann z.B. eine Abfrage, Änderung der Datenbankstruktur (neue Tabelle erstellen, Feldwerte einfügen usw.), Ausführen einer Sammeloperation u.a., sein. Dem Command-Objekt steht auch eine Reihe von Eigenschaften und Methoden zur Verfügung. Parameter-Objekt : Dieses Objekt wird meist zusammen mit dem CommandObjekt verwendet, um Befehle an die Datenbank zu schicken. Property-Objekt : Das Property-Objekt beinhaltet Informationen, die von der Datenbank bzw. dem Provider zur Verfügung gestellt werden. Error-Objekt : Dieses Objekt enthält sämtliche Fehlermeldungen, die von der Datenbank stammen. Field-Objekt : Das Field-Objekt spricht die Spalten einer Tabelle an. Ein Field kann über den Namen der Tabellenspalte angesprochen werden. 33 4 Softwaregrundlagen Im Folgenden wird anhand einiger Beiepiele erläutert, wie eine ADODatebankzugriffsmethode funnktioniert. Zuerst wird eine Verbindung aufgebaut, bspw. eine VB-Prozedur Verbindung der Zugriff auf eine Access2000 Datenbank ermöglicht: Option Explicit Public Verbindung As New ADODB.Connection Public Sub InitVerbindung(Filename As String) Verbindung.Provider = "Microsoft.Jet.OLEDB.4.0" ’Access 2000 Verbindung.ConnectionString = Filename ’Datenbankpfad ’z.B."C:\Programme\Microsoft Visual Studio\VB98\Biblio.mdb" Verbindung.Mode = adModeReadWrite ’zum lesen und schreiben öffnen Verbindung.Open ’Verbindung herstellen End Sub Da ADO auf Objekten basiert, ist auch das Connection-Objekt im Code Verbindung ein Objekt. Verschiedene Eigenschaften müssen festgelegt werden, damit ADO erkennen kann, welcher Datenbanktyp zu öffnen ist. Die Eigenschaft Provider gibt die Namen des Providers für ein Connection-Objekt an. Die Eigenschaft Mode gibt die verfügbaren Berechtigungen für das Ändern von Daten in einem Connection-Objekt an. Die Methode Open öffnet eine Verbindung mit einer Datenquelle. Erst wenn eine Verbindung zu einer Datenbank hergestellt ist, kann der Zugriff auf die Tabellen der Datenbank erfolgen. Der Zugriff erfolgt über das RecordsetObjekt. Die folgende VB-Prozedur zeigt, wie eine Tabelle geöffnet wird: Public Verbindung As New ADODB.Connection Public RecSet As New ADODB.Recordset Public Sub InitTable(tblName As String) Set RecSet.ActiveConnection = Verbindung ’aktive Verbindung zuweisen RecSet.LockType = adLockOptimistic RecSet.Source = "Select * From " & tblName ’ganze Tabelle 34 4.2 Datenzugriff RecSet.Open ’Tabelle öffnen End Sub Mit der Eigenschaft ActiveConnection wird das Recordset-Objekt einem bestimmten Connection-Objekt zugeordnet. Die Art der Sperrung, die während des Bearbeitens auf Datensätzen gelegt wird, wird durch LockType angezeigt. Die Tabelle, die geöffnet werden soll, wird über die Eigenschaft Source angegeben. 35 5 Modellierung von Geo-Objekten Dieses Kapitel befasst sich mit der Modellierung von Geo-Objekten, deren ER-Modellierung und Überführung in ein relationales Schema anhand des im praktischen Teil der Diplomarbeit entwickelten DataMap-Systems. Das ICE/IC/EC-Streckennetz der Deutschen Bahn dient dabei als Anwendungsbeispiel [Dba 03]. Die Aufgabe des DataMap-System ist es, anhand der in einer relationalen Datenbank abgespeicherten Daten eine interaktive Bildschirmkarte zu erzeugen. Dabei sollen beliebige Ausschnitte der realen Welt durch die in der Datenbank gespeicherten Daten dargestellt werden. Im DataMap-System, wie in der Geoinformatik selbst, werden nicht reale Objekte, sondern ihre gedankliche Abbilder, also Modelle der Realität betrachtet. Das abstrakte Modell eines realen räumlichen Objektes ist ein Geo-Objekt. Das DataMap-System soll eine anwendungsunabhängige Nutzung realisieren. Deshalb soll auch die Modellierung der im DataMap-System betrachteten GeoObjekte unabhängig von jeweiligen Anwendungen erfolgen. Dies ist aber insoweit problematisch, als die Modellierung von Geo-Objekten von Fragestellungen, dem Arbeitsaufwand usw. abhängig ist (s. Kapitel 2.1.5). Die Modellierung von Geo-Objekten geschieht durch Abstraktion (s. Kapitel 2.1.5), die sowohl Geometrie, Topologie als auch die Thematik und das Verhalten betreffen kann. Anhand ihrer Geometrie lassen sich Geo-Objekte im Hinblick auf ihre Modellierung nach dem Typ unterscheiden (Punkt, Linie, Fläche). Je nach der gestellten Frage kann dasselbe Geo-Objekt unterschiedlich modelliert werden. Eine Stadt ist in der Realität ein flächenhaftes Raumobjekt. Sie besitzt eine bestimmte Flächengröße und wird in einem Stadtplan als Fläche modelliert, weil uns dann bspw. die Sehenswürdigkeiten einer Stadt interessieren (Musseen, Opern oder das Strassennetz). Im Verkehrswesen hingegen ist das abstrakte Modell einer Stadt der Punkt, weil dann ihre Fläche irrelevant ist. Ein Geo-Objekttyp Linie modelliert linienhafte Raumobjekte wie bspw. Straßen oder Flüsse. Dabei lassen sich bei linienhaften Raumobjekten zwei Arten unterscheiden: 36 • Raumobjekte, die durch eine Linie, die eine direkte Verbindung zwischen zwei Punkten darstellt, modelliert werden. • Raumobjekte, die sich durch einen Linienzug als eine Abfolge von Punkten, die ihrerseits durch gerade Stücke verbunden sind, darstellen lassen. Interessieren uns bspw. an einem Fluss lediglich seine Quelle und seine Mündung, läßt er sich durch eine Linie darstellen. Wenn uns hingegen Flusshäfen interessieren, ist der Linienzug für seine Darstellung geeigneter. Eine Strasse wird im Strassenverkehrsnetz als ein Geo-Objekttyp Linienzug modelliert, weil hier nur die einzelnen Verbindungen im Vordergrund stehen. Für Strassenbauzwecke wird sie hingegen als ein Geo-Objekttyp Fläche dargestellt, da uns hier auch die Fahrstreifen interessieren. Der Geo-Objekttyp Linienzug ist damit für die Modellierung linienhafter Raumobjekte zusätzlich zu berücksichtigen. Auch die Thematik von Geo-Objekten kann sich je nach Anwendung ändern. An einem Fluss können uns in einer Anwendung nur sein Name und die Länge interessieren und in einer anderen nur sein Gefälle oder die Tiefe. Je nach Anwendungsinteresse wollen wir nur den Verschmutzungsgrad oder den Fischbestand wissen. Anwendungsabhängig sind auch räumliche Beziehungen zwischen Geo-Objekten (Topologie). In einer Anwendung sind zwei Geo-Objekte benachbart, falls eine gerade Strecke sie verbindet, und in einer anderen wird iher Nachbarschaftsbeziehung durch eine gemeinsame Grenze definiert. Im DataMap wurde versucht, diese Problematik durch Zusammenfassung von Geo-Objekten gleichen Typs und gleichartiger Thematik zu umgehen. Aufgrund vielfältiger Anwendungsmöglichkeiten ist es dennoch nicht gelungen, alle Anwendungseventualitäten einzubauen. Alle Bäche und Flüsse, bei denen uns die Länge, Name und Gefälle interessieren, können zusammen betrachtet werden. Eine Stadt und eine Wetterstation bspw. können zwar durch einen Geo-Objekttyp (Punkt) modelliert werden, haben aber im Hinblick auf ihre Thematik eine unterschiedliche Bedeutung. Bei einer Stadt interessieren uns ihr Name und die Einwohnerzahl, wohingegen bei einer Meßstation Höhenlage und Lufttemperatur relevant sind. Zur Beschreibung der Geomtrie von Geo-Objekten gibt es zwei konzeptionelle Basisimodelle, das Vektor- und das Rastermodell (s. Kapitel 2.1.1). Aufgrund seiner Vorteile wurde für die im DataMap-System betrachteten Geo-Objekte das Vektor-Modell ausgewählt: • Die Datenmenge zur Modellierung von Geo-Objekte ist wesentlich geringer 37 5 Modellierung von Geo-Objekten als beim Rastermodell • hohe geometrische Genauigkeit der Lage und Form der Geo-Objekte • gut geeignet zu Modellierung einzelner Objekte • Koordinatentransformation ist einfach zu berechnen. Das Anwendungsbeispiel (Streckennetz) zeigt deutschlandweit alle Zugverbindungen zwischen angeschlossen Städten. Aufgrund der geometrischen Merkmale und der Thematik werden hierfür folgende Geo-Objekttypen bestimmt: • Stadt Sie repräsentiert ihren Bahnhof. Im Falle, dass eine Stadt mehrere Bahnhöfe besitzt, wie bspw. Hamburg oder Berlin, werden diese durch eine Stadt repräsentiert. • Verbindung Damit sind Bahnlinien zwischen zwei benachbarten Städten gemeint. Eine Unterscheidung erfolgt nach dem Typ der Verbindung (RB, EC, ICE). • Zuglinie Sie repräsentiert alle Zugverbindungen zwischen mehreren Städten. Auch hier erfolgt eine Unterscheidung nach dem Typ der Zuglinie (RB, EC, ICE). Darüber hinaus soll durch das System auch die Darstellung der Bundesländer realisiert werden, so dass sie als zusätzlicher Geo-Objekttyp Bundesland zu bestimmen sind. Für die oben aufgeführten Geo-Objekttypen des Anwendungsbeispiels wurde folgende Modellierung gewählt: • Städte werden durch Punkte modelliert. • Verbindungen werden durch Linien modelliert. • Zuglinien werden durch Linienzüge modelliert. • Bundesländer werden durch Flächen modelliert. Die folgenden Abschnitte sollen erläutern, wie die definierten Geo-Objekttypen in eine relationale Datenbank überführt werden können. 38 5.1 Konzeptuelle Modellierung 5.1 Konzeptuelle Modellierung Die Erstellung des konzeptuellen Entwurfs für DataMap wird hier anhand des Anwedungsbeispiels erläutert. Dabei könne alle Anwendungsbereiche, die sich durch das hier entwickelte Modell berschreiben lassen, im DataMap realisiert werden. Auf der konzeptuellen Ebene wurde das Entity-Relationship-Modell als Datenmodell verwendet, weil durch dieses die Überführung in ein relationales Schema fast automatisch erfolgen kann. Hier werden die Entitäten zu Entitätstypen und Beziehungen zwischen Entitäten zu Beziehungtypen abstrahiert. Weiterhin werden den Entitätstypen und den Beziehungstypen Attribute zugeordnet. Oben definierte Geo-Objekttypen stellen folgende Entitätstypen dar: • Stadt • Verbindung • Zuglinie • Bundesland. Diese Entitätstypen lassen sich in ihrer Thematik und Geometrie durch ihre Attribute beschreiben. Die Beziehungen zwischen Entitäten ergeben sich aus räumlichen Beziehungen zwischen Geo-Objekten (Topologie). Aufgrund der Modellierung von Geo-Objekten ist deren graphische Darstellung vorbestimmt. Eine Stadt wird durch einen Punkt dargestellt. Eine Verbindung hingegen ist als gerade Linie dargestellt, die zwei Punkte verbindet. Eine Zuglinie wird durch einen Linienzug modelliert, also eine Abfolge von Punkten, die gerade Linien verbinden. Die Bundesländer sind durch Flächen dargestellt. Die Fläche ist ihrerseits eine geschlossene Abfolge von Punkten. Der gemeinsame Nenner aller oben aufgeführten Entitätstypen ist, dass deren räumliche Lage über einen Punkt bzw. Punkte mit Koordinatenangaben definiert wird. Die Geometrieangaben für alle Entitäten sind also punktbezogen, so dass der Punkt als neuer Entitätstyp zu betrachten ist. Durch den Punkt als Entitätstyp, können Geometrie und Thematik voneinander losgelöst betrachtet und angewendet werden. Vorteil dabei ist, dass aufbauend auf dem Entitätstyp Punkt verschiedene Thematiken entwickelt und damit mehrere Anwendungsbereiche realisiert werden können. Statt des Bahnnetzes können bspw. auch Fluglinien als Thematik eingesetzt werden. Die Koordinaten bleiben dabei gleich, es ändert sich lediglich die Thematik. Da der Entitätstyp Punkt also ein Träger der geometrischen Informationen für alle Entitäten ist, ist es notwendig zu unterscheiden, ob es sich um einen Punkt 39 5 Modellierung von Geo-Objekten für die Darstellung einer Stadt oder um einen Punkt, der sich auf der Grenze eines Bundeslandes befindet, handelt. Dies erfolgt über das Attribut Typ. Die Attribute X und Y sind die Koordinaten des Punktes. Die Koordinaten werden im geographischen Längen- und Breitengrad angegeben [Kün 03]. Mit dem Attribut ID wird ein künstliches Schlüsselattribut für eine eindeutige Identifizierung von Punkten eingebaut (s. Abbildung 5.1). Punkt ID X Y Typ Abbildung 5.1: Entitätstyp Punkt Der Entitätstyp Stadt repräsentiert alle Städte, die einen ICE-Bahnhof haben. Die zugehörigen Attribute beschreiben die Thematik. Dabei handelt sich um Attribute Name, die den Namen der Stadt angeben und Einwohnerzahl, die die Einwohnerzahl einer Stadt ausdrücken. Die räumliche Lage der Stadt wird durch die Beziehung liegt auf zum Entitätstyp Punkt bestimmt (s. Abbildung 5.2). Es handelt sich hierbei um eine 1:1-Beziehung, weil zwei Städte nicht auf einem Punkt liegen können. Das Attribut ID wird als künstliches Schlüsselattribut eingebaut, um eine eindeutige Identifizierung von Städten zu gewährleisten. Zusätzliche Attribute (Kfz-Zeichen; Sehenswürdigkeiten usw.) können auch eingeführt werden, verlangen aber eine entsprechende Erweiterung im Code. 1 Punkt 1 Stadt liegt_auf ID Name Einwohnerzahl Abbildung 5.2: Entitätstyp Stadt Der Entitätstyp Verbindung enthält Entitäten, die alle direkten Verbindungen zwischen benachbarten Städten darstellen. Dabei ist die Existenz dieses Entitätstyps von der Existenz des Entitätstyps Stadt abhängig. Eine Verbindung kann also nur existieren, wenn auch dazugehörende Städte existieren. Der Entitätstyp Verbindung ist ein sogenannter schwacher Entitätstyp“, weil er nur in einer Be” ziehung mit einem regulären Entitätstyp zu realisieren ist. 40 5.1 Konzeptuelle Modellierung Die Beziehung zwischen Verbindung und Stadt ist verbindet (s. Abbildung 5.3). Es ist eine 1:N-Beziehung, weil zwischen zwei Städten nur eine Verbindung existiert, aber eine Stadt in mehreren Verbindungen vorkommen kann. So existiert bspw. zwischen Köln und Bonn eine Verbindung. Eine Verbindung ist auch zwischen Köln und Düsseldorf vorhanden, so dass Köln in zwei Verbindungen vorkommt. Bei der Verbindung ist die Richtung irrelevant, es kommt lediglich darauf an, dass überhaupt eine Verbindung existiert, die durch zwei Punkte definiert wird. Es werden nicht der Start- und Endpunkt angegeben, sondern nur um welche Städte es sich handelt. Das Attribut, das die Verbindung beschreibt, ist Länge für die Angabe einer Entfernung zwischen zwei Städten. Desweiteren werden Verbindungen nach deren Typ unterschieden. Es kommt darauf an, ob es sich dabei um eine RB-Verbindung oder eine ICE- bzw. EC-Verbindung handelt. Diese Unterscheidung wird durch das Attribut Typ ausgedrückt. Über das künstliche Schlüsselattribut ID kann eine eindeutige Bestimmung von Entitäten erfolgen. 1 Stadt1 Stadt N Verbindung verbindet 1 Stadt2 ID Typ Länge Abbildung 5.3: Entitätstyp Verbindung Der Entitätstyp Zuglinie enthält alle ICE-/EC-/RB-Zuglinien. Dabei stellt eine Zuglinie eine Route zwischen zwei Städten dar, die nicht unbedingt benachbart sind. Die Zuglinie wird als Verbindung einer Folge von Städten, die Haltestellen repräsentieren, betrachtet. Zwischen Entitätstypen Stadt und Zuglinie besteht die Beziehung ist Haltestelle (s. Abbildung 5.4). Es handelt sich hier um einen N:MBeziehungstyp, weil eine Stadt in mehreren Routen als Haltestelle vorkommen kann und eine Route über mehrere Städte verlaufen kann (Anzahl der Haltestellen > 2). Zwischen Frankfurt und Düsseldorf verläuft eine ICE-Strecke über Bonn und Köln. Zwischen Bonn und Düsseldorf existiert eine RB-Strecke, die über Köln führt. Um den Anfang, die einzelnen Haltestellen und das Ende der Route zu kennen, ist bei Zuglinien die Reihenfolge der Haltestellen wichtig. Die Beziehung ist Haltestelle besitzt dabei das Attribut Position. Es gibt die Position der Stadt in der Route wieder. Die Position wird dabei in Richtung von Start- bis Endpunkt hochgezählt. Die dem Entitätstyp zugehörigen Attribute sind Name (z.B. ICE Gustav-Heinemann“) für die Route und Typ für die Art der Route (ICE, EC ” oder RB). Als künstliches Schlüsselattribut wird ID eingesetzt. Der Entitätstyp Bundesland wird durch das Attribut Name, das den Namen 41 5 Modellierung von Geo-Objekten Position Stadt N ist_Haltestelle M Zuglinie ID Name Typ Abbildung 5.4: Entitätstyp Zuglinie des jeweiligen Bundeslandes enthält und das künstliche Schlüsselattribbut ID beschrieben. Die Begrenzung eines Bundeslandes wird durch eine abgeschlossene Folge von Punkten definiert. Dabei steht der Entitätstyp Bundesland mit dem Entitätstyp Punkte in einer ist Grenzpunkt-Beziehung (s. Abbildung 5.5). Das ist eine N:M-Beziehung, weil ein Punkt in mehreren Flächenbegrenzungen vorkommen kann und umgekehrt eine Fläche mehrere Punkte enthält. Da eine Fläche durch eine geschlossene Abfolge von Punkten begrentzt ist, die durch gerade Stücke verbunden sind, ist die Reihenfolge der Punkte von Bedeutung. Denn nur in einer bestimmten Reihenfolge können sie die Fläche begrenzen. Die Reihenfolge wird durch das Beziehungsattribut Position realisiert. Position Punkt N ist_Grenzpunkt M Bundesland ID Name Abbildung 5.5: Entitätstyp Bundesländer Das konzeptuelle Schema für das Anwendungsbeispiel ist in Abbildung 5.6 dargestellt. 5.2 Abbildung auf Relationen Auf der logischen Ebene erfolgt die Überführung des in 5.1 entwickelten ERSchemas in ein relationales Schema. Die Überführung basiert auf Regeln, die bereits in Kapitel 3 erläutert wurden. Angewendet auf das ER-Diagramm in der 42 5.2 Abbildung auf Relationen Position ID X Punkt Y 1 N M ist_Grenzpunkt Bundesland ID Name Typ liegt_auf Position 1 ID N Stadt Name 1 ist_Haltestelle M Zuglinie 1 Einwohnerzahl Stadt1 Stadt2 ID Name Typ verbindet N Verbindung ID Typ Länge Abbildung 5.6: Konzeptuelles Schema Abbildung 5.6 entsteht folgendes relationale Schema: Punkt Stadt Verbindung Zuglinie Bundesland liegt auf verbindet ist Haltestelle ist Grenzpunkt : : : : : : : : : {[ID:long, X:double, Y:double, Typ:string]} {[ID:long, Name:string, Einwohnerzahl:long]} {[ID:long, Typ:string, Länge:long]} {[ID:long, Typ:string, Name:string]} {[ID:long, Name:string]} {[PunktID:long, StadtID:long]} {[VerbindungID:long, Stadt1 ID:long, Stadt2 ID:long]} {[ZuglinieID:long, StadtID:long, Position:integer]} {[PunktID:long, BundeslandID:long, Position:integer]} In Relationen, die Beziehungen darstellen, werden aus an der Beziehung beteiligten Entitätstypen Schlüsselattribute übernommen. Es kann notwendig 43 5 Modellierung von Geo-Objekten sein, dass einige der aus den Entitätstypen übernommenen Attributnamen umbenannt werden müssen. Dies ist zwingend notwendig, wenn Attribute in unterschiedlichen Entitätstypen gleichbenannt sind. Eine Umbenennung ist auch sinnvoll, um die Bedeutung der Attribute als Fremdschlüssel zu betonen. Die Relation liegt auf hat dann das Attribut PunktID aus der Relation Punkt und das Attribut StadtID aus der Relation Stadt. Die Auswahl des Schlüsselattributs für diese Relationen erfolgt nach der in Kapitel 3 beschriebenen funktionalen Sichtweise der Beziehung. In den Relationen sind die Schlüsselattribute als unterstrichen gekennzeichnet. Das im Initialentwurf erzeugte Schema läßt sich nach der in Kapitel 3 erklärten Vorgehensweise verfeinern. Es werden dabei nur Relationen mit gleichem Schlüssel zusammengefasst. Die Relationen Stadt und liegt auf werden also zusammengefasst, so dass nur eine Relation im Schema verbleibt: Stadt : {[ID, Name, Einwohnerzahl, PunktID]} Dieselbe Vorgehensweise wird für die Relationen Verbindungen und verbindet durchgeführt: Verbindung : {[ID, Stadt1 ID, Stadt2 ID, Typ, Name]} Nach dieser Verfeinerung entsteht das endgültige relationale Schema: Punkt Stadt Verbindung Zuglinie Bundesland ist Haltestelle ist Grenzpunkt : : : : : : : {[ID, X, Y, Typ]} {[ID, Name, Einwohnerzahl, PunktID]} {[ID, Stadt1 ID, Stadt2 ID, Typ, Länge]} {[ID, Typ, Name]} {[ID, Name]} {[ZuglinieID, StadtID, Position]} {[PunktID, BundeslandID, Position]} Die einzelnen Attributwerte der jeweiligen Relationen sind atomar, so dass die erste Normalform automatisch erfüllt ist. Durch die künstlichen Schlüsselattribute der jeweiligen Relationen ist jedes Nichtschlüsselattribut vom Schlüsselattribut voll funktional abhängig. Die zweite Normalform ist auch erfüllt. Desweiteren hängt in der jeweiligen Relation kein Nichtschlüsselattribut transitiv vom Schlüsselattribut ab, so dass auch die dritte Normalform erfüllt ist. Da sich die Relationen des erzeugten relationalen Schemas in dritter Normalform befinden, treten keine Anomalien auf. Aufgrund der künstlichen Schlüsselattribute ist die Entitäts-Integrität des relationalen Schemas erfüllt, weil die künstlichen Schlüsselattribute nie einen Nullwert haben werden. Für jeden Fremdschlüsselwert einer Relation ist wegen der künstlichen Schlüsselattribute in der korrespondierenden Tabelle immer ein Primärschlüssel vorhanden. Dies bedeutet wiederum, dass das relationale Schema auch die referentielle Integrität erfüllt. 44 5.2 Abbildung auf Relationen Dieses relationale Schema bildet die Basis für die relationale Datenbank. Die einzelnen Relationen lassen sich sehr einfach auf Tabellen in Access übertragen. 45 6 Ein Schichtenkonzept zur Visualisierung und Manipulation von Geodaten Im vorigen Kapitel wurde für das DataMap-System ein relationales Schema erstellt und in Access überführt. Dieses Kapitel befasst sich mit der Visualisierung und Manipulation der in der Datenbank abgespeicherten Daten. 6.1 Visualisierung von Geodaten Die in einer relationalen Datenbank gespeicherten Daten bestehen aus Geodaten1 und Metadaten. Der Geodatenanteil beschreibt die räumliche Lage und der Metadatenanteil die Eigenschaften eines Geo-Objektes. Anhand von Geodaten erstellt das DataMap-System eine interaktive Karte auf dem Bilschirm. Um Geodaten auf dem Bildschirm darzustellen, muss zuerst entschieden werden, welche Art der Graphik benutzt wird. Anschließend muss eine Entscheidung für die Formauswahl getroffen werden, d.h. in welcher Form die Geodaten dargestellt werden. Die Art der Graphik ist von dem gewählten geometrischen Basismodell für GeoObjekte abhängig (Vektormodell, Rastermodell). Dabei wird zwischen VektorGraphiken und Raster-Graphiken unterschieden. Da für das DataMap-System in Kapitel 5 das Vektormodell als geometrisches Basismodell gewählt wurde, ist die Datendarstellung durch die Vektor-Graphik vorgegeben. Vorteile der Vektor-Graphik sind: • Sehr genaue Darstellung von Graphik-Primitiven (Punkt, Linie) und der daraus zusammengesetzten Graphiken • Leichte Durchführung von Transformation der graphischen Objekte, wie z.B Streckung oder Rotation 1 Geodaten sind formale Beschreibungen von Geoinformationen in Form von Ziffern und Zeichen zur computergerechten Verarbeitung 46 6.1 Visualisierung von Geodaten • Kleine Datenmengen Das DataMap-System soll die in der Datenbank befindliche Daten auf dem Bildschirm in Form einer interaktiven Karte darstellen. Ein Geo-Objekt wird auf der Karte durch einen Icon repräsentiert. Die Position eines Icons wird durch den Geodatenanteil und sein Aussehen durch den Metadatenanteil bestimmt. Dabei ist bereits der Aufbau der Karte von enormer Bedeutung, weil schon durch den Aufbau eventuell auftretende Probleme vermieden werden können. Solche Probleme können bspw. auftreten, wenn mehrere dargestellte Objekte sich überschneiden oder übereinander liegen und so ihre Erkennung erschwert wird. Diese Überscheindunsgproblematik kann sich auch auf die Ansprechbarkeit dargestellter Objekte derart auswirken, dass ein Objekt ausgewählt wird, welches nicht gewählt werden sollte. 6.1.1 Schichtenkonzept Um dieser Überschneidungsproblematik zu entgehen, wurde ein Schichtenkonzept erarbeitet. Dabei orientiert sich das Schichtenkonzept an dem in Kapitel 2.1.3 erläuterten Layer-Modell. Die Karte wird in Anlehnung an Geo-Objekttypen in vier Schichten (Layer) unterteilt: • Punkt-Layer enthält alle Geo-Objekte des Geo-Objekttyps Punkt • Linien-Layer enthält alle Geo-Objekte des Geo-Objekttyps Linie • Linienzug-Layer enthält alle Geo-Objekte des Geo-Objekttyps Linienzug • Flächen-Layer enthält alle Geo-Objekte des Geo-Objekttyps Fläche Ein Geo-Objekt wird auf der Karte durch ein graphisches Element dargestellt. Betrachtet man bspw. einen Punkt als graphisches Element, kann er einerseits zur Darstellung eines Geo-Objekts dienen, anderseits ist der Punkt auch Teil einer Linie, die ihrerseits ein Geo-Objekt darstellt. Auch eine Linie bzw. ein Linienzug kann sowohl zur Darstellung eines Geo-Objekts als auch zur geometrischen Beschreibung eines flächenhaften Geo-Objekts dienen. In beiden Fällen haben diese graphischen Elemente eine andere Bedeutung, so dass eine Differenzierung erforderlich ist. Diese Differenzierung kann erfolgen, wenn man ein graphisches Element, das ein Geo-Objekt darstellt, als interpretiertes graphisches Element bezeichnet. Ein graphisches Element, das lediglich zur geometrischen Beschreibung eines Geo-Objekts dient, wird als uninterpretiertes graphisches Element 47 6 Ein Schichtenkonzept zur Visualisierung und Manipulation von Geodaten betrachtet. Aufgrund der Schichtenunterteilung nach Geo-Objekttypen wird vermieden, dass auf einer Schicht gleiche graphische Elemente zusammentreffen, die sowohl interpretiert als auch uninterpretiert sind. Dies hat zur Folge, dass ein interpetierter Punkt sich auf dem Punkt-Layer befindet und ein uninterprtierter Punkt der bspw. zur geometrischen Beschreibung einer interpretierten Linie dient, sich dann auf dem Linien-Layer befindet. Eine interpretierte Linie wird in das Linien-Layer gelegt, wohingegen eine uninterpretierte Linie, die Teil einer Begrenzung der Fläche ist, dem Fläche-Layer zugeordnet wird. Des weiteren kann sich auch auf der einzelnen Schicht eine weitere Unterteilung ergeben (Unterschichten). Einzelne Geo-Objekte beschreiben immer eine bestimmte Thematik. Die Zuordnung der einzelnen Geo-Objekte zu GeoObjektklassen erfolgt anhand der sie beschreibenden Thematik. Allerdings können Geo-Objekte derselben Klasse auch vom verschiedenen Typ sein. Bei Ortschaften bspw. unterscheidet man je nach deren Typ zwischen einer Stadt, Kleinstadt, Großstadt oder auch einem Dorf. Jeder Typ erhält dann eine Unterschicht (z.B. Ortschaften als Schicht mit den Unterschichten Stadt, Dorf usw.). Dabei ist die Anzahl der jeweiligen Unterschichten von der Anzahl des jeweils zu berücksichtigenden Typs einer Geo-Objektklasse abhängig (s. Abbildung 6.1). Geo-Objekttyp Flächen-Layer Linienzug-Layer Linien-Layer Punkt-Layer Typ1 ... Typ N Thematiktyp Abbildung 6.1: Das Schichtenkonzept Die Gesamtsicht einer einzelnen Schicht wird durch das Übereinanderlegen einzelner Unterschichten erreicht. Die Gesamtsicht der Karte erreicht man durch das Übereinanderlegen der einzelnen Schichten. Abschließend kann man sagen, dass es sich hierbei um ein doppeltes“ Layer” Modell handelt. Es erfolgt sowohl eine Unterteilung nach Geo-Objekttypen 48 6.1 Visualisierung von Geodaten (y-achse) als auch eine Unterteilung nach jeweiligem Thematiktyp (x-achse) . Der Vorteil dieses Schichtenkonzepts liegt in der leichten Realsierung des Sichtbarkeitsprinzips. Durch Ein- oder Ausblenden einzelner Schichten oder Unterschichten kann die gewünschte Sicht der Karte erreicht werden. Für das Anwendungsbeispiel ergibt sich damit folgende Verteilung nach GeoObjekttypen: • Punkt-Layer : Hier werden Städte dargestellt • Linien-Layer : Hier werden alle Verbindungen dargestellt • Linienzug-Layer : Hier werden alle Zuglinien dargestellt • Flächen-Layer : Hier werden alle Bundesländer dargestellt. Bei weiterer Unterteilung des Linienzug-Layer ergeben sich folgende Unterschichten: • nur RB-Zuglinie • nur EC-Zuglinie • nur IC-Zuglinie. 6.1.2 Wahl der Darstellung Im Folgenden wird die Darstellung von Geo-Objekten auf dem Bildschirm erläutert. Die Darstellungsform von Geo-Objekten hat sich an den jeweils zu vermittelnden Informationen zu orientieren. Dabei werden die in Kapitel 2.2.3 diskutierten graphischen Variablen angewendet. Die Darstellungsformen des DataMap-Sytems sind im VB-Code implementiert, was ein Nachteil dieses Systems ist. Für den Fall, dass diese Darstellungsformen für eine andere Anwendung nicht geeignet sind, muss der Code umgeschrieben werden. Im weiteren erfolgt deshalb die Auswahl der Darstellungsform anhand des Anwendungsbeispiels. Geo-Objekte vom Typ Stadt werden durch Punkte graphisch dargestellt. Die Form des Punktes ist abhängig von der Größe der Stadt bzw. ihrer Einwohnerzahl. Dabei orientiert sich die Darstellungsform an den Darstellungen von Städten in topographischen Karten des Diercke Weltatlas [Die 88]. Für die Darstellung der Stadt stehen drei Formen zur Verfügung: • bis 50000 Einwohner → ein durchsichtiger Kreis 49 6 Ein Schichtenkonzept zur Visualisierung und Manipulation von Geodaten • zwischen 50000 und 500000 Einwohner → ein Kreis mit einem kleineren mit schwarzer Farbe ausgefüllten Kreis in der Mitte • über 500000 Einwohner → ein ganz in schwarzer Farbe ausgefüllter Kreis. Die Kreise sind jeweils gleich groß und haben einen Radius von 7 Pixel. Ein Geo-Objekt vom Typ Verbindung wird durch eine Linie graphisch dargestellt. Je nach dem Typ der Verbindung (RB, EC oder ICE) werden die Linien unterschiedlich dargestellt. Ein RB-Verbindung wird durch schwarz gepunktete Linien, eine EC-Verbindung durch eine Linie aus schwarzen Punkten und Strichen und eine ICE-Verbindung durch eine schwarze durchgezogene Linie realisiert. Die graphische Darstellung für ein Geo-Objekt vom Typ Zuglinie ist ein Linienzug. Auch hier kommt es auf den Typ der Zuglinie (RB, EC oder ICE) an, so dass jeweilige Zuglinien in unterschiedlichen Farben und Formen dargestellt werden. Eine RB-Zuglinie ist in blauer Farbe dargestellt, für eine EC-Zuglinie wurde die grüne und für eine ICE-Zuglinie die rote Farbe gewählt. Die Wahl der Form erfolgt entsprechend der Wahl der Form für ein Geo-Objekt vom Typ Verbindung. Wird eine Zuglinie bestimmt, wird der Start- und Endpunkt (Städte) dann zusätzlich zu seiner Darstellungsform (Kreis) mit einem Quadrat umrahmt. Ein Geo-Objekt vom Typ Bundesland wird durch eine Fläche dargestellt. Dabei handelt sich um einen durch einen geschlossenen Linienzug begrenzten Bereich. Bei der Erzeugung einer Fläche wird das Innere gefärbt, wobei die Farbe zufällig berechnet wird. Dies ist im Code implementiert, um der Fläche schon bei der Erstellung eine Farbe zu geben. Hat man die gewünschte Fläche erstellt, kann anschließend auch die gewünschte Farbe ausgewählt werden. Punkte und Linien am Rand der Fläche werden grün markiert. Für die graphische Darstellung von Geo-Objekten werden interne WindowsZeichnenprozeduren benutzt. Es handelt sich dabei um Windows-API Routine GDI32.DLL. Diese Routine stellt eine Reihe von Zeichenfunktionen zur Verfügung, wie z.B. Arc, die ein Kreisbogen oder Ellipse, die eine Ellipse zeichnet. 6.2 Manipulation Der zweite Teil dieses Kapitels befasst sich mit der Manipulation der dargestellten Geo-Objekte. Dabei werden nicht die Geo-Objekte selbst, sondern die sie repräsentierenden Darstellungsformen und die in der Datenbank befindlichen Daten 50 6.2 Manipulation (Geodaten; Metadaten) manipuliert. Durch die Manipulation ist der Benutzer in der Lage, das Aussehen der Karte selbst zu beeinflussen. Dabei ist zwischen einer Manipulation der Gesamtdarstellung und einer Manipulation einzelner Objekte zu unterscheiden. Im DataMap-System sind diese zwei Arten der Manipulation realisert: 1. Manipulation der gesamten Darstellung 2. Manipulation der einzelnen Geo-Objekte. Die Manipulation der gesamten Darstellung erfolgt durch zwei Funktionen, Zoom und Pan. Mit dem Zoom wird der Ausschnitt der Karte vergrößert bzw. verkleinert. Damit können auftretende Übersichtsprobleme, z.B. bei größerer Anzahl dargestellter Geo-Objekte, gelöst werden. Wird die Karte vergrößert bzw. verkleinert, vergrößern bzw. verkleinern sich auch die jeweiligen Darstellungsformen. Mit der Pan-Funktion verschiebt man den gesamten Bildschirminhalt und zentriert ihn an der aktuellen Cursorposition neu. Die Pan-Funktion ist sehr hilfreich, wenn die Karte vergrößert wird. Durch das Bewegen der Karte können auch einzelne vorher nicht sichtbare Teile der Karte betrachtet werden. Da die Karte bereits in Schichten unterteilt wurde, ist die Manipulation der einzelnen Geo-Objekte schichtabhängig realisiert worden. Ein Geo-Objekt kann also nur auf der ihm zugehörigen Schicht manipuliert werden. Ein Geo-Objekt vom Typ Stadt kann nur auf dem Punkt-Layer und ein Geo-Objekt vom Typ Verbindung nur auf dem Linien-Layer manipuliert werden. Die Art der Manipulation einzelner Geo-Objekte ist abhänigig von der graphischen Darstellung des jeweiligen Geo-Objekts. Eine Fläche kann geteilt werden, ein Punkt hingegen nicht. Die im DataMap implementierten Arten der Manipulation basieren daher auf den Möglichkeiten einer Manipulation von graphischen Elementen. Da die implementierten Arten der Manipulation dabei anwendungsunabhängig sind, werden im Folgenden die Möglichkeiten der Manipulation anhand des Anwendungsbeispiels erläutert. Ein Punkt kann eingefügt bzw. gelöscht und von einer Position zu einer anderen bewegt werden. Aufgrunddessen sind im DataMap-System folgende Funktionen zur Manipulation von Geo-Objekten, die durch einen Punkt dargestellt sind, realisiert: • Einfügen und Löschen • Verschieben • Update Informationen, die an das Geo-Objekt gekoppelt sind, können verändert werden. 51 6 Ein Schichtenkonzept zur Visualisierung und Manipulation von Geodaten Einfügen eines Geo-Obejkts vom Typ Stadt erfolgt durch Einfügen eines Punktes auf der Karte. Die Bildschirmkoordinaten werden in Weltkoordinaten umgewandelt und sind in der Datenbank als Geodatenanteil des betreffenden Geo-Objektes zu speichern. Durch Anklicken des Punktes (rechte Maustaste) erscheint ein PopUp mit dazugehöriger Funktion TownProperties. Diese gibt die Möglichkeit, den Namen und die Einwohnerzahl zu bestimmen. Diese Informationen sind als Metadatenanteile in der Datenbank zu speichern. Gibt man die Einwohnerzahl ein, erhält der Punkt, der ein Geo-Objekt vom Typ Stadt darstellt, die seiner Einwohnerzahl entsprechende Darstellungsform (s. 6.1.2). Die Löschung erfolgt ebenfalls über das PopUp mit darin enthaltener Funktion Delete. Dabei wird die Darstellungsform des Punktes mit den ensprechenden Daten in der Datenbank gelöscht. Über das PopUp mit darin enthaltener Funktion TownProperties können Metadatenanteile verändert werden (Update). Das Verschieben erfolgt über das Anklicken eines Punktes (linke Maustaste) und dem Ziehen (bei gehaltener linker Maustaste) auf die gewünschte Position. Durch das Verschieben eines Punktes wird die Position (Koordinaten) neu berechnet, so dass sich der entsprechende Geodatenanteil ändert. Die Topologie des Punktes ändert sich nicht, da die an sie gebundenen Linien mitverschoben werden. Eine Linie kann ebenfalls eingefügt, gelöscht und bewegt werden. Darüber hinaus ist ein Teilen der Linie durch ein oder mehrere Punkte möglich. Angelehnt an diese Möglichkeiten sind folgende Funktionen für eine Manipulation von linienhaften Geo-Objekten realisiert worden: • Einfügen und Löschen • Verschieben • Update Informationen, die an das Geo-Objekt gekoppelt sind, können verändert werden. Das Geo-Objekt vom Typ Verbindung wird durch Ziehen (linke Maustaste) einer Linie zwischen zwei Punkten eingefügt. Es wird zunächst automatisch eine RB-Linie erzeugt, wobei über Town link properties (in PopUp) der Typ der Linie geändert werden kann. Darüber hinaus können hier auch die Angaben zur Länge der Verbindung angegeben werden (Update). Löschen erfolgt über Abrufen des PopUp (rechte Maustaste), in dem der Befehl Delete enthalten ist. Beim Löschen wird sowohl die Darstellungsform als auch der entsprechende Datensatz gelöscht. Das Verschieben der Linie erfolgt über das Verschieben des Punktes. Aufgrund der konzeptuellen Modellierung (Verbindung ist sog. schwache Entität) ist eine Teilung einer Linie im DataMapSystem nicht realisiert. Eine Teilung kann aber 52 6.2 Manipulation indirekt simuliert werden. Dies erfolgt durch Löschung einer Linie, Einfügen eines Punktes und anschließendem Verbinden dieses Punktes mit den verbliebenen Punkten. Auch die Manipulation des Geo-Objekts, das durch einen Linienzug dargestellt ist, orientiert sich an den Möglichkeiten der Manipulation des graphischen Elements Linienzug. So kann ein Linienzug erzeugt werden, sowohl ganz gelöscht als auch in einzelne Segmente aufgeteilt werden. Im DataMap-System werden folgende Funktionen realisiert: • Einfügen und Löschen • Verschieben • Teilen • Update Informationen, die an das Geo-Objekt gekoppelt sind, können verändert werden. Um ein Geo-Objekt vom Typ Zuglinie zu erzeugen, müssen sowohl Punkte als auch Linien existieren. Einfügen, Löschen und Update eines Linienzuges erfolgt analog zur bezüglich der Linie erklärten Vorgehensweise. Der Linienzug kann in Segmente aufgeteilt werden. Dies erfolgt durch Löschung eines Punktes (Haltestelle) oder einer Linie zwischen diesen Punkten, die jeweils Teil des Lininezuges sind. Dadurch entstehen zwei neue Linienzüge, die man neu benennen muss (aus Route1 werden Route2 und Route3). Erfolgt die Teilung an den ersten beiden Punkten (Haltestellen) bzw. an den letzten zwei, wird der Linienzug lediglich verkürzt. Eine Verkürzung erfolgt auch, wenn man die jeweiligen Anfangs- bzw. Endlinien löscht. Das Verschieben des Linienzuges erfolgt durch Verschiebung der sich auf ihm befindlichen Punkte. Eine Fläche kann gelöscht werden. Es kann auch eine neue Fläche erzeugt werden. Ebenso ist es möglich, eine Fläche zu editieren. Einzelne Punkte auf der Grenze der Fläche können eingefügt bzw. gelöscht werden. Diese Möglichkeiten ergeben folgende Funktionen für flächenhafte Geo-Objekte: • Löschen existierender und Einfügen neuer Fläche • Einfügen eines neuen Punktes auf der Grenze der Fläche • Editieren einzelner Flächen • Update Information, die an das Geo-Objekt gekoppelt sind, können verändert werden. 53 6 Ein Schichtenkonzept zur Visualisierung und Manipulation von Geodaten Die Fläche wird erzeugt, indem Grenzpunkte gesetzt und anschließend miteinander verbunden werden. Ebenfalls ist es möglich mit dem Ziehen einer Linie zu beginnen, die automatisch, je nach der gewünschten Form der Fläche, Punkte setzt und sie miteinander verbindet. Zieht man eine weitere Linie entsteht automatisch eine Teilfläche, die sich dem Ganzen einfügt. Durch die Möglichkeit eine unbegrenzte Zahl an Linien zu ziehen, kann man die Größe und die Form der Fläche bestimmen (s. Abbildung 6.2). Durch das Setzen der Punkte werden die Grenzpunkte definiert. Mit der Verbindung dieser Grenzpunkte wird eine Kontur der Fläche erzeugt. Die Kontur gibt an, welche Grenzpunkte eine Fläche bestimmen. Dadurch kann ein Benutzer auf dem jeweiligen Grenzpunkt weitere Flächen erzeugen und muss nicht neue Grenzpunkte definieren. Ein und derselbe Grenzpunkt kann zur Bestimmung mehrerer Flächen (Konturen) dienen. Bei der Löschung der Flächen wird zunächst die ihr zugehörige Kontur gelöscht. Die Grenzpunkte bleiben erhalten und können nach Bedarf einzeln gelöscht werden, wobei man mit verbleibenden Punkten eine neue Fläche erzeugen kann. Abbildung 6.2: Beispiel einer Fläche Um für eine bestimmte Fläche auch Informationen eingeben zu können, muss sie zunächst ausgewählt werden. Über das PopUp können Area properties abgerufen werden. Einzelne Flächen können editiert werden, indem man neue Grenzpunkte einfügt, existierende löscht, sie verschiebt, mehrere Punkte zu einem zusammenfasst oder alle löscht. Bei der Verschiebung und Löschung der Grenzpunkte, muss berücksichtigt werden, dass sie auch als Grenzpunkte anderer Flächen dienen. Treffen an einem Punkt zwei Flächen aufeinander, bewirkt die Bewegung dieses Punktes auch eine Bewegung der jeweiligen Flächen. Wird ein Grenzpunkt gelöscht, verbinden sich die benachbarten Grenzpunkte und geben damit den jeweiligen Flächen eine neue Kontur. Darüber hinaus kann auch ein Punkt über den Befehl Split shared point des PopUp nur einer Fläche zugeordnet werden. Mit diesem Befehl kann man ein Duplikat eines Grenzpunktes erzeugen und ihn seperat für die jeweilige Fläche betrachten. Durch das Editieren des Duplikats ändert sich die Kontur nur einer Fläche (s. Abbildung 6.3). Damit ist es möglich, eine neue Flächenkonturen für die ausgewählte Fläche zu erzeugen, ohne einen neuen Grenz- 54 6.2 Manipulation punkt einzufügen. Der urpüngliche Grenzpunkt bleibt an seiner Stelle und gehört damit zu der anderen Fläche. a) Ausgang b) ohne Split c) mit Split Abbildung 6.3: Editieren einer Fläche Es ist auch möglich mit der linken Maustaste mehrere Grenzpunkte auszuwählen. Diese Grenzpunkte werden umrahmt, wobei das PopUp automatisch mit den dazugehörenden Befehlen Merge selected point und Delete selected point erscheint. Dadurch können die ausgewählten Grenzpunkte zu einem Punkt zusammengefasst oder aus der Flächenkontur gelöscht werden. Dies bewirkt ebenfalls eine Änderung der Flächenkontur. Wird ein Geo-Objekt auf seiner Schicht gelöscht, kann dies Auswirkungen auf Geo-Objekte auf anderen Schichten haben. Dies ergibt sich aus der in der konzeptuellen Ebene bestehenden Abhängigkeit zwischen den einzelnen Geo-Objekten. Da eine Linie nur existiert, wenn auch zwei Punkte existieren, hat die Löschung eines Punktes zur Folge, dass die entsprechende Linie auch nicht existieren kann. Im Hinblick auf den Linienzug gilt dasselbe, da auch er nur über existierende Punkte und Linien hergestellt werden kann. Dieses Problem wird dadurch umgangen, dass den jeweiligen Schichten eine bestimmte Priorität gegeben wird: • Punkt-Layer hat Priorität 1 • Linien-Layer hat Priorität 2 • Linienzug-Layer hat Priorität 3 • Flächen-Layer hat Priorität 4. Dabei hat Priorität 1 die höchste Priorität und Priorioriät 4 die niedrigste. Da die Proritätenzuordnung alleine nicht zur Problemlösung beiträgt, ist darüberhinaus folgende Regel anzuwenden: • Änderungen auf einer Schicht mit höherer Priorität haben Auswirkungen auf Schichten niedrigerer Priorität. 55 6 Ein Schichtenkonzept zur Visualisierung und Manipulation von Geodaten • Änderungen auf Schichten niedriegerer Priorität haben hingegen keine Auswirkungen auf Schichten mir höherer Priorität. Dies bedeutet, dass die Löschung eines Geo-Objekts vom Typ Stadt auch die Löschung der von ihm ausgehenden Geo-Objekte vom Typ Verbindung bewirkt. Die Löschung einer dem Geo-Objekt vom Typ Zuglinie gehörenden Haltestelle hat hingegen keine Auswirkung auf die Geo-Objekte vom Typ Stadt. 56 7 Architektur und Funktionalität des DataMap-Systems 7.1 Architektur und Komponenten DataMap ist ein aus mehreren Komponenten bestehendes System, dessen Aufbau im nachfolgendem Kapitel erläutert wird. Die Architektur des DataMap-Systems kann als schichtenmäßig betrachtet werden und setzt sich aus folgenden Komponenten zusammen: • Presentation-Komponente • Processing-Komponente • Database-Komponente. Die komplexeste Struktur und die wichtigste Bedeutung hat die ProcessingKomponente. Sie verwaltet die Daten, führt das Update für diese durch und hält die Konsistenz der Datensätze aus der Datenbank und den Objekten im Zwischenspeicher, die diesen Datensätzen entsprechen, aufrecht. Beim Start des Programms liest diese Komponente mit Hilfe der Database-Komponente alle Datensätze aus der Datenbank und erzeugt sie in Objekte, die zueinander in Beziehung stehen, z.B. eine Verbindung ist ein Objekt und verbindet immer zwei Städte. Alle Befehle des Benutzers zum Einfügen neuer, Manipulation oder Löschen bestehender Objekte werden von der Processing-Komponente empfangen. Die Processing-Komponent registriert alle vorgenommenen Änderungan an dem jeweiligen Objekt. Sobald sich der Benutzer für eine Speicherung der vorgenommenen Änderungen entschieden hat (Save), durchläuft diese Komponente alle Strukturen, die durch Objekte geschaffen wurden und aktualisiert sie anhand der registrierten Änderungen in der Datenbank. Alle eingegebenen Befehle werden durch die Klasse Map verwaltet. Die Klasse beinhaltet ihererseits mehrere Klassen, die wiederum jeweils gleichartige Obejkte verwalten. Es bestehen folgende Klassen: • AllPoints beinhaltet eine Liste aller exisitierenden Punkte (sowohl solche, die Geo-Objekte vom Typ Stadt als auch solche, die Flächen begrenzen) 57 7 Architektur und Funktionalität des DataMap-Systems • AllTowns beinhaltet eine Liste aller Städte • AllTownLinks beinhaltet eine Liste aller Verbindungen • AllRoutes hat gleichzeitig drei Instazen, so dass in einer Instanz sich die ICE-, in einer anderen die EC- und in der dritten die RB-Routen befinden • AllAreas beinhaltet eine Liste aller Flächen. Zusätzlich zur Verwaltung gleichartiger Objekte, definieren diese All“-Klassen ” die Funktionen und Prozeduren für alle Objekte einer Klasse. AllRoutes hat bspw. eine Funktion, die für eingegebene X und Y Koordinate die Zuglinie erkennt, die durch diesen Punkt geht (findRoutesViaOneTown). Dabei geht die Funktion die Liste der Zuglinien durch, um zu überprüfen, welche der Zuglinien durch den eingegebenen Punkt verläuft. Wenn sie eine solche erste Zuglinie erkannt hat, gibt sie sie als Ergebnis zurück. Die eigentliche Überprüfung, ob eine Zuglinie durch diesen Punkt geht, findet nicht in diesen AllRoutes Klassen statt, sondern in der Klasse Route. Damit die Route überprüfen kann, ob die Zuglinie durch den Punkt verläuft, wird sie die ganze Liste ihrer Haltestellen (Städte) durchlaufen, Segment für Segment, von Stadt zu Stadt und wird mit Hilfe analytischer Geometrie überprüfen, ob der eingegebene Punkt einem dieser Segmente angehört (Funktion isViaTown). Im Hinblick auf die übrigen Klassen (AllTown, AllTownLink, AllArea) gilt dasselbe. Jeder Befehl zur Änderung von Daten wird von der Klasse Map verwaltet. Diese leitet den Befehl der jeweiligen Klasse zu, die gleichartige Objekte vereint. Diese Klasse wiederum sucht sich Objekte aus der Liste aus, die die gewünschten Änderungen betreffen. Die gewünschte Änderung führt damit das betreffende Objekt an sich selbst durch. Wenn bspw. ein Befehl eingegeben wird, dass sich alle ICE-Zuglinien teilen sollen, die über die Stadt Bonn führen, leitet die Klasse Map diesen Befehl an die Klasse AllRoutes weiter. AllRoutes geht unter der Verwendung der Funktion isViaTown (t) der Klasse Route zunächst die Liste aller ICE-Zuglinien durch und überprüft, welche Zuglinien durch die eingegebene Stadt führen. Falls eine ICE-Zuglinie aus der Liste nicht über die entsprechende Stadt führt, wird die nächste ICE-Zuglinie aus der Liste überprüft. Führt eine ICE-Zugline durch die entsprechende Stadt, wird die Prozedur breakAtTown der Klasse Route, abgerufen. Diese Prozedur teilt die Zuglinie in zwei Teile, so dass damit die urpsrüngliche Zuglinie nicht mehr besteht, sondern nur ihre zwei Teile. Da aber die Processing-Komponente alle Änderungen registriert, kann eine richtige Aktualisierung der Datensätze in der Datenbank erfolgen. Diese Weitergabe von Aufgaben von Klasse zu Klasse, wiederhholt sich im ganzen System. Jedes Mal wenn die Aufgabe an eine Unterklasse gegeben wird, 58 7.1 Architektur und Komponenten wird der Prozess immer einfacher. Mit dieser Weitergabe von Aufgaben kann eine komplexe Aufgabe in kleinere Teilaufgaben zerlegt werden. Weiterhin befinden sich in der Processing-Komponente die Klassen, in dessen Instanzen sich die Daten über Entitäten aus der Datenbank befinden: • Point • Town • TownLink • Route • Area. Dabei hat jeder Town genau einen Punkt, der seine Position repräsentiert. Jeder Town-Link entählt genau zwei Town’s, die erkennen lassen, dass eine direkte Verbindung zwischen ihnen besteht. Jede Route enthält eine Liste der Towns, durch die sie führt. Jede Area hat eine Liste von Konturen, die ihrerseits eine Liste von allen Punkten enthält, die sie definieren. Die Presentation-Komponente besteht aus mehreren Klassen, die die Tools (Werkzeuge zum Manipulieren von Punkten, Linien, Linienzügen und Flächen) implementieren. Die der Presentation-Komponente zugehörige Klasse ViewPort führt die erforderliche Umwandlung von Geo-Koordinaten in Bilschrimkoordinaten und umgekehrt durch. Die Klasse Graphics ist auch Teil dieser Komponente, die die Funktionen und Prozeduren zur Visualisierung von Objekten auf dem Bildschirm enthält. Die Visualisierung erfolgt auf dem VisualBasic-Steuerelment PictureBox“. ” Die Umwandlung in Bildschrimkoordinaten ist notwendig, um Objekte auf dem Bildschirm darzustellen. Da bei der Manipulation von Objekten alle Koordinaten in Pixel angegeben sind, ist eine Umwandlung von Bildschirmkoordianten in Geo-Koordinaten notwendig. Sie lassen sich aber sehr einfach in Geo-Koordinate umrechenen, wenn man den 4 Bildschrimrandkoordinaten den Geo-Koordinaten zuordnet. Die Zoom-Funktion ist durch eine Multiplikation oder Division der Koordinate mit einem bestimmten Faktor realisiert worden. Eine doppelt vergrößerte Ansicht erfolgt durch Multiplikation aller Koordinaten mit Faktor zwei. Für eine vierfache Verkleinerung werden die Koordinaten durch Faktor vier geteilt. In der Klasse Graphics sind Funktionen und Prozeduren zum Zeichnen elementarer graphischer Figuren definiert: Kreis, Dreieck, Linien, Linienzüge, Auswahl der richtigen Farbe oder der Form der Linie (bsw. gepunktete, durchgängig 59 7 Architektur und Funktionalität des DataMap-Systems unterbrochene, Punkt-Linie-Punkt). Die notwendigen Koordinaten für das Zeichnen sind Bildschrimkoordinaten, die die ViewPort Klasse zur Verfügung stellt. Die Operation für die Erstellung einer Karte geht dennoch von der Klasse Map aus. Sie erhält von dem System den Befehl zur Darstellung des derzeitig gespeicherten Zustandes der Karte. Die Map Klasse leitet auch hier die Befehle an die Klassen AllAreas, AllTownsLinks, AllRoutes, AllTowns (in dieser Rheinfolge) weiter . Diese All“-Klassen befehlen jedem seiner Elemente (Area, ” TownLink, Route, Town) sich selbst zu zeichnen. Für diese Aufgabe stellt Map ihm ViewPort ein Objekt, das die Koordinaten umrechnet und Graphics ein Objekt zum Zeichnen, zur Verfügung. Jedes der Tool-Objekte, wenn es aktiviert ist, erhält Informationen über die Bewegung und das Klicken der Maus. Für jedes Tool bedeuten diese Informationen was anderes, so dass jedes Tool nach seiner Logik entscheidet, was der Benutzer eigentlich will. Diesen Befehl gibt das jeweilige Tool weiter an die Map Klasse zum Ausführen. Nachdem die Map Klasse das Befehl durchgeführt hat, stellt sich eine neue Darstellung der Karte dar, die durch diesen Befehl entstanden ist. Die Database-Komponente hat die Aufgabe grundlegende Operationen zu definieren (Insert, Update, Delete, Select, Transaction), die das System über die Datenbank ausführen soll, unabhängig davon um welche Art der Datenbank es sich handelt. In dieser Komponente sind Interface definiert, die dem System einen Datenbankzugriff ermöglichen unabhängig von der Datebankzugriffsmethode (ADO, RDO, DAO). Es handelt sich dabei um: • Database • DatabaseTransaction • DatabaseInsert • DatabaseUpdate • DatbaseDelete • DatbaseSelect. Interface ist eine Klasse, die keine Implentation hat, obwohl es möglich ist mehrere dieser Implementationen einzuführen. Das DataMap-System hat sechs Klassen, durch die jeweils ein Interface implementiert ist. Jedes dieser Interface zeigt, wie eine Datenbank-Operation implementiert wird, wenn der Zugriff auf die Datenbank über eine ADO-Schnittstelle erfolgt. Diese Implementation trägt Rechnung darüber, dass eine Transaktion beginnen kann. Darüber hinaus 60 7.2 Oberfläche: Design und Funktionen ermöglicht sie dem System eine beliebige Anzahl von Einzelaktionen in einer Transaktion durchzuführen. Wenn alle Änderungen erfolgreich waren, erstellt sie ein commit“ dieser Änderungen. Im Falle einer nicht erfolgreichen Änderung ” efolgt ein rollback“, so dass die Datenbank in den ursprünglichen Zustand ” versetzt wird. Jede von den ADO“-Klassen (AdoDatabaseInsert, AdoDatabaseUpdate, Ado” DatabaseDelete, AdoDatabaseSelect) empfängt mit Hilfe der im Interface genannten Prozeduren, Informationen welche Daten geändert werden sollen. Auf Grundlage dieser Daten erstellt die Klasse ein SQL Statement, das über die ADO-Schnittstelle ausgeführt wird. Die Speicherung der Daten beginnt damit, dass die AdoDatebase Klasse eine Instanz der Klasse SaveMapDatabaseTransaction erhält. Diese Klasse beginnt lediglich die Transaktion, wobei die gesamte Speicherung der Daten in die Datenbank die Klasse Map durchführt. Sie wiederum leitet den Befehl zum Speichern weiter an die All“-Klassen, die ihrerseits den Befehl den einzelnen Objekten ge” ben, so dass sich die Objekte im Endeffekt selbst speichern. Ähnlich erfolgt der Einlesevorgang der Karte aus der Datenbank. Diese Operation beginnt, wenn die Klasse ADODatabase die Prozedur execute“ auf der Instanz der Klasse Load” MapDatabaseTransaction ausführt, die in dieser neu begonnennen Transaktion der Klasse Map ermöglicht all ihre Teile zu speichern, was wiederum mittels der All“-Klassen und ihrer Elemente erfolgt. ” 7.2 Oberfläche: Design und Funktionen Bei der Erstellung des Oberflächendesigns war primäres Ziel eine benutzerfreundliche Anwendung zu ermöglichen. Ein Benutzer, der das DataMap-System nicht kennt, soll in der Lage sein auf Anhieb die ihm zur Verfügung stehenden Möglichkeiten zu erkennen und sie anzuwenden. Das Oberflächendesign des DataMapSystem orientiert sich an dem des ArcView. Damit besteht die Oberfläche aus mehreren Teilen (s. Abbildung 7.1): • Menüleiste • Kartenfenster • Toolbox • Informationsfenster • Scrollbars 61 7 Architektur und Funktionalität des DataMap-Systems In der Menüleiste stehen dem Benutzer drei Menüpunkte mit ihr zugehörigen Befehlen zur Verfügung (File, View und Tool). Abbildung 7.1: Oberflächendesign Das Menü File enthält die Befehle Save und Quit. Mit dem Save-Befehl werden alle vorgenommen Änderungen auf dem Bildschirm in die Datenbank gespeichert. Dadurch wird dem Benutzer die Möglichkeit gegeben selbständig zu entscheiden, ob die geänderten Daten auch in der Datenbank aktualisiert werden sollen. Durch den Quit-Befehl wird die Sitzung beendet. Falls vorher eventuelle Änderungen nicht gesichert sind, gehen sie bei der Schließung des Programms verloren. Weiterhin befindet sich in der Menüleiste das Menü View. Über die Befehle ZoomIn und ZoomOut ist der Benutzer in der Lage, die dargestellten Objekte zu vergrößern (ZoomIn) oder zu verkleinern (ZoomOut). Über den Befehl Normal können die Objekte ohne einen Zoomfaktor betrachtet werden. Das Menü Tool enthält elf Befehle. Da es für den Benutzer sehr unbequem und umständlich ist, ständig in das Menü zu gehen und dort die jeweiligen Befehle 62 7.2 Oberfläche: Design und Funktionen immer von neuem auszuwählen, wurde zusätzlich eine ToolBox erstellt. Mit Hilfe dieser Tools kann man sehr einfach und schnell die Befehle ausführen, ohne die Menüleiste in Anspruch zu nehmen. Die Tools entsprechen den Befehlen des Menüs Tool. Die ToolBox befindet sich auf der linken Seite der Oberfläche. Mit dem Tool Create town sind Funktionen zum Einfügen, Löschen und Update von Punkten realisiert. Hierzu ist es zunächst erforderlich das Tool Create town mit der linken Maustaste anzuklicken. Will man einen Punkt einfügen, muss die Maus auf die gewünschte Stelle bewegt werden und anschließend ist mit der linken Maustaste anzuklicken. Auf dem Bildschirm erscheint automatisch eine Bennenung Town1. Will man weitere Punkte einfügen, erfolgt dies in gleicher Vorgehensweise, wobei die Punkte eine durchlaufende Nummerierung erhalten Town2, Town3 usw.. Mit dem rechten Maustasteklick auf einen gewünschten Punkt, können über PopUp die Lösch- und UpdateFunktionen abgerufen werden. Bei der Update Funktion erscheint ein Fenster, in dem man entsprechende Informationen (Einwohnerzahl, Name) eingeben kann. Das Tool Move town realisiert die Funktion zum Verschieben von Punkten. Dies erfolgt mit gehaltener linke Maustaste und Bewegung der Maus zur gewünschten Stelle. Funktionen zum Einfügen, Löschen und Update von Linien sind über das Tool Create town link realisiert. Auch hier muss man zunächst das Tool Create town link anklicken. Anschließend kann man mit gedrückter linker Maustate eine Linie von einem Punkt zum anderen einfügen. Update und Löschen erfolgt analog zur oben erklärten Vorgehensweise. Mit dem Tool Pan ist die Pan-Funktion realisiert. Dabei klickt man immer zunächst das Tool, anschließend eine Stelle auf der Karte an und zieht das Bild bei gehaltener linker Maustaste in die gewünschte Richtung. Die Zoom-Funktion ist im Tool Zoom realisiert. Mit dem linken Mausdruck kann man die Karte vergrößern und mit dem rechten Mausdruck verkleinern. Die in Kapitel 6.2 erklärte Manipulation eines Linienzuges als Darstellungsform für ein Geo-Objekt vom Typ Zuglinie wird durch folgende Tools realisiert, wobei eine Unterscheidung nach dem Typ der Zuglinie erfolgt: • Create RB Route • Create EC Route • Create ICE Route Auch hier muss zunächst das entsprechende Tool angeklickt werden. Mit der linken Maustaste werden die Linienzüge erzeugt, mit der rechten kann man die 63 7 Architektur und Funktionalität des DataMap-Systems Funktionen Löschen und Updaten abrufen. Unter den Tools befindet sich die Auswahlliste. In dieser befinden sich alle Linienzüge, die man erzeugt hat. Will man einen bestimmten Linienzüge updaten oder löschen, muss man sie zunächst in der Auswahlliste anklicken. Der ausgewählte Linienzug erscheint auf dem Bildschirm, so dass man ihn weiter manipulieren kann. Mit Tool Create area sind die Funktionen Erstellen neuer Flächen, Update und Löschen einer Fläche realisiert worden. Daneben befindet sich eine CheckBox, mit der man die gesamte Fläche ein- und ausblenden kann. Darüber hinaus befindet sich unter dem Tool die Auswahlliste, durch die man einzelne Flächen ansprechen kann. Über das PopUp gelangt man zu den Area properties. In dem Fenster können sowohl der Name der Fläche eingegeben werden, als auch deren Farbe eingestellt werden. Die Grundfarben sind RGB-Farben, wobei man ihre Werte anhand ihrer jeweiligen Leisten flexibel anpassen und damit die Farbe bestimmen kann. Mit dem Tool Edit Area wurde die Funktion zum Editieren von Punkten auf der Flächenbegrenzung realisiert. Mit der rechten Maustaste gelangt man auf die Befehle Delete point und Split shared point. Mit gedrücker linker Maustaste könnnen Punkte umrahmt werden, die zusammengefasst und aus der Kontur gelöscht werden sollen. Das Tool Map ermöglicht eine Manipulation des Aussehens der Karte. Unter dem Tool befinden sich mehrere CheckBoxen, mit denen man einzelne Schichten der Karte ein- oder ausblenden kann. In Verbindung mit den Map Tools dient das Informationsfenster einer schnelleren Erkennung der dargestellten Objekte. Durch das Anklicken eines Objekts mit der linken Maustaste gibt das Informationsfenster alle zur Zeit verfügbaren Informationen wieder (Einwohnerzahl, Distanz usw.) Die Scrollbars befinden sich horizontal und vertikal am Oberflächenrand. Sie dienen der Bewegung der Karte von links nach rechts und von oben nach unten. 64 8 Zusammenfassung und Ausblick Das angestrebte Ziel dieser Diplomarbeit war die Entwicklung eines Systems, das in der Lage ist anhand der in der relationalen Datenbank gepeicherten Daten eine interaktive 2D-Bildschrimkarte zu erstellen. Dabei ist das DataMapSystem nicht lediglich einer Weiterentwicklung des VirtualMap-Systems. Das DataMap-System ist ein eigenes System, das mit VirtualMap lediglich auf einer gemeinsamen Idee der visuellen Darstellung und Manipulation von Geo-Objekten basiert. Die in der relationalen Datenbank gespeicherten Daten beschreiben einen Ausschnitt der realen Welt (Miniwelt). Das DataMap-System ist in der Lage alle Anwendungsbereiche zu realisieren, die sich durch das für DataMap erarbeitete Datenbankschema beschreiben lassen. Alle Ausschnitte der realen Welt, die sich durch Punkte, Linien, Linienzüge oder Flächen darstellen lassen, können durch das DataMap-System realisiert werden. Dabei ist keine funktionelle Änderung im Code, sondern ledigliche eine thematische Anpassung erforderlich. Anwendungsbereiche, die ebenfalls über das DataMap-System in Betracht kommen, sind bspw. Taxinetz, Straßenverkehrsnetz, Flugliniennetz oder auch ein Stadtplan. Da das DataMap eine interaktive Karte erstellt, ist Benutzer nicht lediglich passiver Betrachter der Karte. Er kann aktiv das Aussehen der Karte beeinflussen. Dafür bietet ihm das DataMap-System Funktionen, durch die er eine Karte nach seinen Bedürfnissen und Wünschen erstellen kann. Dies betrifft zum einen die Manipulation der gesamten Darstellung (Zoom, Pan) und zum anderen die Manipulation einzelner Obejkte. So kann der Benutzer Punkte und Linien einfügen, löschen und verschieben. Darüber hinaus kann er Flächen erstellen und löschen, Aussehen der Fläche bezüglich Farbe und Form verändern. Er kann ganze Linienzüge einfügen, löschen als auch auf einzelne Segmente teilen. Trotz dieser breiten Möglichkeiten ist es dennoch nicht gelungen alle möglichen Anwendungsbereiche in einem System zu vereinen. Dies hängt damit zusammen, dass ein Geo-Objekt je nach der Fragestellung anders modelliert werden kann. Darüber hinaus kann auch die Thematik einzelner Geo-Objekte erweitert oder eine neue betrachtet werden. 65 8 Zusammenfassung und Ausblick Auch sind die Darstellungsformen des DataMap-Systems an das Anwendungsbeispiel geknüpft, was ein Nachteil dieses Systems ist. Die verschiedenen Darstellungsformen könnten im Code definiert werden und über eine Tabelle dem jeweiligen Anwendungsobjekt zugewiesen werden. Die Teilung einer Fläche kann durch die im System definierten Manipulationsmöglichkeiten simmuliert werden. Es muss aber auch möglich werden, eine direkte Teilung durch Verbinden zweier Grenzpunkte zu realisieren. Der im DataMap-System implementierte Datenbankzugriff ermöglicht nur den Zugriff auf eine bestimmte Datenbank. Will man den Zugriff auf eine andere Datenbank ermöglichen, müsste im Code der Name der Datenbank geändert werden. Hier besteht die Möglichkeit eine Implementation in Betracht zu ziehen, dass das System eine Auswahl von Datenbanken bietet und fragt, auf welche Datenbank es zugreifen soll. Alles in allem bietet das DataMap-System eine gute Grundlage für eine künftige Weiterentwicklung. 66 Literaturverzeichnis [BZ 01] Bill R., Zehner L.M: Lexikon der Geoinformatik, Heidelberg, Wichmann, 2001 [Str 03] Prof.Dr. Streit U.: Einfürung in die Geoinformatik -Vorlesung und Übung, Institut für Geoinformatik, Uni-Münster, 2003 (ifgivor.uni-muenster.de/vorlesungen/Geoinformatik) [Bar 95] Bartelme N.: Geoinformatik, Berlin, Springer, 1995 [BF 91] Bill R., Fritsch D.: Grundlagen der Geo-Informationssyteme - Bd.1&2, Karlsruhe, Wichmann Verlag, 19991 [Lan 02] N.de Lange: Geoinformatik in Theorie und Praxis, Berlin, Springer, 2002 [Kem 95] Kemper A., Eickler A.: Datenbanksysteme - Eine Einführung, Passau, Oldenbourg, 1995 [Che 76] Peter Chen: The Entity-Relationship-Model, Towards A Unified View of Data, ACM Transaction On Database Systems, Vol.1, No.1:9-36, 1976 [Dba 03] Plan des ICE-/IC-/EC-Netzes der Deutschen Bahn, Stand 2003/2004 (www.bahn.de/pv/view/mdb/content/pdf/fernverkehr/ice 2004.pdf) (www.bahn.de/pv/view/mdb/content/pdf/fernverkehr/ec ic 2004.pdf) [Kün 03] Lutz Künicke: Entwurf eines Werkzeuges für Visualisierung und interaktiven Manipulation von Geodaten - Diplomarbeit, Bonn, 2003 [Die 88] DIERCKE Weltatlas - Braunschweig, Westermann, 1988 [DZ 01] Frank Dickmann, Klaus Zehner: Computerkarographie und GIS, Braunschweig, Westermann, 2001 [Cod 70] Codd E.F.: A Relational Model of Data for Large Shared Data Banks, Communication of the ACM 13, 377-387 [Hak 82] Günter Hake: Kartographie I, Berlin, New York, de Gruyter, 1982 [Hak 85] Günter Hake: Kartographie II, Berlin, New York, de Gruyter, 1985 67 Literaturverzeichnis [GS 98] Gumm H.-P., Sommer M.: Einführung in die Informatik, 3. Auflage, München, Wien, Oldenbourg, 1998 [RP 97] Rechenberger, P., Pomberger, G.: Informatik-Handbuch, München, Wien, Hauser, 1997 [SB 97] Saurer H., Behr J.-B.: Geographische Informationssysteme - Eine Einführung, Darmstadt, Wissenschaftlicher Buchgeselschaft, 1997 [Fue 99] Fuest R.: GIS Einführung. ArcView, Institut für Kartographie, Uni Freiburg, 1999 (www.geographie.uni-freiburg,de/ipg/personen/fuest/old/giskurs/gis.html [ActVB] ActiveVB - Der deutschefachseite für Visual Basic (www.activevb.de) [MSLib] MSDN Online Library (www.msdn.microsoft.com/library) [Spo 02] Spona Helmut: Visual Basic 6, Bonn, Buch AG, 2002 [Per 98] Perry Greg: Visual Basic 6 in 21 Tagen, Haar bei München, SAMS, 1998 [DK 00] Doberenz, Kowalski: Visual Basic 6 -Grundlagen und Profiwissen, Hanser, 2000 [ArcV] ArcInfo and ArcView resources on the Net (www.geogr.uni-jena.de/c5sthe/esriresources.html) [Kof 98] Kofler Michael: Visual Basic 6 -Programmiertechniken, Datenbanken, Internet - München, Addison Wesley, 1998 [Gis 03] GIS-Tutorial Online 3.0 (www.gis-tutor.de) 68