Geodaten und GISpsvg.wdfiles.com/local--files/seminarplan/vg10a.pdf · FDO (Mapguide, Autodesk Map...

Preview:

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

m.braun@web.de

0711 –705661

Filderstadt70794Gartenstr. 12MartinaBraun2

Umaier@gmx.com

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;

Recommended