Digital Geography

27. Oktober 2018

Python im GIS-Einsatz: Aktuelle Package-Empfehlungen zur Automatisierung von wiederkehrenden GIS- und Geodaten-Workflows

Auch im Bereich der Geodatenverarbeitung ergeben sich diverse Einsatzmöglichkeiten für die Programmiersprache Python, um wiederkehrende GIS-Aufgaben zu automatisieren. PyPi.org listet aktuell 497 Python Projekte für den Einsatz im Rahmen von Scientific/Engineering mit GIS-Bezug an. Dieser Artikel soll euch aufzeigen, welche Module euch bei eurer täglichen Arbeit helfen können.

Mehr Fachliteratur zur Verwendung von Pyton im GIS-Zusammenhang

Was ist ein Python-Package und wie wende ich es in QGIS an?

Ein Python-Package ist eine Zusammenstellung von Python-Modulen, die wiederum Python-Einzelscripte enthalten. In diesen Einzelscripten werden Klassen und Methoden bzw. Funktionen definiert, die euch spezifische Funktionen einsatzbereit zur Verfügung stellen. Um auf Funktionalitäten aus Python-Packages zuzugreifen, müssen diese installiert, importiert und mit einem Funktionsaufruf (Call) gestartet werden. In den meisten Fällen müssen bei einem Call auch Parameter übergeben werden, damit die Funktion ihren Algorithmus auf die gewünschten Eingangsdaten anwenden kann. So ein Parameter kann zum Beispiel der Inhalt eurer QGIS-Layerübersicht sein, die ihr in einem Projekt aufgerufen habt. Mit dem Code-Zugriff auf eure Daten eröffnet ihr euch die komplette Welt der Automatisierung, MachineLearing und vielem mehr.
Um direkt mit Python in euren Projekten durchzustarten, müsst ihr lediglich die Python-Console im QGIS oder ArcGIS starten, welche standardmäßig installiert und verfügbar sind.

So startet ihr die Python-Console in QGIS: “Erweiterungen → Python-Konsole”

Python Shell in QGIS

Bevor ihr nun direkt Python-Packages installiert und einbindet, solltet ihr euch Gedanken über den Gesamtworkflow eurer Problemlösung machen. Viele GIS-Pythonfunktionen sind z.B. Direkt in QGIS mitinstalliert, andere Packages müssen nachträglich installiert und importiert werden.

Wenn ihr die gewünschten Tools ausfindig gemacht habt, bindet ihr diese wie folgt ein:

import xxx from xxx as xx

Sollte das Tool noch nicht installiert sein, führt der Weg meistens über pip install xxx und ist auf der jeweiligen Package-Homepage dokumentiert. Hier noch ein genereller Link zur pip install Logik.

Im Anschluss könnt ihr die Befehle direkt in eurem Python-Code anwenden.

Welche Module empfehlen sich für eine Automatisierung von GIS-Aufgaben?

1. PyQGIS

PyQGIS lässt euch direkt auf QGIS-Funktionalitäten auf Code-Ebene zugreifen. Dies kann zum einen innerhalb von QGIS geschehen, in dem ihr die Python-Console verwendet, oder auch außerhalb in einem anderen Editor. Neben den direkten Automatisierungsmöglichkeiten könnt ihr so QGIS Funktionen ebenfalls in anderen Programmen verwenden und diese mit Geodaten-Verarbeitungsschritten anreichern. Einen guten Einstieg bekommt ihr auf der Webseite PyQGIS Developer Cookbook.

2. ArcPY

ArcPY ist das PyQGIS Pendant zur Steuerung von ArcGIS mit Python-Scripts. Die verfügbaren Funktionen und Beispiele hat Esri auf Ihrer Seite ArcGIS Pro Python Reference umfangreich zusammengestellt.

Neben den mächtigen Python-Schnittstellen der großen GIS-Programmen QGIS und ArcGIS gibt es eine Vielzahl an alleinstehenden Python-GIS-Packages, die PyPi.org mit einer jeweils kurzen Beschreibung auflistet.

Weitere Geo-Python-Packages

Es folgt eine Package-Auswahl aus PyPi.org, die euch bei typischen Projektanforderungen helfen kann:

geopy – Python Geocoding Toolbox
tilecloud-chain – Tools to generate tiles from WMS, Mapnik an more…
pandana – Pandas Network Analysis – dataframes of network queries, quickly
whitebox – An advanced geospatial data analysis platform
arcgis – ArcGIS API for Python
folium – Make beautiful maps with Leaflet.js & Python
Stetl – ETL services for geospatial data
ipyleaflet – a Jupyter widget for dynamic Leaflet maps
osmxtract – Extract vector and raster data from OSM
geojson – Python bindings and utilities for GeoJSON
pygeoprocessing – Library for common GIS tasks
pycrsx – read, write and convert geodata

Welche Python-Pakete habt ihr für eure Projekte im Einsatz?