Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
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.
12
Relationale Datenbank
Tabelle 'Kunden' mit Informationen über die Kunden
0711 –705661
Filderstadt70794Gartenstr. 12MartinaBraun2
0711-456 896
Stuttgart70599Rosenweg 23UlrichMaier1
emailTelOrtPLZStrVornameNameId
13
Relationale Datenbank
Tabelle 'Artikel' mit Informationen über die Waren
Tintenstrahl- Farbdrucker
3400BJ 1200 CCanon2
Tintenstrahl-Farbdrucker
2100HP CX-895HP1
FotoBeschreibungPreisBezeichnungHerstellerId
14
Relationale Datenbank
Tabelle 'Bestellungen' mit Verknüpfungen zu den Tabellen 'Kunden' und 'Artikel'
1
5
Anzahl
In Bearbeitung04.01.2002122
Erledigt22.06.2001211
StatusDatumArtikel_idKunden_idId
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 DB-System)
– 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
● 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)))
Well-Known Text
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 -dmy_spatial_db -f spatial_ref_sys.sql
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);Spatial Reference Identifier (WGS84)
Dimension
Schema
Ergebnis Tabelle einrichten
Bestehende räumliche Daten laden
● SQL Datei laden● ESRI shapefile laden: shape2pgsl, danach SQL
File● Laden mit pgsql● ogr2ogr● Über GIS Systeme: QGIS, JumpGIS, GRASS,
etc.● DUMP and RESTORE von einer anderen
Postgis-Datenbank, auch über pgAdmin
Programm zur Konvertierung von Vektorformaten
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)
● ST_MemUnion(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 Abfrage-Resultat 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;