Topografische Grundlage für sein GIS-Projekt mittels Daten-Import vom OpenStreetMap-Projekt

Aus aktuellem Anlass möchte ich mit diesem Beitrag ein kleines Tutorial verfassen, wie man mit einer GIS-Anwendung, in diesem Fall QGIS, und den Daten vom OpenStreetMap-Projekt eine kleine topographische Kartengrundlage schafft, auf der man zum Beispiel mit einer geologischen Karte für seinen studentischen Kartierkurs aufsetzen kann.

 

Wer sich QGIS noch nicht installiert hat, sollte das zunächst tun. Ich verwende für diesen Workshop die Version 1.8.0.

 

Der oben genannte Verweis auf das OpenStreetMap-Projekt erfolgte aus folgendem Grund: Wer eine geologische Karte in einem GIS-Projekt plant, benötigt für den Hintergrund meist irgendwelche topografischen Orientierungspunkte wie Straßen, Flüsse und dergleichen. Diese könnte man natürlich von Hand anlegen, indem man den Scan einer solchen topografischen Karte georeferenziert und diese Layer für Layer vektorisiert. Das macht einigermaßen Arbeit und ist ärgerlich, weil man weiß, dass diese Aufgabe irgendwer schon hundert Mal gemacht hat. Darum liegt es nah, sich einfach das bereits vorliegende topografische Material vom OpenStreetMap-Server herunterzuladen und anschließend zu separieren. Auf diese Weise bekommt man innerhalb von 5 min alle topografischen Elemente für ein bestimmtes Gebiet in sein GIS-Projekt importiert. Wir gehen in diesem Workshop wie folgt vor:

  1. Ordnerstruktur für GIS-Shapes vorbereiten.
  2. GIS-Plugin für OpenStreetMap-Import.
  3. Projekt-Einstellungen in Quantum GIS.
  4. OpenStreetMap-Daten herunterladen und importieren.
  5. Weiterverarbeitung der OSM-Daten.

Ordnerstruktur für GIS-Shapes vorbereiten

Es ist immer klug, die von QGIS erzeugte Projektdatei mit der Endung .qgs in einen eigenen Ordner zu verfrachten, z.B. namens »Diplomkartierung«. Hierin wird sogleich ein weiterer Unterordner angelegt, namens »Shapes«. Dies ist notwendig, weil jedes einzelne Vektorlayer für sich aus 5–6 Dateien besteht. Bei einer gewissen Anzahl von Layern wird der Projektordner sonst ohne weitere Unterordner rasch »zugemüllt«. Wer will, kann innerhalb des Shape-Ordners weitere Unterordner wie »Topografie« (Flüsse, Gebäude, Straßen…) und »Geologie« (Quartärbedeckung, Granit, Schiefer…) anlegen. Man sollte sich die Aufteilung vorher gut überlegen. Späteres Umbenennen oder Verschieben von Ordner ist nicht ratsam, weil ansonsten die Layer in Quantum GIS neu eingelesen werden müssen.

GIS-Plugin für OpenStreetMap-Import

Quantum GIS wird gestartet. Über den Menüpunkt Erweiterungen|Erweiterungen verwalten bekommt man eine Liste mit verfügbaren Plugins vorgesetzt, wovon einige bereits aktiviert sind. Falls noch nicht aktiviert, wird das für das OpenStreetMap plugin (bei mir Version 0.5) nachgeholt (Bild). Im Programmfenster sollte eine neue Werkzeugleiste mit sechs grünlichen OpenStreetMap (im folgenden mit OSM abgekürzt)- Symbolen erschienen sein. Zur Verwendung später.

Plugin-Verwaltung in Quantum GIS. Das vorinstallierte Plugin für den Import von OSM-Daten muss ggfs. noch aktiviert werden.
Plugin-Verwaltung in Quantum GIS. Das vorinstallierte Plugin für den Import von OSM-Daten muss ggfs. noch aktiviert werden.

Projekt-Einstellungen in QGIS

Da QGIS schon mal geöffnet ist, kann man auch gleich einige wichtige Einstellungen vornehmen, die im Übrigens für jedes mit QGIS neu erstellte Projekt gültig sind: Unter Datei|Projekteinstellungen (GNU/Linux) bzw. Einstellungen|Projekteinstellungen (Windows) wechselt man auf den Tab »Koordinatenbezugssystem« und setzt einen Haken bei »On-the-fly-KBS-Transformation aktivieren« (nächstes Bild, oberer, linker Pfeil). Im unteren Teil des Tabs sollte nun eine Liste mit verfügbaren Koordinatensystemen sichtbar werden (nächstes Bild, unterer Pfeil), wovon man sogleich das für sein Projekt richtige auswählen kann. Die Auswahl hängt davon ab, in welchem Land das Arbeitsgebiet liegt, welches Koordinatendatum und -format zur Verwendung kommen soll. Für diesen Workshop wähle ich die in Deutschland gebräuchliche Gauss-Krüger-Zone 3 des DHDN (Deutsches Hauptdreiecksnetz), ID=EPSG:31463 (nächstes Bild, mittlerer Pfeil). Die vorher aktivierte Option »on-the-fly« bewirkt, dass neu hinzugefügte Shapes in dieses Koordinatensystem konvertiert werden, falls ihnen ein anderes zugewiesen ist.

Ein Koordinatensystem für das aktuelle QGIS-Projekt festlegen.
Ein Koordinatensystem für das aktuelle QGIS-Projekt festlegen.

Im ersten Tab »Allgemein« kann man noch einen Projekttitel vergeben (nächstes Bild, linker Pfeil) und sollte unbedingt Pfade speichern auf relativ stellen (nächstes Bild, rechter Pfeil). Dies bewirkt, dass QGIS im Projekt verlinkte Shape-Dateien nur unterhalb der eigenen Ordnerstruktur, d.h. im Ordner »Diplomkartierung« (siehe Beispiel oben) sucht und es damit egal ist, unter welchem Pfad dieser Ordner gespeichert ist. Steht die Pfadabfrage auf »absolut«, werden verlinkte Shape-Dateien immer auf einem kompletten Pfad vom Dateisystem-Wurzelverzeichnis aus abgefragt, was ein Verschieben/Kopieren des Ordners Diplomkartierung z.B. auf einen anderen Computer kompliziert werden lässt, weil dessen Pfade sicherlich andere sein werden als jene auf dem Ursprungs-PC.

Einen Titel für das QGIS-Projekt vergeben und die Pfad »relativ« speichern.
Einen Titel für das QGIS-Projekt vergeben und die Pfad »relativ« speichern.

OpenStreetMap-Daten herunterladen und importieren

Nun kann das eigentliche Hinzufügen der OSM-Topografie-Dateien in das (noch) leere QGIS-Projekt beginnen. Wer das QGIS-Projekt noch nicht gespeichert hat, sollte das jetzt tun. Speicherort ist der dafür angelegte Ordner »Diplomkartierung«. Nun gibt es zwei Möglichkeiten, OSM-Daten dem Projekt hinzuzufügen:

  1. Herunterladen per Koordinatenabfrage direkt mit dem OSM-Plugin in QGIS.
  2. Import einer offline gespeicherten .osm-Datei mit den darin enthaltenen Vektordaten ins QGIS-Projekt.

zu 1.

Dazu in der OSM-Werkzeugleiste den Button »OSM-Daten herunterladen« anwählen. Im Fenster die Begrenzung des Gebiets mittels Koordinaten festlegen (nächstes Bild, oberer Pfeil). Achtung, die Abfrage erfolgt im Format dd.ddddd, also eine Dezimalzahl berechnet auf den Längen- und Breitengrad. Im Internet gibt es verschiedene Seiten, die z.B. 51° 12' 3'' N in eine solche Form umrechnen. Man kann diese Eckdaten auch per Mausklick z.B. in Viking (den Gebrauch dieses großartigen Programms stelle ich ein andernmal in einem Workshop vor), Marble oder Google Earth erfahren (vorher in beiden Programmen die Koordinatenanzeige ggfs. umstellen). Es kann kein beliebig großes Gebiet gedownloaded werden, z.B. nicht ganz Europa (macht ja auch keinen Sinn). Gebiete um im kleinen Kilometer-Bereich stellen kein Problem dar. Der Haken bei »Benutzerdef. Darstellung« sollte unbedingt deaktiviert werden (nächstes Bild, unterer Pfeil). Nachteil dieser Methode ist, dass man sich vorher die Koordinaten seines Gebiets besorgen und ggfs. umrechnen muss. Außerdem werden die heruntergeladen Daten für gewöhnlich in einem temporären Ordner gespeichert, sodass diese nach Programm- oder System-Neustart verschwinden bzw. nicht mehr gefunden werden. Weiterhin können einzelne Layer-Ebenen vor deren Import nicht ausgewählt werden.

Der Import-Dialog für OSM-Daten mit dem OSM-Plugin für QGIS.
Der Import-Dialog für OSM-Daten mit dem OSM-Plugin für QGIS.

zu 2.

Diese Methode ist weitaus einfacher und von mir empfohlen: Im Internet-Browser auf die OSM-Hauptseite (www.openstreetmap.org) wechseln und dort den ungefähr gewünschten Ausschnitt und Zoomstufe für das Arbeitsgebiet einstellen. Dann am oberen Bildrand den Button »Export« wählen (nächstes Bild, oberer Pfeil). Über den Blau hinterlegten Button »Einen anderen Bereich manuell auswählen« erscheint ein hell hinterlegtes Rechteck auf der OpenStreetMap-Karte, das per Anfasser am Rand weiter eingegrenzt werden kann. Hat man sein Wunsch-Gebiet ausgesucht, wird als Export-Format »OpenStreetMap-XML-Daten« angeklickt (nächstes Bild, unterer Pfeil) und eine Datei map.osm gedownloadet. Diese wird ebenfalls in dem Projektordner »Diplomkartierung« gespeichert. Die Datei enthält alle für den Bereich relevanten Vektordaten (Flüsse, Gebäude, Infrastruktur, sonstige Punkte).

OSM-Seite im Internet und ihr Export-Modul. Man beachte, dass sich keine all zu großen Gebiete exportieren lassen. Wer ganze Länder oder andere überregionale Gebiete als .osm-Vektordatei braucht, schaut mal bei http://download.geofabrik.de/ vorbei.
OSM-Seite im Internet und ihr Export-Modul. Man beachte, dass sich keine all zu großen Gebiete exportieren lassen. Wer ganze Länder oder andere überregionale Gebiete als .osm-Vektordatei braucht, schaut mal bei http://download.geofabrik.de/ vorbei.

Wieder ins QGIS-Fenster gewechselt klickt man nun im OSM-Panel den Button für »OSM aus Datei laden« (am weitesten linker Button). Im erscheinenden Fenster oben den Pfad zur Datei map.osm anwählen (nächstes Bild, oberer Pfeil). Unter »Spalten für Elemente hinzufügen« können nach Bedarf alle oder nur eine Auswahl angewählt werden. In diesem Workshop wird ein Haken bei allen Elementen gesetzt. Der Haken unter »Benutzerdefinierte Darstellung« wird auch hier unbedingt entfernt (nächstes Bild, unterer Pfeil). Anschließend werden die Daten ins Projekt importiert.

Eine offline gespeicherte .osm-Datei wird mittels OSM-Plugin in QGIS importiert.
Eine offline gespeicherte .osm-Datei wird mittels OSM-Plugin in QGIS importiert.

Weiterverarbeitung der OSM-Daten

QGIS-Projekt speichern! Möglicherweise sieht man nach erfolgtem Import noch gar nicht die gerade dazugeladenen Daten von OSM. Abhilfe schafft ein Rechtsklick auf eines der drei Layer (map points, map lines, map polygons) in der Layer-Liste (meist links am Bildrand in QGIS) und dann Auf die Layerausdehnung zoomen. Nun sollte man das Datenpaket von OSM für sein Arbeitsgebiet vor sich sehen (nächstes Bild).

Das Projekt-Fenster von QGIS; in der Layerliste befinden sich die soeben aus der OSM-Quelle hinzugefügten Datenlayer für Punkt-, Linien- und Polygon-Objekte.
Das Projekt-Fenster von QGIS; in der Layerliste befinden sich die soeben aus der OSM-Quelle hinzugefügten Datenlayer für Punkt-, Linien- und Polygon-Objekte.

Zunächst gibt es noch zwei Baustellen zum Nachbearbeiten: Farben, Linienbreite usw. (insgesamt der »Style«) sind ungenügend eingestellt, d.h. haben krass leuchtende Farben oder nicht-unterschiedliche Linienstärken. Was noch viel wichtiger ist: Alle Vektordaten sind in diesen drei Layern untergebracht: Das Layer map lines enthält beispielsweise alle Linienelemente, also z.B. alle Flüsse und Straßenzüge. Das Polygon-Layer enthält Gebäude, Waldstücke und andere Flächen-Elemente. Zu allem Überfluss sind diese Layer zur Bearbeitung gesperrt, können also weder nach Attributen gefiltert noch durch Löschen einzelner Elemente »ausgemistet« werden. Nun gehts also ans Erzeugen eigener Shape-Dateien aus diesen OSM-Layern.

 

Zunächst sollte man sich einen Überblick verschaffen, welche Elemente nun eigentlich in dem jeweiligen OSM-Layer enthalten sind. Dazu wird die Attribut-Tabelle über Rechtsklick auf Layer → Attributtabelle öffnen aufgeklappt. In meinem Beispiel öffne ich die Attributtabelle für das map lines-Layer (nächstes Bild). Jede Zeile enthält ein Element auf der Karte, d.h. eine Straße, eine Gasse, einen Bach, einen Fluss usw. In den Spalten sind in der jeweiligen Kategorie (Spalten) Einträge gemacht: Alle Straßen haben in der Spalte highway einen Eintrag (nächstes Bild, Pfeil über highway), der sie näher charakterisiert. In der Spalte waterway (nächstes Bild, Pfeil über waterway) kann ich dagegen durch einen darin befindlichen Eintrag alle Bäche und Flüsse des importierten Datenbestands sehen. Der Klick auf den Spaltenkopf bewirkt eine Sortierung, sodass die Einträge zusammengefasst dargestellt werden (nächstes Bild, großer, rechter Pfeil).

Die für das »map-lines«-Layer geöffnete Attributtabelle.
Die für das »map-lines«-Layer geöffnete Attributtabelle.

Theoretisch möchte ich aus diesem Mischmasch zwei einzelne Shapes separieren, eines für Straßen, eines für Gewässer, jedoch ohne die jeweils anderen Daten. Da die vor uns befindliche Attributtabelle des OSM-Layers nicht editierbar ist, d.h. weder Spalten noch Zeilen gelöscht werden können, speichern wir aus diesem Layer heraus eine eigene Shape-Datei, die schließlich editierbar sein wird:

 

Die Attributtabelle kann wieder geschlossen werden. Nun wieder Rechtsklick auf das Layer map lines und diesmal den Eintrag »Speichern als« auswählen. Im erscheinenden Fenster (nächstes Bild) unter »Speichern unter« einen Pfad für das neue Shape auswählen (nächstes Bild, oberer Pfeil). In diesem Fall wähle ich den Titel Gewaesser und speichere die Datei im Ordner Diplomkartierung/Shapes. Unter »Kodierung« ist immer sinnvoll, UTF-8 auszuwählen (nächstes Bild, Pfeil). Als KBS (Koordinatenbezugssystem) wird das Projekt-KBS ausgewählt (nächstes Bild). Ein Haken wird abschließend bei »Gespeicherte Datei zur Karte hinzufügen« gesetzt (nächstes Bild, unterer Pfeil), damit das neue Layer nach Anlegen des Shapes direkt im Projektfenster von QGIS erscheint. Ein OK erzeugt nun endlich das Shape.

Der »Speichern unter«-Dialog zum Speichern einer neuen Shape-Datei aus einer vorhandenen.
Der »Speichern unter«-Dialog zum Speichern einer neuen Shape-Datei aus einer vorhandenen.

In der Layer-Liste des QGIS-Projektfensters ist ein neues Layer namens Gewaesser erschienen. Öffnen wir von diesem nun die Attributtabelle, kann diese nun auch endlich editiert werden!

 

Zunächst erfolgt eine Sortierung der Einträge per Klick auf den Spaltenkopf von waterway (nächstes Bild, rechter Pfeil). Alle Einträge (Zeilen), die in der Spalte waterway keinen Eintrag besitzen (NULL), sollten zwecks Datenreduktion gelöscht werden. Hierfür die Tabelle zunächst in einen editierbaren Modus schalten: Am unteren Rand der Attributliste den Button mit dem blauen Stift anwählen (nächstes Bild, unterer, linker Pfeil). Anschließend eine Mehrfachauswahl treffen, indem die erste der zu löschenden Spalten per Linksklick auf die Zeilennummer am linken Rand ausgewählt wird (nächstes Bild, linker Pfeil) und die letzte der zu löschenden Zeilen ebenso, nur jetzt bei gedrückter Umschalt-Taste (wie in einer Tabellenkalkulation). Sind diese Zeilen markiert (blau hinterlegt) können sie über den Löschen-Button (ebenfalls am unteren Rand der Attributtabelle; nächstes Bild, unterer rechter Pfeil) entfernt werden. Die ausgemistete Tabelle wird anschließend gespeichert, indem abermals das blaue Stift-Symbol gedrückt und der folgende Hinweis aufs »wirklich speichern?« bestätigt wird.

In der nun editierbaren Attributtabelle wird eine Mehrfachauswahl auf überflüssige Einträge getroffen und diese gelöscht.
In der nun editierbaren Attributtabelle wird eine Mehrfachauswahl auf überflüssige Einträge getroffen und diese gelöscht.

Layer-Stil anpassen

In meinem Beispiel enthält dieses »gereinigte« Gewässer-Layer 14 Einträge, die sich laut Attribut in der waterway-Spalte aus größeren Fließgewässern und kleinen Rinnsalen zusammensetzen. Im Moment haben all jene noch die gleiche Signatur, in meinem Fall einen dünnen, olivgelben Strich. Um beispielsweise die Flüsse mit einer dicken dunkelblauen und die Bäche mit einer dünneren, hellblauen Linie darzustellen, gehen wir wie folgt vor: Der Stil erfolgt »kategorisiert«.

 

Dazu per Doppelklick auf das Gewässer-Layer die Layer-Eigenschaften aufrufen. Gleich im ersten Tab »Stil« findet sich oben links ein Dropdown-Menü, das standardmäßig auf »Einzelsymbol« steht – alle Elemente des Layers haben das gleiche Aussehen, in diesem Fall eine 0,26 breite Linie von olivgelber Farbe. Einzelsymbol wird nun auf »kategorisiert« umgestellt (nächstes Bild, oberer Pfeil) und als Spalte waterway ausgewählt (nächstes Bild, Pfeil). Ein Klick auf Klassifizieren im unteren Drittel des Fensters (nächstes Bild, unterer Pfeil) erzeugt eine Liste aller möglichen Einträge aus der Spalte waterway, in diesem Fall vier Zeilen ditch, river, stream und eine unbeschriftete Zeile (nächstes Bild, mittlerer, linker Pfeil). Wer auf »Klassifizieren« klickt und eine Meldung erhält, dass der ausgewählte Farbverlauf nicht verfügbar sei, muss zunächst einen anlegen! (Dropdown-Menü Farbverlauf ebenfalls im oberen Drittel des Fensters; nächstes Bild, rechter Pfeil). Hier ist eigentlich egal, ob ein Farbverlauf mit Gradient oder zufälligen Farben erstellt wird, da man den Stil sowieso manuell anpasst.

Die Einträge des Gewässer-Layers werden nun zur besser unterscheidbaren Darstellung anhand ihrer Einträge in der »waterway«-Spalte »kategorisiert«.
Die Einträge des Gewässer-Layers werden nun zur besser unterscheidbaren Darstellung anhand ihrer Einträge in der »waterway«-Spalte »kategorisiert«.

Diese Einträge können nun per Doppelklick auf den bunten Strich (nächstes Bild, linker Pfeil) einzeln in Linienstärke, Stiftstil, Linienfarbe usw. angepasst werden. Ein Doppelklick auf den Wert unter »Beschriftung« (nächstes Bild, rechter Pfeil) ermöglicht eine Anpassung des Namens für die Legende, z.B. in »Bach«, »Fluss« usw.

Für die kategorisierten Einträge wird jeweils ein anderer Linienstil zugewiesen.
Für die kategorisierten Einträge wird jeweils ein anderer Linienstil zugewiesen.

Die beschriebene Prozedur wird ausgehend vom »OSM-Layer → Speichern als neues Shape« wiederholt für Straßenzüge, Waldgrundstücke (Polygon-Layer!) und alle anderen Elemente, die man auf seiner topografischen Grundlagenkarte sehen will. Am Ende sollten in der Layerliste je ein Eintrag für Gewässer, Straßen, Gebäude … sowie die drei Layer des OSM-Imports zu sehen sein. Da die aus den OSM-Layern extrahierten Topografie-Shapes für sich gespeichert wurden, können die OSM-Layer nun aus dem Projekt wieder entfernt werden (Rechtsklick → Entfernen). Auch der Bedarf an der OSM-Import-Datei map.osm ist erloschen, sodass auch diese aus dem Projektordner gelöscht werden kann.

 

Wer will, kann die verbliebenen Layer auch noch mittels Gruppen gliedern. Dazu Rechtsklick in einen freien Bereich der Layer-Liste → Neue Gruppe hinzufügen. Per Ziehen und Loslassen können die einzelnen Layern den angelegten Gruppen untergeordnet werden.

 

Da nun die topografische Grundlage steht, könnte man damit fortsetzen, Layer für geologische Flächen anzulegen. Wie das geht, zeige ich allerdings in einem anderen Workshop.