• Anleitung
  • 4. August 2015

Geodaten aus Open Street Map importieren

Open Street Map bietet kostenlose Geodaten, wie die Shapefiles von Bundesländern oder Landkreisen. Das Importieren klappt einfach mit QGIS oder Overpass Turbo.

Die Open Street Map (OSM) bietet kostenlos Geodaten zu verschiedenen Themen. Die einzelnen Layer der Open Street Map lassen sich über eine Schnittstelle abrufen und weiterverwenden. Typische Anwendungsfälle sind beispielsweise:

  • Ich möchte eine Karte aller Landkreise (Polygone) Deutschlands erstellen.
  • Ich möchte eine Karte aller Autobahnen (Ways) in Europa erstellen.
  • Ich möchte eine Karte aller Spielplätze (Nodes) in München erstellen.

Bei der Verwendung von Open Street Map-Daten ist immer die Quelle zu nennen. Für den deutschen Sprachraum muss der Quellennachweis © OpenStreetMap-Mitwirkende lauten. Mehr Informationen dazu hier.

Datenanfrage mit Overpass Turbo

Overpass Turbo ist eine Webanwendung mit einem Wizard, der das Erstellen von Anfragen erleichtert. Zudem bietet Overpass Turbo vielen Exportmöglichkeiten.

Um zum Beispiel alle Autobahnen in Bayern zu bekommen, würde man im Wizard highway=motorway and type:way in bavaria eingeben. Eine Dokumentation der Wizard-Syntax findet sich hier. Der Wizard übersetzt die Anfrage in die Syntax der OSM Overpass API:

[out:json][timeout:25];
{{geocodeArea:bavaria}}->.searchArea;
(
  way["highway"="motorway"](area.searchArea);
);
out body;
>;
out skel qt;

Bei größeren Anfragen kann es sein, dass man das Timeout hochsetzen muss. Die Angabe des Timeouts erfolgt in Sekunden. Hat die Anfrage geklappt, kann man die Daten zum Beispiel im GeoJSON-Format exportieren und in QGIS weiterverarbeiten.

Overpass Turbo

Weitere Beispiele für Anfragen in Overpass Turbo:

  • Alle Landkreise Deutschlands: boundary=administrative and admin_level=6 and type:relation in germany
  • Touristenattraktionen in der Nähe des Marienplatzes: tourism=attraction around "Marienplatz, München"

Für das Auffinden der einzelnen Orte (Bavaria, Marienplatz etc.) nutzt Overpass Turbo den sehr mächtigen OSM-Geocoder Nominatim.

Datenanfrage mit Quick OSM (QGIS)

Quick OSM ist ein Plugin für das Gedodatenprogramm QGIS. Genau wie in Overpass Turbo hilft Quick OSM dabei Anfragen an die  OSM-API zu formulieren. Quick OSM hat jedoch den Vorteil, dass man schon eine  Übersicht der verfügbaren Layer hat und so Datensätze entdecken kann. Die so erstellte Anfrage kann dann noch verändert werden:

<osm-script output="xml" timeout="300">
  <id-query ref="3600051477" type="area" into="area"/>
  // <id-query {{geocodeArea:Germany}} into="area"/>
  <union>
    <query type="relation">
      <has-kv k="boundary" v="administrative"/>
      <has-kv k="admin_level" v="6"/>
      <area-query from="area"/>
    </query>
  </union>
  <union>
    <item />
    <recurse type="down"/>
  </union>
  <print mode="body" />
</osm-script>

In diesem Fall wurde das Timeout auf 300 Sekunden erhöht und als zusätzlicher Filter <has-kv k="admin_level" v="6"/> eingefügt. Der zusätzliche Filter führt dazu, dass man nur Verwaltungsgrenzen auf Landkreisebene zurück bekommt. Ohne diesen Filter würde man sehr viele Daten zurückbekommen, da auch Bundeslandgrenzen, Regierungsbezirke usw. enthalten wären.

QGIS mit Overpass
Turbo

Es bietet sich an, Anfragen an die OSM-API immer so einfach wie möglich zu halten und die Daten später in QGIS zu filtern. Komplexe Anfragen an die OSM-API dauern ewig.

Exportieren der Daten

Sowohl in Overpass Turbo als auch QGIS kann man die Daten als GeoJSON exportieren. GeoJSON-Dateien sind recht platzsparend, werden von einer Vielzahl an Anwendungen unterstützt und sind im Nachhinein noch berarbeitbar. Für die finale Anwendung empfiehlt sich das Format TopoJSON, welches noch deutlichen kleiner ist.

Anwendungsfall Verwaltungsgrenzen

OpenStreetMap bietet Daten für Verwaltungsgrenzen, Wahlkreise und Postleitzahlgebiete. Vor allem die Verwaltungsgrenzen braucht man im Alltag immer wieder. Im OpenStreetMap-Kontext sind diese Grenzen von Typ boundary=administrativ. Um die jeweils richtigen Grenzen zu bekommen, muss man sich mit dem Konzept des admin_levels, sprich der Verwaltungsebene, auseinandersetzen. Diese können von Land zu Land anders sein. Für Deutschland gibt es diese Verwaltungsebenen:

  1. --
  2. Landesgrenze
  3. --
  4. Bundesland
  5. Regierungsbezirk
  6. Landkreis / Kreis / kreisfreie Stadt / Stadtkreis
  7. Amtsgemeinde, Verwaltungsgemeinschaft
  8. Stadt, Gemeinde
  9. Stadtbezirk / Gemeindeteil mit Selbstverwaltung
  10. Stadtteil / Gemeindeteil ohne Selbstverwaltung

Um also an die Stadtbezirksteile Münchens zu kommen, müsste man die Verwaltungsgrenze (boundary=administrativ) auf der Verwaltungsebene 10 (admin_level=0) anfragen.

Ich hoffe ihr könnt etwas mit dieser kurzen Anleitung anfangen. Wenn nicht, einfach in den Kommentaren nachfragen.