geodaten und gispsvg.wdfiles.com/local--files/seminarplan/vg10a.pdf · fdo (mapguide, autodesk map...
Post on 14-Jun-2020
12 Views
Preview:
TRANSCRIPT
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;
top related