Die meiste Software zur Verarbeitung von OpenStreetMap-Daten ist freie Software für Linux. Für die Verarbeitung von großen Datensätzen auf Servern passt das gut, stellt aber Nutzer von Windows als Desktop Betriebssystem vor die Herausforderung immer auf einem Server zu entwickeln oder eine virtuelle Maschine zu nutzen. Aber es gibt doch auch Software, die unter Windows und Linux läuft! Also müsste sich da doch ein Weg finden lassen!

OSGeo4W

Die Lösung heißt OSGeo4W. Was steckt hinter dieser Abkürzung? Die Open Source Geospatial Foundation (OSGeo) ist eine gemeinnützige Organisation zur Förderung der Entwicklung und Nutzung von freien und quelloffenen Geoinformationssystemen. Sie ist die Organisation hinter der FOSS4G-Konferenzreihe, ist eine Dachorganisation für OpenSource GIS-Softwareprojekte. Es gibt noch jeweils länderspezifische Vereine, genannt „Local Chapters“, was in Deutschland der FOSSGIS e.V. ist. Eines der Projekte ist OSGeo4W – ein Paketmanager für freie Geosoftware unter Windows. Unter Linux sind Paketmanager Standard jeder Installation und daher nicht notwendig. Vielen QGIS Nutzern ist sicher die Anwendung bekannt, da sich darüber auch QGIS installieren lässt. Aber die Liste an möglicher Software ist noch viel länger!

Aber warum Software über OSGeo4W nutzen? Vorteil ist die zentrale Verwaltung von Softwareabhängigkeit. Benötige Bibliotheken müssen nur ein mal installiert werden, Aktualisierungen lassen sich einfach durchführen und nebenbei bekommt man noch eine ganze Reihe kleiner Zusatzprogramme mitgeliefert. Wie IMPOSM und Osmium zur Verarbeitung von OpenStreetMap-Daten, fertig kompiliert und nativ unter Windows nutzbar.

Ruft man den Setup für OSGeo4W auf, so kann man sich für eine „Fortgeschrittene Installation“ entscheiden, eine Paketquelle auswählen und sich dann die Software aussuchen, welche man installieren möchte. Wer hier nicht gleich IMPSOM oder Osmium findet, kann die Suche nutzen. Zum Installieren muss man in der jeweiligen Zeile auf „Skip“ klicken. Der Status wechselt dann durch die Optionen „Install, Keep, Unistall, …“. Bei Bedarf kann hier eine bestimmte Version auch ausgewählt werden. Im Anschluss werden die Abhängigkeiten von anderen Paketen geprüft und diese ggf. dann gleich mitinstalliert. Für Updates muss man den Setup nochmals aufrufen und diese werden dann automatisch angeboten.

OSGeo4W Installer

Der OSGeo4W Installer, hier beim Updaten von Paketen im fortgeschrittenen Modus.

Der Aufruf der Kommandozeilenprogramme erfolgt über die OSGeo4W Shell – eine angepasste Windows-Kommandozeile. Wer noch eine separate QGIS Installation hat, muss aufpassen, nicht die falsche Shell zu öffnen. Mit jeder nicht OSGeo4W QGIS kommt eine OSGeo4W Shell dazu, die erst einmal genauso aussieht, aber nicht die erwähnten Programme enthält. Daher im Startmenü scrollen, bis man den Eintrag OSGeo4W hat und die dort verlinkte Shell öffnen. Es gibt aber auch Programme wie GDAL, ogr2ogr und proj, welche in jeder Shell vorhanden sind.

Osmium

Wie ruft man nun Osmium auf? Am besten wirft man einen Blick in die Dokumentation von Osmium. Wem das zu langwierig ist, kann einfach „osmium“ eingeben und erhält dann die folgende Ausgabe. Zum Testen empfiehlt sich noch eine OSM-PBF-Datei von der Geofarbik zu besorgen. Es empfiehlt sich immer mit einer möglichst kleinen Datei zu starten, auch wenn das Programm sehr performant ist.

Osmium in der OSGeo4W Shell

Osmium in der OSGeo4W Shell

Zum Arbeiten legt man sich die OSM-Datei am besten in einen Ordner und navigiert in der Shell mit „cd <Pfad>“ dahin. Die Tabulatortaste hilft bei der Autovervollständigung von Pfaden und Dateinamen. Es folgen ein paar aus meiner Sicht interessante Befehle, die man praktisch häufiger benötigt. Meine Beispieldatei heißt „sachsen-latest.osm.pbf“, wobei die Befehle jetzt zum Teil aufeinander aufbauen:

# Ausgabe von Informationen zur Datei
osmium fileinfo sachsen-latest.osm.pbf 
# Ausgabe von mehr Informationen zur Datei (scannt Datei) 
osmium fileinfo -e sachsen-latest.osm.pbf 
# Konvertierung von PBF nach XML 
osmium cat sachsen-latest.osm.pbf -o sachsen.osm 
# Abfrage nach Informationen zu einer Node-ID 
osmium getid -f osm sachsen-latest.osm.pbf 2283360380 
# Für Ways und Relations muss w bzw. r der ID vorangestellt werden 
osmium getid -f osm sachsen-latest.osm.pbf r191645 
# Zuschneiden auf eine Boundingbox
osmium extract -b 13.882186,50.902798,14.014744,51.017922 sachsen-latest.osm.pbf -o pirna.pbf
# Extrahieren von allen Gebäuden Ways und Relations
osmium tags-filter pirna.pbf wr/building -o pirna-building.pbf
# Tags extrahieren und in Datei schreiben
osmium tags-count pirna.pbf > osm-tags-pirna.txt

Sehr praktisch die Vorverarbeitung von OpenStreetMap-Daten, bevor man einen Datenbankimport durchführt oder die Daten im GIS öffnet. Dadruch lässt sich viel Zeit sparen und auch eher unpraktische Zuschnitte über Landesgrenzen hinweg realisieren, ohne gleich einen ganzen Kontinent verarbeiten zu müssen.

IMPOSM

Die Software IMPOSM hat zwei Aufgaben: den Import von OpenStreetMap-Daten in eine PostgreSQL-Datenbank mit der räumlichen Erweiterung PostGIS und die Überführung der Key-Value-basierten OpenStreetMap Daten in ein relationales Datenformat mit Tabellen, Spalten und Zeilen. Lange Zeit war die Besonderheit, dass die Definition der Tabellen und der Tags, die in den Tabellen landen bei IMPOSM, anpassbar ist. Mittlerweile hat hier das Pendant osm2pgsql aufgeholt – nun lässt sich die Konfiguration noch flexibler anpassen, was früher ein festes Schema mit vier Tabellen war. Während osm2pgsql schon immer für Windows als Download verfügbar ist, gab es IMPOSM lange Zeit nur für Linux. Aktuell lässt sich das Tool bequem über OSGeo4W installieren. Die Anpassung der Tag-Tabellenzuordnung lässt sich recht einfach mittels einer JSON oder YAML-Datei anpassen. Anhand dieser Konfiguration wird zunächst ein Cache aufgebaut und dieser dann in die Datenbank importiert. Zum Testen kann man eine Beispielkonfiguration verwenden.

Um die Daten in eine Datenbank zu importieren, muss man natürlich erst einmal eine PostgreSQL-Datenbank aufsetzen. Dafür gibt es passende Installer, OSGeo4W hilft hier nicht. Im nächsten Schritt muss dann eine leere Datenbank erstellt und die Erweiterung PostGIS aktiviert werden. Die Dokumentation von IMPOSM unterstützt hier auch bei den ersten Schritten. Im Anschluss kann der folgende Befehl zum Aufbau des Caches und dem Import der Daten ausgeführt werden:

imposm import -mapping example-mapping.yml -read pirna.pbf -write -cachedir ./imposm-cache -overwritecache -connection postgis://user:password@127.0.0.1/db_name
# Die Befehle kann man auch einzeln aufrufen, die Kombination hier hat sich für mich zum schnellen Arbeiten bewährt und überschreibt immer den Cache und importiert gleich in die Datenbank

Das Ergebnis des Imports kann man dann sich in pgAdmin oder QGIS anschauen. Aus meiner Sicht ist QGIS dafür am praktischsten. Dafür muss man sich zunächst eine Verbindung zur Datenbank herstellen und kann sich dann die Layer nach Belieben zusammenstellen. Die Mapping-Datei wird im selben Ordner erwartet, oder man gibt den Pfad an. Genauso entsteht im gleichen Ordner ein Cache, aus dem dann in die Datenbank geschrieben wird. Natürlich kann man die ganze Welt auf diese Weise importieren, was natürlich viel Speicherplatz benötigt. Daher lohnt es sich, das Mapping für IMPOSM an den eigentlichen Bedarf anzupassen und die Daten möglichst genau mit Osmium zuzuschneiden, um die Verarbeitung zu beschleunigen.

Beispieldaten für Pirna importiert aus OpenStreetMap mit IMPOSM

Beispieldaten für Pirna importiert aus OpenStreetMap mit IMPOSM