Aus Linux-Magazin 09/2007

Die PostgreSQL-Erweiterung Postgis und freie GIS-Programme

Die Datenbankerweiterung Postgis bietet auf der freien Datenbank PostgreSQL die ideale Grundlage für eine leistungsfähige Geodaten-Infrastruktur (GDI).

“Und Ihre Postleitzahl?”, so lautet eine häufige Frage an der Kasse eines Bau- oder Elektromarkts. Nur zu wissen, was der Kunde kauft, scheint für den Betreiber nicht genug Information. Offenbar kommt es ihm auch darauf an, woher der Käufer kommt.

Hinter den Kulissen wandern die Daten des Einkaufs zusammen mit der Postleitzahl des Wohnorts in die Datenbank eines geografischen Informationssystems (GIS). Anhand der Karten, auf denen die Software die Verteilung der Kunden darstellt, kann der Betreiber seine Werbung und sein Marketing optimieren. Mit diesem Wissen kann er beispielsweise nur in Stadtteilen mit großem Kundenpotenzial Flyer und Werbebroschüren verteilen und den Erfolg der gezielten Werbeaktionen messen.

Bis vor wenigen Jahren kamen für solche Szenarien fast ausschließlich proprietäre Lösungen zum Einsatz, die freien GIS-Programme galten als Außenseiter. Doch die Implementierung offener Standards und die Entwicklung zahlreicher Schnittstellen lässt nun eine große Anzahl von Programmen für raumbezogene Fragestellungen gedeihen. Postgis, eine freie Erweiterung der Open-Source-Datenbank PostgreSQL, steht dabei als ausgereiftes Backend für eine fast unüberschaubare Vielzahl an freier Software zur Verfügung [1].

Der Raumbezug macht’s

Geografische Informationssysteme sind Werkzeuge zur Verwaltung, Erstellung und Bearbeitung von Daten mit Raumbezug. Ein GIS verwaltet nicht nur inhaltliche Informationen wie Firmennamen oder gekaufte Produkte, sondern auch die räumlichen Informationen wie die geografische Position einer Firmenniederlassung oder den Wohnsitz eines Kunden. Aber mit dem einfachen Wo ist es in der Regel noch lange nicht getan. Für ein möglichst gutes Abbild der Wirklichkeit auf der Erdkugel sind weitere Eigenschaften der räumlichen Objekte von Bedeutung: Geometrische Objekte wie Punkte, Linien und Polygone haben bestimmte Eigenschaften, zum Beispiel Länge, Fläche oder Mittelpunkt, und topologische Beziehungen zueinander wie Nachbarschaft, Überschneidung oder Enthaltensein.

Darüber hinaus muss das GIS die Daten für die Darstellung entsprechend aufbereiten. Zum Standardrepertoire eines modernen Geosystems gehören daher unter anderem Algorithmen zum Verschieben und Skalieren. Die Abbildung von Objekten aus der Realität auf der dreidimensionalen (Erd-)Kugel in die zweidimensionale Fläche erfordert außerdem umfangreiche Kenntnisse von kartografischen Projektionen.

Datenaustausch gesucht

Die vielfältige Entwicklung unterschiedlicher GIS hat auch viele unterschiedliche Konzepte hervorgebracht, wie die Daten lokal und in eigenen, oft proprietären Formaten zu speichern sind. Ein Austausch von Daten zwischen den einzelnen Systemen erfolgte bisher lediglich durch aufwändige und fehleranfällige Export-Import-Funktionen. Wechselte ein Hersteller im Zuge von Weiterentwicklungen sein Datenhaltungskonzept, waren Probleme für die Anwender unvermeidlich.

Diese Entwicklung stand jedoch im krassen Gegensatz zur wachsenden, applikationsübergreifenden und netzweiten Nutzung der Daten. Leistungsfähige Geodaten-Infrastrukturen (GDI) waren gefordert, aber nur proprietäre, oft nicht standardisierte Insellösungen vorhanden: Eine offene, Datenbank-basierte Lösung musste her. Genau hier setzt Postgis (Abbildung 1) ein. Die GIS-Erweiterung fügt dem freien Datenbanksystem PostgreSQL [2] Möglichkeiten zur Verwaltung geografischer Informationen hinzu und steht unter der GPL.

Abbildung 1: Auf dem Logo von Postgis balanciert der Elefant, das Maskottchen der PostgreSQL-Datenbank, die Weltkugel auf seinem Rüssel.

Abbildung 1: Auf dem Logo von Postgis balanciert der Elefant, das Maskottchen der PostgreSQL-Datenbank, die Weltkugel auf seinem Rüssel.

PostgreSQL ist heute neben MySQL wohl das am weitesten verbreitete freie Datenbanksystem und liegt in Version 8.2 vor. Im Rahmen eines universitären Projekts an der University of California entstand es als objektrelationales Datenbank-Managementsystem (ORDBMS) unter dem Namen Postgres am Berkeley Computer Science Department. Seit 1996 trägt es den Namen PostgreSQL, es unterliegt der BSD-Lizenz. Der Kasten “Unter der Haut des Elefanten” gibt einen kurzen Einblick in Details des umfangreichen Datenbanksystems.

Unter der Haut des
Elefanten

PostgreSQL unterstützt den Ansi-SQL-Standard SQL92. Von den fünf Kategorien des SQL99-Standards – Framework, Foundation, Call Level Interface, Persistent Stored Modules, Host Language Bindings – sind die Kategorien 1, 2 und 5 implementiert.

PostgreSQL unterstützt darüber hinaus alle in SQL99 spezifizierten Verbundtypen.

Features

  • Mengenoperationen lassen sich mit den entsprechenden
    Anweisungen »UNION«, »INTERSECT«,
    »EXCEPT« auf mehrere Tabellen ausführen.
  • Subselects ermöglichen komplexe Queries in einem Schritt.
    Zwischenergebnisse eines Subselect können dabei an die jeweils
    übergeordnete Abfrage durchgereicht und weiterverarbeitet
    werden.
  • »SELECT«-Kommandos erlauben Aktionen über
    mehrere Tabellen (Joins).
  • Komplexe Abfragen lassen sich als Views speichern, um schnell
    einen aktuellen Stand der Daten zur Verfügung zu haben.
  • Trigger speichern häufig wiederkehrende Operationen, die
    ereignisabhängig ablaufen können. Trigger können in
    allen in PostgreSQL unterstützten prozeduralen Sprachen
    geschrieben sein.
  • Regeln (Rules) ist es erlaubt, das Verhalten von Abfragen zu
    modifizieren. Sie können beispielsweise unter bestimmten
    Bedingungen ein »DELETE«- in ein
    »UPDATE«-Kommando umformulieren.
  • PostgreSQL unterstützt die referenzielle Integrität
    der Datenbeziehungen (Primary Key und Foreign Key) und verhindert
    damit Anomalien im Datenbestand.

Transaktionen, ACID, Interaktion

  • Bei Transaktionen arbeitet die Datenbanksoftware eine Folge von
    SQL-Kommandos hintereinander ab, wobei sie diese entweder komplett
    oder gar nicht ausführt. Das Verfahren stellt bei mehreren
    gleichzeitigen Zugriffen auf eine Datenbank Konsistenz und
    Integrität der Datenbank sicher.
  • PostgreSQL erfüllt alle Forderungen des ACID-Prinzips
    (Atomicity, Consistency, Isolation, Durability). Als Strategie
    für das Transaktionsmanagement dient Multi-Version Concurrency
    Control (MVCC).
  • Zur Programmierung von Client-Programmen bietet PostgreSQL
    Schnittstellen zu ODBC und JDBC sowie zu zahlreichen
    Programmiersprachen.

Prozeduren und Objekte

  • Mit selbst programmierten Stored Procedures (SP) lassen sich
    häufig wiederkehrende Aufgaben zusammenfassen und
    automatisieren.
  • Neben SQL und der PostgreSQL-eigenen prozeduralen
    Programmiersprache PL/pgSQL stehen noch weitere Sprachen zur
    Verfügung.
  • PostgreSQL unterstützt objektrelationale Eigenschaften und
    damit die Speicherung nicht atomarer Datentypen in Arrays oder in
    geometrischen Datentypen. Alle Datenbankobjekte (Tabelle, View,
    Sequenz, ein einzelner Datensatz, …) haben in PostgreSQL eine
    eigene Objektidentität.

Sicherheit

  • Die Datenkommunikation zwischen Client und Server erfolgt auf
    Wunsch mit SSL verschlüsselt.
  • Für die Authentifizierung gegenüber dem
    Datenbankserver unterstützt PostgreSQL das
    Kerberos-Protokoll.

Als Administrations-Frontend für PostgreSQL steht PgadminIII (Abbildung 2, [3]) auch für Postgis zur Verfügung. Ein weiterer Pluspunkt für freie Software ist das flexible Konzept der PostgreSQL-Extensions: Postgis verzichtet auf die bereits in PostgreSQL vorhandenen Möglichkeiten zur Verwaltung zweidimensionaler Geometrien und implementiert stattdessen die Simple Features Specifications for SQL 1.1 (SFS) des Open Geospatial Consortium (OGC, [4]).

Abbildung 2: Die typische Ansicht einer PostgreSQL-Datenbank für den Administrator: Das grafische Frontend PgadminIII ermöglicht auch die komfortable Bearbeitung der PostgreSQL-Postgis-Daten.

Abbildung 2: Die typische Ansicht einer PostgreSQL-Datenbank für den Administrator: Das grafische Frontend PgadminIII ermöglicht auch die komfortable Bearbeitung der PostgreSQL-Postgis-Daten.

Offene Standards jenseits der dritten Dimension

Das OGC ist ein weltweiter Zusammenschluss von Unternehmen, Behörden, Universitäten und Organisationen, der Standards für die Interoperabilität von geografischen Informationssystemen sowie deren Integration mit anderen Informationssystemen erarbeitet. Viele kommerzielle und freie Produkte unterstützen diese Standards wie den XML-Dialekt GML oder die OGC Web Services und garantieren eine weitreichende Interoperabilität der Systeme in komplexen Geodaten-Infrastrukturen.

Das Geometriemodell SFS des OGC definiert drei grundlegende Geometrien: Point (Punkt), Line String (Linienzug) und Polygon (Fläche). Weitere vier Typen wurden daraus abgeleitet: Multi Point, Multi Line String, Multi Polygon und Geometry Collection.

Abbildung 3 zeigt einen Ausschnitt der sich daraus ergebenden Möglichkeiten. Damit aber nicht genug: Postgis kann Höheninformationen (z-Wert) oder ähnliche Daten speichern und erweitert damit das zweidimensionale Abbild der Welt in die “2,5te Dimension” [5]. Durch die Integration weiterer Informationen wie Zeit oder Temperatur betritt Postgis dann sogar den vier- oder mehrdimensionalen Raum.

Abbildung 3: Auf den Simple Features Specifications for SQL 1.1 (SFS) des Open Geospatial Consortium OGC basieren komplexe Geometrietypen in Postgis. (Quelle: Jump; Technical Report)

Abbildung 3: Auf den Simple Features Specifications for SQL 1.1 (SFS) des Open Geospatial Consortium OGC basieren komplexe Geometrietypen in Postgis. (Quelle: Jump; Technical Report)

Postgis arbeitet auf der Basis von Geos [6] und Proj.4 [7]. Geos (Geometry Engine Open Source) ist eine Portierung der Java Topology Suite (JTS) nach C++, die das Geometriemodell der Simple Feature Specification sowie geometrische und topologische Funktionen implementiert. Mit Hilfe von Proj.4, einer Bibliothek zur Koordinatentransformation, erzeugt Postgis sein Spatial Reference System (SRS). Durch die Bindung an Proj.4 kann das Datenbanksystem Koordinatentransformationen basierend auf den EPSG-Codes [8] der European Petroleum Survey Group durchführen. Die Codes haben sich als Quasi-Standard zur Definition von geografischen Projektions-Informationen etabliert.

Import und Export

Das proprietäre ESRI-Shapefile-Format ist unter allen GIS das am meisten verbreitete Dateiformat. Mit den Import-Export-Tools »shp2pgsql« und »pgsql2shp« kann Postgis derartige ».shp«-Dateien problemlos lesen und schreiben. Bei komplexeren Im- und Exporten bedient sich Postgis dagegen der Funktionalitäten der beiden freien Bibliotheken GDAL (Geospatial Data Abstraction Library) und OGR [9]. GDAL (Raster) und OGR (Vektor) können eine Vielzahl unterschiedlicher Datenformate lesen und schreiben. Hierzu gehören unter anderem Mapinfo TAB und MIF/MID, Autocad DXF/DWG, GML, KML, GRASS Vector Maps, Tiger/Line, Oracle Spatial, ESRI Arcsde und MySQL.

Neben der umfassenden Datenverwaltung ist Postgis in der Lage, Berechnungen und Analysen der räumlichen Daten durchzuführen. So kann es beispielsweise räumliche Analysen (»UNION«, »INTERSECTION«, »CONVEX HULL«, »BUFFER«) oder räumliche Prädikate (»CROSSES«, »WITHIN«, »OVERLAP«, »EQUALS«) berechnen. Das Modul »pgrouting« der Datenbankerweiterung Postlbs bietet ihm sogar die Möglichkeit, Topologien zu erstellen, um Routing-Probleme wie die Suche nach dem kürzesten Pfad zu lösen.

Zusammenspiel

Das Verknüpfen mit den Bibliotheken GDAL und OGR macht weitere freie Softwarelösungen verfügbar, die aufwändigere Analysen erlaubt oder die Welt des Webmapping mit Postgis verbinden (Abbildung 4).

Abbildung 4: Postgis bietet sowohl Desktoplösungen eine Basis als auch Internet-Kartendiensten wie Map- oder Geoservern.

Abbildung 4: Postgis bietet sowohl Desktoplösungen eine Basis als auch Internet-Kartendiensten wie Map- oder Geoservern.

Auf Desktops ist GRASS (Geographical Resources Analysis Support System, [10]) die mächtigste freie Software für Geodaten. Mit mehr als 350 Modulen zur Verarbeitung und Analyse von Raster- und Vektordaten ist GRASS in der Lage, 3D-Raster, so genannte Voxel, zu verarbeiten. Die Anwendungen reichen von einfachen Verschneidungen bis zu komplexen Satellitenbildauswertungen, Routing-Algorithmen oder zur Simulation der Ausbreitung eines Waldbrandes. Das Modul NVIZ stellt die Ergebnisse dreidimensional dar.

Freie GIS für PC und Web

Ein weiteres Desktop-Programm mit Postgis-Support ist Jump/Openjump [11], ein Java-basiertes GIS, das durch sein offenes API zu individuellen Lösungen einlädt. Die Freiheit der Software hat zur Ausbildung einer ganzen Familie von Jump-Anwendungen geführt. Refractions, der Maintainer von Postgis, entwickelt ebenfalls ein Desktop-GIS unter dem Namen Udig [12]. Eher als Datenviewer ausgelegte Programme wie Quantumgis, Thuban oder Openev greifen ebenfalls auf Postgis zu und visualisieren die Geodaten (Abbildung 5).

Abbildung 5: Mit dem freien GIS-Viewer Thuban lassen sich Postgis-Daten auf dem Desktop anzeigen. In dieser Ansicht dient der freie Vektor-Datensatz Frida der Stadt Osnabrück als Datenquelle.

Abbildung 5: Mit dem freien GIS-Viewer Thuban lassen sich Postgis-Daten auf dem Desktop anzeigen. In dieser Ansicht dient der freie Vektor-Datensatz Frida der Stadt Osnabrück als Datenquelle.

Die Bereitstellung von Karten und räumlichen Informationen über das Internet kann mit Hilfe des UMN-Mapservers [13], der Deegree-Suite [14] oder des Geoservers [15] erfolgen. Der UMN-Mapserver erlaubt es, geografische Informationen als Karten über das Internet zu publizieren, wobei er Postgis-Daten optional über die OGR-Schnittstelle dynamisch einbindet.

Über Entwicklungsumgebungen wie Deegree oder Mapbender [16] ist die Entwicklung von komplexen Webanwendungen zur Datendarstellung und -bearbeitung möglich. Deegree ist in Java geschrieben und implementiert sehr viele der OGC-Standards für Webservices. Mapbender ist ein auf PHP und Javascript basierendes Framework für Kartenanwendungen. Dieser WMS-Client nutzt verschiedene Funktionalitäten von Postgis, etwa Koordinaten-Transformation oder Flächenberechnungen, wenn diese Erweiterung installiert ist.

Einsatzszenarios

Die Vielzahl der Anwendungen und der enge Bezug zu den Standards des OGC bietet genügend Raum für vielfältige eigene Anpassungen. Die Postgis-Webseite berichtet ständig über neue Projekte und Beispiele für umgesetzte Postgis-Installationen. Dabei zeichnen sich drei typische Einsatzszenarios ab:

  • Im wissenschaftlichen Bereich laufen Desktop-GIS auf Clients.
    Postgis fungiert als komplexe Datenbank zur Datenhaltung der
    räumlichen Objekte an einem zentralen Ort für alle
    Nutzer.
  • Für Webmapping-Anwendungen verwaltet die Kombination
    PostgreSQL-Postgis die Daten. Analysen und Auswertungen führt
    der Datenserver selbst aus. Ein Beispiel liefert das Projekt Fiona
    des Landes Baden-Württemberg, das die Landwirte bei der
    Flurstückverwaltung unterstützt und dessen Daten direkt
    der Bewilligung von Fördergeldern dienen.
  • Die meisten Geodaten-Dienste von Städten und Gemeinden
    verwenden eine Kombination der beiden vorherigen Szenarien, um
    intern die Daten zu bearbeiten, sie per Mapserver im Internet zu
    visualisieren und mobile Geräte einzubinden (Abbildung
    6).
Abbildung 6: Zahlreiche Webmapping-Anwendungen basieren auf Postgis-Installationen, hier die Bodenkarte des California Soil Resource Lab. Programme wie der UMN-Mapserver visualisieren die Daten für den Browser.

Abbildung 6: Zahlreiche Webmapping-Anwendungen basieren auf Postgis-Installationen, hier die Bodenkarte des California Soil Resource Lab. Programme wie der UMN-Mapserver visualisieren die Daten für den Browser.

Versionen

Die meisten Organisationen setzen dabei das aktuelle Postgis 1.2 ein, für die nächsten Versionen arbeiten die Entwickler daran, die Performance zu erhöhen, und erstellen mit dem Postgis Cookbook eine umfassende Dokumentation. Darüber hinaus arbeiten sie an folgenden GIS-Funktionen:

  • Verbesserte Kurven durch mehr Stützpunkte und
    Interpolation
  • Linear Reference System (LRS) zur Positionsbestimmung von
    Punkten
  • Integration des Pgrouting in Postgis
  • Besseres Geocoding, Nearest-Neighbor-Methoden und Verbesserung
    der Abstandsmessung

Weitere Informationen

Einen umfassenden Überblick zum Thema freie Geodatenbanken und weitere Open-Source-GIS-Software bietet das Portal Freegis [17], in dem unter anderem alle genannten Softwarelösungen mit weitergehenden Informationen zu finden sind. Der Förderung freier GIS-Software und dem problematischen Thema freie Geodaten im deutschsprachigen Raum widmet sich seit fast sieben Jahren die GRASS-Anwender-Vereinigung e.V. mit Informationen und Tutorials (siehe Kasten “GRASS-Anwender-Vereinigung e.V.”). Die Firma Refractions passt Postgis-Installationen an individuelle Bedürfnisse an und leistet zusammen mit internationalen Partnern professionellen Support.

GRASS-Anwender-Vereinigung
e.V.

Grass-Anwender finden Unterstützung bei der GAV: [http://www.grass-verein.de]

E-Mail: georg.loesel@grass-verein.de

Mailingliste: [http://www.grass-verein.de/mailman/listinfo/gav-talk]

Eine gute Basis

Die Kombination PostgreSQL mit Postgis bietet durch ihre Leistungsfähigkeit eine gute Basis für eine komplexe GDI. Die Kombination aus einer Datenbank mit der Erweiterung zur Verwaltung geografischer Objekte, die weitreichenden Analysemöglichkeiten innerhalb der Datenbank selbst, die Berücksichtigung offener Standards und die Implementierung als freie Software eröffnet den Weg von den Insellösungen weg bis zur Erkundung der offenen See.

Infos

[1] Postgis:[http://postgis.refractions.net]

[2] PostgreSQL-Datenbank: [http://www.postgresql.org]

[3] Postgres-Administration mit PgadminIII: [http://www.pgadmin.org]

[4] Open Geospatial Consortium: [http://www.opengeospatial.org]

[5] Mehrdimensionale GIS: [http://www.giswiki.org/wiki/Geographic_information_system#Dimension]

[6] Geos-JTS-Portierung:[http://geos.refractions.net]

[7] Proj.4-Koordinatentransformation:[http://proj.maptools.org]

[8] EPSG-Codes: [http://www.epsg.org]

[9] GDAL und OGR: [http://www.gdal.org]

[10] GRASS GIS: [http://grass.itc.it]

[11] Jump GIS: [http://openjump.org]

[12] Udig GIS: [http://udig.refractions.net]

[13] UMN-Mapserver:[http://mapserver.gis.umn.edu]

[14] Deegree-Suite: [http://www.deegree.org]

[15] Geoserver: [http://geoserver.org]

[16] Mapbender: [http://mapbender.org]

[17] Freegis-Portal: [http://freegis.org]

Der Autor


Dr. Georg Lösel ist Geowissenschaftler, Bodenkundler sowie langjähriger Anwender freier GIS-Software. Als Vorsitzender der GRASS-Anwender-Vereinigung e.V. engagiert er sich aktiv bei der Förderung freier GIS-Software und freier Geodaten.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben