# PostGIS

PostGIS ist eine Erweiterung für die objektrelationale Datenbank PostgreSQL, die geografische Objekte und Funktionen umfasst. PostgreSQL mit PostGIS bildet eine Geodatenbank, die in Geoinformationssysteme eingebunden werden kann. Das Projekt implementiert die Simple-Feature-Access-Spezifikation des Open Geospatial Consortium und wird von der Open Source Geospatial Foundation betreut.

## Geschichte

PostGIS wird seit 2000 von Refractions Research entwickelt. Obschon PostgreSQL selber bereits Geometrietypen unterstützt, reichen diese laut den Entwicklern nicht aus, um räumliche Daten umfassend speichern und analysieren zu können. PostgreSQL bietet die Möglichkeit eigene Datentypen zu definieren. Diese guten Voraussetzungen waren die Hauptmotivation, die Entwicklung einer räumlichen Erweiterung für PostgreSQL zu starten.
Die erste Version wurde im Mai 2001 unter der GNU General Public License veröffentlicht und trug die Nummer 0.1. Diese frühe Version verfügte über die Möglichkeit, räumliche Objekte zu laden und abzufragen, über einfache räumliche Funktionen, über einen räumlichen Index zum schnellen Zugriff auf die Daten und über eine JDBC-Erweiterung zur Verbindung mit Java.
Mit der Version 0.5 wurde PostGIS um das OpenGIS-Well-known-Binary-Format ergänzt und die Namen bestehender Funktionen wurden den OpenGIS-Spezifikationen angepasst.
In den nachfolgenden Versionen wurden vor allem zahlreiche räumliche Funktionen und Operatoren hinzugefügt. Refractions Research begann diese Funktionen in einer eigenständigen Bibliothek mit dem Namen GEOS zusammenzufassen, welche die OpenGIS-Spezifikationen berücksichtigt und eine C++ Portierung der JTS Topology Suite ist. Ab Version 0.8 benutzt PostGIS die GEOS-Bibliothek.
Die nächsten Entwicklungen zielten vor allem in Richtung einer effizienteren Speicherverwaltung. Die neue Datenstruktur wurde light-weight geometry genannt und ab Version 1.0 wird ausschließlich diese verwendet.
Die aktuelle Entwicklung von PostGIS berücksichtigt verstärkt die ISO-SQL/MM-Spezifikation, die mehr Geometrietypen wie z. B. Kurven implementiert als die OpenGIS-Spezifikation.
Mit der Version 2.0 wird das seit der PostgreSQL 9.1 bestehende PostgreSQL-Extensions-System genutzt.

## Eigenschaften

PostGIS unterstützt die folgenden Geometrietypen:
* OpenGIS Well-Known Text bzw. Well-Known Binary: Point, Linestring, Polygon, Multipoint, Multilinestring, Multipolygon und Geometrycollection
* Extended Well-Known Text bzw. Extended Well-Known Binary: erweitert OpenGIS Well-Known Text mit einer Höheninformation und/oder mit einem Messwert
* SQL/MM (noch nicht vollständig unterstützt): Circularstring, Compoundcurve, Curvepolygon, Multicurve, Multisurface
Von PostGIS unterstützte Funktionen und Operatoren:
* Räumliche Funktionen wie Berechnung von Flächen und Distanzen, Verschneidung, Berechnung von Pufferzonen etc.
* Räumliche Operatoren wie Overlaps, Within, Contains etc.
* Funktionen für die Erstellung von Geometrien
* Analyse von Raster- und Vektordaten
* Funktionen für die Abfrage von Geometrien in den Formaten Well-Known Text, Well-Known Binary, GML, SVG, KML
* Räumliche Indizierung mit dem GiST-Index

## Zugriff auf Geometriedaten

Der Zugriff auf PostGIS erfolgt mit den gleichen Werkzeugen wie der auf PostgreSQL-Datenbanken. Beispiele für Open-Source-Programme zur Datenbankverwaltung sind psql oder pgAdmin. Alle vorhandenen PostgreSQL-Schnittstellen zu verschiedenen Programmiersprachen können ebenfalls für den Zugriff auf PostGIS-Datenbanken verwendet werden, wie z. B. eine Java/JDBC-Verbindung oder die C-Bibliothek libpq.
Eine Reihe von GIS-Programmen oder -Bibliotheken unterstützen PostGIS nativ, wie z. B. GeoTools, MapServer, QGIS oder GDAL/OGR.
Daneben gibt es die Kommandozeile-Programme pgsql2shp und shp2pgsql, welche zur Konvertierung von ESRI-Shapefiles zu PostGIS-Tabellen und umgekehrt eingesetzt werden. Ebenso können mithilfe von osm2pgsql OpenStreetMap-Daten importiert werden.

## Erweiterungen
### WKT Raster

WKT Raster ist eine Erweiterung zur Unterstützung von Raster-Daten in PostGIS. Wesentliches Merkmal dieser Erweiterung ist die Einführung eines Raster-Datentyps analog dem bestehenden Geometry-Datentyp.

### Routenplanung

Mit dem Modul pgRouting können PostGIS-Datenbanken Funktionalitäten zur Routenplanung hinzugefügt werden. PgRouting ermöglicht das Erstellen von Topologien und Lösen von folgenden Problemen:
* Kürzester Pfad nach Dijkstra-Algorithmus
* Kürzester Pfad nach A*-Algorithmus
* Kürzester Pfad nach Shooting Star-Algorithmus
* Problem des Handlungsreisenden
* Berechnung von Isodistanzen aus der Kantentopologie
* Routenoptimierung für Fahrzeugflotten