Geodaten und GIS Aufgaben und Design eines DBS ● ● ● ● ● Geographische Daten werden üblicherweise in einer oder mehreren Datenbanken (DB) gespeichert Ein Datenbankmanagementsystem (DBMS) dient der Verwaltung der Datenbanken Zusammen bilden diese ein Datenbanksystem (DBS) Einzelne Dateien <-> Datenbanksystem DBS ersetzen in vielen Bereichen die Arbeit mit einzelnen Dateien Datenbanksystem Vor- und Nachteile eines DBS ● Vorteile: – Keine parallelen Datenbestände (Redundanz) – Gleichzeitiger Zugriff durch mehrere Benutzer – Hohe Datensicherheit (Backups, Zugangskontrolle) – Effizienter Zugriff auf große Datenmengen – Unabhängikeit vom Anwendungsprogramm – Daten können beschrieben und bearbeitet werden (Abstraktion, Metadaten) Vor- und Nachteile eines DBS ● Nachteile: – Komplexität (DB, Bedienung) – Transfer von Teildaten an andere Nutzer schwierig – Muss gepflegt werden Drei-Schema-Modell ● Die Modellierung von Daten unterliegt einem Drei-Schema-Modell: – Konzeptionelles Schema: Organisation der Daten hinsichtlich ihres Informationsgehaltes und der Zusammenhänge aus Sicht des der Anwenders. – Logisches Schema: Organisation der Daten im Hinblick auf das einzusetzende Datenbanksystem (relational, objekt-relational, objekt-orientiert) – Physisches Schema: Organisation der Daten im Hinblick auf die Speicherung und Zugriff im eingesetzten Datenbanksystemen. Wie sieht der Anwender die Daten? Wie sind die Daten strukturiert? Wie werden die Daten gespeichert? Datenmodell ● Ein Datenmodell ist ein logisches Konzept, die anfallenden Daten zu gliedern, zueinander in Bezug zu setzen und zu speichern. Verbindung mit räumlichen Infos ● ● Geoobjekte (Features) werden über Attribute (Zahlen oder Zeichen) mit Datenbankeinträgen (Tabellen) verbunden. Diese Attributstabellen enthalten dann weitere Informationen zum Geoobjekt. Verbindung mit räumlichen Infos ● ● Zeilen enthalten die Attribute zu einem Geoobjekt: Jedes Geoobjekt wird durch eine Zeile in der Tabelle beschrieben Relationale Datenbanken ● Die Attribute können über mehrere Tabellen verteilt sein, z.B. getrennt nach Sachebene. – ● Hierdurch wird die Struktur übersichtlich und einfacher verwaltet werden. Die Verbindung erfolgt über ein gemeinsames Feld („Schlüssel“) das in allen Datensätzen existiert und immer den gleichen Eintrag markiert. Relationale Datenbank Tabelle 'Kunden' mit Informationen über die Kunden Id Name Vorname Str PLZ Ort Tel email 1 Maier Ulrich Rosenweg 23 70599 Stuttgart 0711456 896 Umaier @gmx.com 2 Braun Martina Gartenstr. 12 70794 Filderstadt 0711 – 705661 m.braun @web.de 12 Relationale Datenbank Tabelle 'Artikel' mit Informationen über die Waren Id Hersteller Bezeichnung Preis Beschreibung 1 HP HP CX-895 2100 TintenstrahlFarbdrucker 2 Canon BJ 1200 C 3400 TintenstrahlFarbdrucker Foto 13 Relationale Datenbank Tabelle 'Bestellungen' mit Verknüpfungen zu den Tabellen 'Kunden' und 'Artikel' Id Kunden_id Artikel_id Anzahl Datum Status 1 1 2 5 22.06.2001 Erledigt 2 2 1 1 04.01.2002 In Bearbeitung 14 Relationale Datenbanken ● „Relationales Datenbankmodell“: – Jedem Geoobjekt wird eine Zeile (=„Tupel“) in einer Tabelle (=„Relation“) zugeordnet. – Die Eigenschaften („Attribute“) stehen in den Spalten. – Es gibt keine zwei gleichen Geoobjekte in der Tabelle. – Die Gesamtmenge aller möglichen Eigenschaften eines Attributs wird als „Domäne“ bezeichnet (z.B: Domäne Bebauung ={Wohn, Industrie, Gewerbe, frei}) – Beziehungen zwischen Objekten in der selben oder in unterschiedlichen Tabellen werden über Schlüssel hergestellt Relationale Datenbanken Tabelle = Relation Mögliche Relationen zwischen Daten Objektorientierte Datenbanken ● Enthalten mehr als nur Daten: – Metadaten (XML, UML) – Skripte – Geographsiche Regeln – Topologische Regeln – … Physikalisches Design von Datenbanken a)Einzeldateien b)Monolithische Datenbanken c)Datei-basierte Datenbanken d)Server-basierte Datenbanken a) Einzeldateien ● ● ● Keine Datenbank im eigentlichen Sinne, da nur minimale Verwaltungs und Kontrollfunktionen (die des Betriebsystems) Vorteile: – Kein explizites Design nötig, Daten sammeln sich „von selber“ -> schnell lauffertig – Optimale Integration in das Betriebssystem Nachteile: – keines der Vorteile von DB-Systemen (siehe Folie DBSystem) – Fehlende Modellierung fördert (unentdeckte) Inkonsistenzen – Datenwildwuchs b) Monolithische Datenbanken ● Ursprünglichste Version der DB: ● Zentrales Programm (z.B. Access) verwaltet eine lokale Datenbank. ● ● – Datenbankformat oft Proprietär (z.B. .MDB) – zumeist eine (sehr) große Datei, in der alles steht Vorteile: – meist recht schnell bei kleinen Datenmengen – einfach zu administrieren (im Rahmen der Softwaremöglichkeiten) – kann sehr auf die Fragestellung optimiert werden Nachteile: – Hersteller-/ Produkt- /Versionsabhängigkeit – Wird sehr langsam bei großen Datenmengen – Potentiell störanfällig (-> ein falsches Byte kann ggf. alle Daten unbrauchbar machen ) c) Datei-basierte Datenbanken ● ● ● Einzelne Daten werden als Dateien gespeichert, Verwaltung des Datei(teil-)systems durch das DBMS (z.B. Word Dateien nach XML-Standard) Vorteile: – meist recht schnell bei kleinen Datenmengen – Weniger störanfällig als monolithische DB Nachteile: – Hersteller-/Produkt-/Versionsabhängigkeit – Wer schützt das Dateisystem? Konsistenz? – Wird langsam bei vielen Daten d) Server-basierte Datenbanken ● Daten werden Serverseitig abgelegt und auf Anfrage geliefert. ● (z.B. MySQL, PostgreSQL) ● Vorteile: ● – zentrale Verwaltung der Daten (keine Redundanz, Sicherheit,...) – Clienten „sehen“ nur die benötigte Teilmenge der Daten – örtlich Unabhängig, keine lokale Installation Nachteile: – Server-Infrastruktur muss aufgebaut werden und verfügbar sein – langsamer als lokale Dienste – potentiell störanfällig (Netzwerkprobleme) – potentielle Sicherheitsprobleme Einsatz von Standard-Datenbanken für raumbezogene Daten ● ● Grundkonzept: – DBS wird nur zur Speicherung von Informationen (z.B. Koordinaten) verwendet. – Räumliche Interpretation der Daten (räuml. Abfrage, Visualisierung, räuml. Beziehungen) werden vom Clienten durchgeführt. (-> Die Datenbank weiß also nicht, das es Geodaten sind) PostGIS ● ● Räumliche Erweiterung von PostgreSQL, entwickelt von Refractions Research (Victoria, BC, Canada) – Open Source: GPL Lizenz – Aktive Mailingliste und User Community – Neue räumliche Datentypen – Räumlicher Index (r-tree, bounding boxen) – Räumliche Operatoren – ca. 300 räumliche Funktionen – Projektions-Support über Proj4 Ermöglicht schnelle räumliche Suche PostGIS Clients ● UMN Mapserver ● Geotools (Geoserver, uDig) ● QGIS, GRASS ● FDO (Mapguide, Autodesk Map 3D) ● JUMP (OpenJUMP, Kosmo) ● FME (ArcGIS Data Interoperability Extension) ● Cadcorp SIS ● Manifold ● ESRI ArcSDE 9.3 ● NASA Worldwind, Google Earth, MS Virtual Earth Einige PostGIS-Benutzer ● IGN Frankreich ● United States Postal Service ● DLR, NASA ● National Institute for Space Research, Brazil ● European Commission (Joint Research Center) ● States of BC, Yukon Territory, Saskatchewan, North ● Dakota, Colorado, Minnesota, Massachusettes, ● Canadian Forest Service ● Verkehrsministerium Holland ● Electricité de France ● Swisstopo/KOGIS ● Kantone Solothurn, Graubünden, Thurgau Warum PostGIS? Warum PostGIS? ● Keep it Simple ... ● PostGIS Polygon – ● POLYGON((0 0, 0 1, 1 1, 1 0, 0 0)) Oracle Polygon – MDSYS.SDO_GEOMETRY(2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), MDSYS.SDO_ORDINATE_ARRAY(0,0, 0,1, 1,1, 1,0, 0,0)) PostGIS-Architektur Erlaubt komplexere Operationen als SQL Cartographic Projections Library Simple Features in PostGIS Beispiele f. WKT Geometrien Well-Known Text ● POINT(0 0) ● LINESTRING(0 0,1 1,1 2) ● POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) ● MULTIPOINT(0 0,1 2) ● MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) ● ● ● MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1))) GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4))) Datenbank räumlich einrichten Datenbank kreieren in shell: createdb my_spatial_db PL/PGSQL aktivieren in shell: createlang plpgsql my_spatial_db PostGIS Objekte und Funktionen laden: psql -d my_spatial_db -f lwpostgis.sql Koordinatensystemsdefinitionen laden: psql my_spatial_db -f spatial_ref_sys.sql -d Tabelle räumlich einrichten Zuerst normale Tabelle erstellen: – CREATE TABLE eisenbahnen (ID int4, NAME varchar(25)); Dann räumliche Spalte hinzufügen – SELECT AddGeometryColumn('public', 'eisenbahnen', 'geom', 4326, 'MULTILINESTRING', 2); Dimension Spatial Reference Identifier (WGS84) Schema Ergebnis Tabelle einrichten Bestehende räumliche Daten laden ● ● ● ● ● ● SQL Datei laden ESRI shapefile laden: shape2pgsl, danach SQL File Laden mit pgsql ogr2ogr Programm zur Konvertierung von Vektorformaten Über GIS Systeme: QGIS, JumpGIS, GRASS, etc. DUMP and RESTORE von einer anderen Postgis-Datenbank, auch über pgAdmin ESRI Shapefile Loader ● ESRI Shapefile ins SQL Format konvertieren: shp2pgsql [<options>] <shapefile> [<schema>.]<table> > <sqlfile> z.B. shp2pgsql -s 4326 -I -W ISO-8859-1 G3G07 public.gemeinden > gemeinden.sql ● SQL File importieren: psql [OPTIONS]... [DBNAME [USERNAME]] z.B. ● psql -d dbname -U username -f gemeinden.sql Beispiele für Beziehungsfunktionen ● ST_Distance(geometry, geometry) ● ST_DWithin(geometry, geometry, float) ● ST_Equals(geometry, geometry) ● ST_Disjoint(geometry, geometry) ● ST_Intersects(geometry, geometry) ● ST_Touches(geometry, geometry) ● ST_Crosses(geometry, geometry) ● ST_Within(geometry A, geometry B) ● ST_Overlaps(geometry, geometry) ● ST_Contains(geometry A, geometry B) ● ST_Covers(geometry A, geometry B) ● ST_Intersects(geometry, geometry) Beispiel „Crosses“ ● Prüfe ob d. Fluss Emme die Gemeindegeometrie von Burgdorf durchläuft SELECT ST_Crosses((SELECT the_geom FROM gemeinden WHERE name = 'Burgdorf'), (SELECT the_geom FROM fluesse WHERE name = 'Emme')); Beispiele für Geometry Processing Functions ● ST_Centroid(geometry) ● ST_Area(geometry) ● ST_Length(geometry) ● ST_PointOnSurface(geometry) ● ST_Boundary(geometry) ● ST_Buffer(geometry, double, [integer]) ● ST_ConvexHull(geometry) ● ST_Intersection(geometry, geometry) ● ST_SymDifference(geometry A, geometry B) ● ST_Difference(geometry A, geometry B) ● ST_Union(geometry, geometry) ● ST_Union(geometry set) ● Beispiel: Area Beispiele „Area“, „Length“ SELECT ST_Area(the_geom) FROM gemeinden WHERE name = 'Uster'; Ergebnis: 28799569.5 m2 SELECT Sum(ST_Length(the_geom)) FROM fluesse WHERE name = 'Aare'; Ergebnis: 191989.418949 Structured Query Language (SQL) SQL ● ● ● Heute ist SQL die einzige DB-Sprache für relationale DBMS (Industriestandard). Bei der Entwicklung von SQL wurde versucht, nah an der natürlichen Sprache (Englisch) zu bleiben. SQL wird verwendet für: – Interaktive “Ad-hoc”-Befehle und – Anwendungsprogrammentwicklung (in andere Sprachen wie C, Java, HTML eingebettet). SQL als Protokollsprache ● ● SQL - Befehle werden über eine Netzwerkverbindung an den Datenbank-Server geschickt. Der Datenbank-Server schickt das AbfrageResultat an die Applikation zurück. Beispiel-DB Basis-SQL-Anfrage ● Eine einfache SQL-Anfrage hat folgende Form: SELECT Spalten FROM Tabelle WHERE Bedingung; ● Beispiel: SELECT ANR, PUNKTE FROM BEWERTUNGEN WHERE ATYP = ’H’ AND SID = 101; Ausgabe: Weitere Beispiele ● ● ● ● ● create table Person ( idPerson integer, name varchar(64) ); insert Person (idPerson, name) values ( 3, 'Muster' ); select * from Person where name = 'Muster'; update Person set name = 'Muster-Müller' where idPerson = 3; delete Person where idPerson = 3; Noch mehr Beispiele ● ● ● ● ● select * from Person; select upper(name), vorname, gebDatum from Person order by name, vorname; select * from Person where idPerson = 3; select name || ' ' || vorname from Person where name like 'I%' or name like 'J%' order by name, vorname; select name, vorname from Person where gebDatum is null;