Geodaten und GIS

Werbung
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;
Herunterladen