Schlagworte: QGIS

Geodaten aus Open Street Map importieren

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:

1
2
3
4
5
6
7
8
[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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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. Landesgrenze
  2. Bundesland
  3. Regierungsbezirk
  4. Landkreis / Kreis / kreisfreie Stadt / Stadtkreis
  5. Amtsgemeinde, Verwaltungsgemeinschaft
  6. Stadt, Gemeinde
  7. Stadtbezirk / Gemeindeteil mit Selbstverwaltung
  8. Stadtteil / Gemeindeteil ohne Selbstverwaltung

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

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

Beitrag teilen:

Vektorkarten: Shapefiles nach KML exportieren mit QGIS

Digitale Vektorkarten müssen oft als KML vorliegen, damit man sie zum Beispiel mit CartoDB oder Google Fusion Tables verwenden kann. Die Ausgangskarten kann man oft als sogenanntes ESRI-Shapefile herunterladen. Das Problem ist, dass Shapefiles aus mehreren Dateien bestehen (*.shp für die Geometrie, *.dbf für Daten, *.prj für die Projektion usw.). Das an XML angelehnte Dateiformat KML ist da deutlich praktischer, da es alle Daten in eine Datei zusammenfasst und diese für Menschen halbwegs lesbar bleiben.

In unserem Fall wollen wir eine Karte der Wahlkreise Deutschlands von der Website des Bundeswahlleiterbüros ins KML-Format umwandeln. Zum Konvertieren verwenden wir die mächtige Open Source Geo-Software QGIS. Diese ermöglicht es, Shapefiles zu bearbeiten und in verschiedene Formate zu exportieren.

Importieren kann man das Shapefile über Layer > Vektorlayer hinzufügen oder in dem man die Datei einfach auf die Arbeitsfläche von QGIS zieht. Sieht man jetzt eine Karte der Wahlkreise, hat alles geklappt. Im folgenden Schritt schauen wir uns an, was für Daten die Karte beinhaltet. Dazu klickt man mit Rechts auf den Layer Namen und geht anschließen auf Attributtabelle öffnen.qgis-open-table

Hier sieht man die Namen und Nummern der Wahlkreise. Wichtig ist es, sich zu überlegen, worüber man später seine Wahlkreise identifizieren möchte. In unserem Fall bietet sich WKR_NR an. Merken!qgis-attribute-table

Nach Schließen des Fensters öffnen wir den Export-Dialog Speichern als mit einem weiteren Rechts-Klick auf den Layer-Namen.

In dem aufgehenden Fenster muss als Format Keyhole Markup Language ausgewählt und ein Speicherort festgelegt werden. Unter mehr Einstellungen kann man nun die WKR_NR im Feld NameField eintragen und wenn man möchte, im Feld DescriptionField noch den Wahlkreisname WKR_NAME.qgis-export-dialog

Ältere Versionen von QGIS: In älteren Versionen von QGIS gibt es die beiden Felder Name- und Description-Field noch nicht. Hier gibt es nur eine Textfeld OGR Attributerzeugung. Um zum gleichen Ergebnis zu kommen, muss man hier einfach folgendes eintragen:

NameField=WKR_NR
DescriptionField=WKR_NAME

Mit einem Klick auf OK wird das KML exportiert. Ob alles geklappt hat, kann man überprüfen, indem man das KML mit Google Earth öffnet. Liegen die Wahlkreise dort wo sie liegen sollten (Deutschland) hat man gewonnen. Der Weiterverarbeitung der KML-Datei mit anderen Programmen und Anwendungen steht nun nichts mehr im Wege.

Für die Nerds: Durch das Ausfüllen von Name- und DescriptionField hat später jedes Polygon, beziehungsweise jeder Wahlkreis, die folgende Datenstruktur:

<Placemark>
    <name>1</name>
    <description>Flensburg Schleswig</description>
    <Polygon>9.982564417898971,54.644060720627934</Polygon>
</Placemark>

Happy coding!

Beitrag teilen: