PostgreSQL für geografische Daten

Die Geodatenbank PostGIS

Die Geodatenbank PostGIS

PostgreSQL für geografische Daten

Die Geodatenbank PostGIS


Der Hype um Geoinformationen mag im Laufe der letzten Jahre ein wenig an Intensität verloren haben, außer Frage steht aber, dass geografische Informationssysteme heute wie eh und je von hoher Priorität sind. Mit PostGIS steht eine PostgreSQL-Erweiterung zur Verfügung, die sich auf die Verwaltung von Geoinformationen spezialisiert hat.

PostGIS ist eine auf dem unter [1] spezifizierten API aufgebaute Erweiterung, die den Hauptdatenbankserver um verschiedene Methoden erweitert, die bei der Verwaltung von Geodaten hilfreich sind. Ziel dieses Artikels ist ein Überblick der Möglichkeiten des Datenbanksystems. Schon aus Platzgründen ist eine Komplettbesprechung im Rahmen eines Fachartikels nicht möglich – angemerkt sei allerdings, dass die hier durchgeführten Experimente auf dem offiziellen Lehrpfad basieren und der Umstieg somit vergleichsweise leichtfällt.

PostGIS im Container

Die flächendeckende Verfügbarkeit von Docker erleichtert die Ausführung verschiedenster Datenbanksysteme mit geringem Installationsaufwand. Das PostGIS-Entwicklerteam bietet unter [2] eine Gruppe schlüsselfertiger Images an, die eine Kombination aus PostgreSQL und PostGIS zur Verfügung stellen. Wer in seinem Unternehmen eine Gruppe von PostgreSQL-Servern betreibt, kann diese natürlich ebenfalls als Basis für die folgenden Experimente einsetzen.

Für die Inbetriebnahme des Containers ist die Eingabe von docker run --name some-postgis -e POSTGRES_PASSWORD=tamspass -d postgis/postgis erforderlich. Der Autor entschied sich hier für das Passwort tamspass; in praktischen Applikationen könnten Sie natürlich ein sichereres Kennwort auswählen.

Der Verbindungsaufbau erfolgt dann in einem separaten Terminalfenster. Zum Trennen der Verbindung (und der Freigabe des Terminals) ist die Eingabe von \q und ENTER erforderlich:

tamhan@TAMHAN18:~$ docker exec -ti some-postgis psql -U postgres
psql (16.2 (Debian 16.2-1.pgdg110+2))
Type "help" for help.
postgres=#

Da die Verwaltung von PostGIS auf Kommandozeilenebene nicht sonderlich bequem ist, bietet sich die Nutzung eines an PhpMyAdmin erinnernden Web-Frontends an. Sein Deployment lässt sich in Docker mit docker pull dpage/pgadmin4 anstoßen.

Im nächsten Schritt bietet sich die Eingabe des folgenden Befehls an, um das Verwaltungswerkzeug bzw. den in ihm enthaltenen Container zu starten:

tamhan@TAMHAN18:~$ docker run --name pgadmin-container -p 5050:80 -e
PGADMIN_DEFAULT_EMAIL=user@domain.com -e
PGADMIN_DEFAULT_PASSWORD=tamspass -d dpage/pgadmin4

Lohn der Mühen ist, dass Sie fortan unter http://localhost:5050/ das in Abbildung 1 gezeigte Einstiegsfenster der PostGIS-Verwaltung wiederfinden.

hanna_postgis_1

Abb. 1: Diese Version der Verwaltungs-Engine zeigt sich gefechtsbereit

Zu beachten ist, dass die Anmeldung mit den in den zweiten Container geschriebenen Werten erfolgt. Bei Übernahme der vom Autor festgelegten Werte wären das also die E-Mail-Adresse user@domain.com und das Passwort tamspass. Lohn der Mühen ist danach das Starten der unparametrierten Administrationsoberfläche. Eine Verbindung zu einem lokalen Server wird erst dann aufgenommen, wenn Sie in der Rubrik Quick Links auf die Option Add New Server klicken.

Beim Verbindungsaufbau erweist sich die Nutzung der Docker-Container als kleines Zusatzärgernis: Die IP-Adresse der Host-Workstation ist nämlich nicht geeignet, um den Verbindungsaufbau zwischen der PGAdmin-Instanz und der eigentlichen Geoinformationsdatenbank herzustellen. Von Haus aus verbindet die Docker-Runtime jeden neu gestarteten Container mit dem internen Brückennetzwerk. Unsere nächste Aufgabe ist deshalb das Herausfinden der ID, die die Docker-Runtime dem Container mit der PostGIS-Datenbank im Rahmen seines Starts zugewiesen hat. Auf der Workstation des Autors war es der String f3ef25097ddce1a4fc8d284f1834f83177f3cf71f5763fa33cd73500421a10c4, was zu folgendem Ergebnis führt:

tamhan@TAMHAN18:~$  docker inspect
f3ef25097ddce1a4fc8d284f1834f83177f3cf71f5763fa33cd73500421a10c4 | grep IPAddress

Im nächsten Schritt lässt sich die IP-Adresse wie in Abbildung 2 gezeigt ermitteln.

hanna_postgis_2

Abb. 2: Nach Eingabe des korrekten Befehls zeigt sich die Runtime auskunftsfreudig

Mit diesem Wissen können wir in die PGAdmin-Konsole zurückkehren, um die bisher unabhängige Instanz des Administrationsframeworks mit dem Datenbankserver zu verbinden. Zu beachten ist dabei, dass die Einrichtung in zwei Schritten erfolgt – neben dem General-Tab, in dem die Verbindungsvorlage einen Namen eingeschrieben bekommt, müssen Sie auch in Connection parametrieren. Abbildung 3 zeigt die Ergebnisse, die auf dem Rechner des Autors zum Erfolg führen.

hanna_postgis_3

Abb. 3: Diese Einstellungen ermöglichen die Verbindung zwischen den beiden Connectors

PGAdmin führt während des Abspeicherns der Verbindungsvorlage automatisch einen Plausibilitätstest durch. Wenn der Dialog ohne Aufscheinen einer Fehlermeldung vom Bildschirm verschwindet, ist die Verbindung erfolgreich. PGAdmin setzt uns danach außerdem in der Object-Explorer-Ansicht ab, die (Analogien zu PHPMyAdmin sind rein zufällig) die Verwaltung der zugrunde liegenden PostGIS-Datenbankinstanz ermöglicht.

Im nächsten Schritt ist die Erzeugung einer Geodatendatenbank erforderlich. Hierzu expandieren wir den neu angelegten Eintrag des Datenbankservers im Object Explorer, und klicken den Eintrag Databases rechts an. Im daraufhin erscheinenden Kontextmenü entscheiden wir uns für Option Create | Database. Die von Haus aus angelegte Datenbank PostGIS kümmert sich dabei um das Vorhalten verschiedener „interner“ Verwaltungsinformationen des RDBMS und ist für Experimente mit der PostGIS-Erweiterung nicht produktiv nutzbar.

Der Autor wird in den folgenden Schritten den String testdatabase als Datenbanknamen vergeben und klickt danach auf Save. Lohn der Mühen ist, dass im Object Explorer fortan zwei Datenbanken nebeneinander angezeigt werden.

Im nächsten Schritt muss eine SQL-Query gegen die neu angelegte Datenbank ausgeführt werden. Expandieren Sie hierzu den Datenbankeintrag und klicken Sie danach die Option Schemas rechts an. Im daraufhin erscheinenden Kontextmenü entscheiden wir uns für die Option Query Tool, um einen an Jupyter Notebooks erinnernden Abfrageassistenten zu aktivieren. Im ersten Schritt geben wir im Queryfeld den String CREATE EXTENSION postgis; ein und klicken auf Play. Auf der Unterseite informiert das RDBMS dann wie in Abbildung 4 gezeigt über die erfolgreiche Abarbeitung.

hanna_postgis_4

Abb. 4: Das Laden der PostGIS-Erweiterung verlief erfolgreich

Das Queryfenster ist dabei nach Belieben bearbeitbar. So...