Hinweis: Für aktuelle Informationen zu Omniscale und den Open-Source-Projekten schauen Sie bitte auf www.omniscale.de

Ein Stadtplandienstes auf Basis von ALK/ALKIS und OpenStreetMap

Eine attraktive Karte für das Bundesland Mecklenburg-Vorpommern zu erstellen, war das Ziel des Projektes Offene Regionalkarte, welches im Jahr 2013 von Omniscale in einer ersten Version umgesetzt wurde.

Die besondere Herausforderung bei der Umsetzung lag in den verwendeten Daten. Daten aus dem OpenStreetMap Projekt wurden, gemeinsam mit Daten aus der Verwaltung, in einer Karte angezeigt und als performate Karte zur Verfügung gestellt.

Anfang 2015 wurde die Karte und die dazugehörige Software umfangreich aktualisiert und angepasst. Zusätzlich wurde eine Kartenanwendung, basierend auf OpenLayers 3, entwickelt. In diesem Artikel werden der Aufbau des Systems und einige Neuerungen beschrieben.

Datengrundlage

Bevor die Amtlichen-Daten und die OpenStreetMap-Daten in einer gemeinsamen Karte dargestellt werden konnten, mussten diese für die Verwendung als Stadtplan aufbereitet und vereinheitlicht werden. Beide Datenquellen wurden hierfür in das Koordinatensystem UTM32 transformiert und jeweils in eine PostGIS-Datenbank importiert.

OpenStreetMap

Für den Import und das Aufbereiten der OpenStreetMap-Daten wurde die Open-Source-Software Imposm verwendet. Imposm ermöglicht es, dass nur die OpenStreetMap-Daten in die Datenbank importiert werden, die auch für das Zeichnen der Karte benötigt werden.

Aus OpenStreetMap wurden für die Karte daher sämtliche Straßendaten, alle Flächen- und Gebäudebeschriftungen und jegliche Art von Wasserflächen übernommen und in eine eigene Datenbank importiert.

Zusätzlich zu den Daten für die Karte, wurden Point of Interests (POIs) ausgewählt und importiert. Diese werden nicht direkt in der Karte dargestellt, können aber später in der Kartenanwendung dynamisch vom Benutzer abgefragt und ausgedruckt werden.

Außerdem ermöglicht Imposm es, die Daten geografisch zu beschränken. Mit der Polygon-Clipping Funktion können somit nur die Daten importiert werden, die in einem definierten Bereich liegen: in diesem Fall Mecklenburg-Vorpommern. Alle Geometrien außerhalb des definierten Bereiches werden abgeschnitten oder vom Import ausgeschlossen.

Neben der Auswahl der Daten optimiert Imposm die Daten direkt für das Zeichnen von Karten. Beispielsweise werden beim Import automatisch generalisierte Geometrien erstellt. So werden Straßen für kleinere Maßstäbe vereinfacht, damit auch Gesamtansichten des Straßennetzes schnell abgerufen werden können.

Amtliche Daten

Über die amtlichen Daten wurden die weiteren Daten für die Karte zur Verfügung gestellt. Hierzu gehören Gebäude mit Hausnummern, die Flächennutzung sowie die administrativen Grenzen.

Beim Import in die Datenbank wurden diese Daten ebenfalls optimiert. Die Optimierung erfolgte vor allem im Hinblick auf die performante Bereitstellung der Karten. Hierfür wurde die Anzahl der Flächen reduziert. Flächen mit der selben Nutzungsart – in dem Stadtplan einheitlich dargestellt – wurden zu gemeinsamen Flächen zusammengefasst. Die Anzahl der Objekte, die gezeichnet werden müssen, konnte somit deutlich verringert werden.

Aktuell werden die Daten von den Kreisen aus der ALK als Shapefiles bereitgestellt. Die Umstellung auf ALKIS Daten wurde im Zuge der Aktualisierung bereits vorbereitet.

Um die Karte optisch noch ansprechender zu gestalten wurde zusätzlich ein Höhenmodell in den Hintergrund der Karte gelegt.

Aktualisieren der Daten

Das Aktualisieren der amtlichen Daten wurde so konzipiert, dass lediglich ein Austausch der Shapedateien vorgenommen werden muss. Durch ein automatisiertes Import-Skript werden die Daten eingespielt und die oben angesprochenen Optimierungen durchgeführt.

Auch die OpenStreetMap-Daten werden laufend aktualisiert. Für die Aktualisierung der OpenStreetMap-Daten wurde die Open-Source-Software Osmosis in Verbindung mit OSM-Diff-Dateien verwendet.

In den OSM-Diff-Dateien sind die jeweiligen Änderungen aus dem abgefragten Zeitraum gespeichert. Osmosis aktualisiert mit Hilfe der OSM-Diff-Dateien den einmalig erstellten OpenStreetMap-Ausschnitt und hält diesen laufend auf dem neusten Stand. Anschließend wird der Ausschnitt erneut mit Imposm in die Datenbank eingespielt. Änderungen aus dem OpenStreetMap-Projekt sind somit spätestens nach 24-Stunden im Stadtplandienst zu sehen.

Die Aktualisierung der Daten kann im Produktiv-Betrieb durchgeführt werden.

Die Karte

Neben der technischen Umsetzung, lag ein weiteres Augenmerk auf dem individuellen Design der Karten. Das Design wurde an die Vorgaben des Auftraggebers angepasst. Für die Darstellung der Daten wurde der Kartenrenderer Mapserver verwendet. MapServer ist eine der bekanntesten Open-Source-Software im GIS-Bereich.

Für die erste Entwicklungsstufe des Stadtplans wurde MapServer in der Version 6 verwendet. Vor allem die Beschriftung von Straßen machten hierbei allerdings Probleme. Ziel war es, so viele Straßen wie möglich zu beschriften. Hierfür mussten auch Straßenbezeichnungen in gebogenen oder ringförmigen Straßen platziert werden. Diese Platzierung erzeugte jedoch häufig Beschriftungen, die schlecht zu lesen waren.

MapServer wurde im Zuge des Projektes daher so erweitert, dass die Software automatisch dafür sorgt, dass eine bessere Beschriftung möglich ist. MapServer verschiebt die Beschriftungen bei zu starken Krümmungen von Straßen nun so, dass die Krümmungen vor oder nach Wortgrenzen liegen. Die Optimierungen werden in der nächsten MapServer Version enthalten sein.

Die folgenden Bilder zeigen MapServer 6 mit stark gekrümmten Beschriftungen und eine Entwicklungsversion von MapServer 7.

Zusätzlich kommt für die Bereitstellung der Karten auch die Open-Source-Software MapProxy zum Einsatz.

Mittels MapProxy wird die Karte in 20 verschiedenen, vorher definierten Maßstäben bereitgestellt. Über MapProxy wird der Dienst als WMS für Desktop-GIS und als Kacheldienst für Webanwendungen angeboten. Durch die Verwendung von MapProxy konnte zudem eine sehr hohe Geschwindigkeit für den Dienst erreicht werden.

Kartenanwendung

Die beste Karte hat keinen Nutzen, wenn diese nicht von Bürgern oder Behörden genutzt wird. Für die Verwendung der Karte im Internet wurde daher auch eine dazugehörige Kartenanwendung entwickelt.

Die Kartenanwendung selbst basiert auf OpenLayers 3 im Zusammenspiel mit AngularJS. Die hier entstandenen Komponenten wurden als Open-Source-Software in einer eigenen Bibliothek Anol veröffentlicht.

Einen Vortrag zu der in diesem Projekt entstandenen Software wird es auch auf der diesjährigen FOSSGIS 2015 in Münster geben. Zudem werden wir das Projekt im Anschluss an der FOSSGIS-Konferenz hier im Blog ausführlich vorstellen.

Die Kartenanwendung stellt, neben der Betrachtung der Karten, weitere Funktionen für den Benutzer zur Verfügung. So kann der Benutzer die aus OpenStreetMap importierten POIs in der Karte anzeigen lassen. Die POIs sind aufgeteilt nach Themen- und Interessensgebieten und werden dynamisch, abhängig vom Ausschnitt und dem Themenbereich geladen und dem Benutzer dargestellt.

Der Stadtplandienst besitzt zudem um eine Schnittstelle, die es dem Besucher ermöglicht einen Kartenausschnitt in hoher Qualität zum Beispiel für den Druck herunterzuladen. Über die Anwendung kann der Benutzer Karten in 300 DPI in verschiedenen Formaten z.B. PDF, SVG oder PNG erstellen.

Neben dem Download der Karte bietet die Anwendung die Möglichkeit ein Suchgitter inkl. Straßenverzeichnis für den ausgewählten Ausschnitt zu erstellen. Diese Funktionalität kennt man typischerweise von Stadtplänen. Auf der Karte wird ein entsprechendes Suchgitter dargestellt und im Straßenverzeichnis finden sich alle Straßen mit Verweis auf das entsprechende Gitter.

Zusätzlich zum Straßenverzeichnis liefert die Anwendung ein Verzeichnis über die vom Benutzer ausgewählten POIs.

Details zur technischen Umsetzung über das Straßenverzeichnis und der Kartenanwendung werden wir Ihnen in einem weiteren Blog-Post vorstellen.

Weiterführende Links