Kartenwerkstatt auf dem Intergeo-Stand

Vom 09.-11. Oktober fand die Intergeo 2012 in Hannover statt. Der OpenStreetMap-Stand hatte erneut großen Zulauf und die fleißigen Standbetreuer halfen bei Fragen zur neuen Lizenz und dem Einsatz der OSM-Daten auf mobilen Geräten. Eine Attraktion war auch die eingerichtete Kartenwerkstatt. Der Druckerhersteller Epson stellte für die gesamte Messelaufzeit einen Großformatplotter inklusive Papier und Tinte zur Verfügung. Bei der Vorbereitung der Messe wurde ein Setup erstellt, dass die Erstellung von druckbaren Karten direkt am Messestand ermöglichte.

Im Folgenden möchte ich die Konfiguration beschreiben und beschreiben welche Erfahrungen gesammelt wurden. Durch die Limitierung der Hardware konnte nur mit einem Ausschnitt gearbeitet werden. Bei entsprechend mehr Ressourcen funktioniert das Setup jedoch auch für den gesamten Planeten. Die Extrakte gibt es für einzelne Gebiete bei der Geofabrik oder für individuelle Gebiete beim Extraktdienst von BBBike. Das Grundsystem bestand aus einer Standardinstallation eines 64Bit-Ubuntu Precise Penguin Pangolin. Eingebunden wurden folgende PPAs

  • http://ppa.launchpad.net/mapnik/nightly-trunk/ubuntu
  • http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu
  • http://ppa.launchpad.net/kakrueger/openstreetmap/ubuntu

Außerdem wurde noch PostgreSQL 9.1 mit Postgis 2.0 sowie Apache installiert. Von den Mapnik-Utils wurde nik2img und cascadenik installiert. Hilfreich beim PostgreSQL-Tuning waren Frederiks Folien der SotM 2012. Folgende Einstellungen wurden gemacht:

shared_buffers = 24MB
work_mem = 32MB
maintenance_work_mem = 4096MB
autovacuum = off
fsync = on 
synchronous_commit = on

Gegebenenfalls muss noch der Parameter shmmax angepasst werden, falls die obigen Parameter zu groß gewählt werden:

sysctl -w kernel.shmmax = 4294967296  #4GB

Die virtuelle Maschine wurde mit 12GB RAM und 100GB HDD großzügig dimensioniert, außerdem lief sie von einer SSD.

Für das Rendern der Karte wurde MapServer und Mapnik eingesetzt. Der Kartenstil für Mapnik setzte auf dem osm2pgsql-Schema auf, wohingegen MapServer das Imposm-Schema verwendete. Im basemaps-Repository von MapServer gibt es ein Skript, das aus dem osm2pgsql-Schema ein Imposm-Schema erzeugt. Beim Import mit osm2pgsql wurde die Datei „default.style“ des deutschen Kartenstils benutzt sowie auch eine hstore-Spalte mit allen Tags erzeugt.

Am Anfang wurde nur mit dem Deutschland-Extrakt gearbeitet. Da es aber Anfragen für Österreich gab, wollte ich die Daten einfach hinzuladen. Beim Import habe ich jedoch die Hilfstabellen gelöscht, also musste ein Neuimport gemacht werden. So wurde zuerst wieder Deutschland importiert, ohne das Löschen der Hilfstabellen. Beim Import von Österreich gab es jedoch constraint-Verletzungen, da doppelte Einträge vorkamen. Letztendlich entschied ich mich für einen neuen Extrakt von bbbike der Deutschland und Österreich enthielt und die Hilfstabellen konnten wieder gelöscht werden.

osm2pgsql -c -d print -E 3857 -C 6096 -r pbf --drop --hstore --hstore-match-only --unlogged --number-processes 6 -p osm --slim -S /home/fossgis/build/styles/mapnik-german/default.style germany_austria.osm.pbf

Für den MapServer wurde ein WMS-Dienst erzeugt, der in drei Kartenstilen verfügbar war. Diese ähneln dem Aussehen von Google Maps, Bing Maps bzw. dem Michelin Atlas.

Das Rendern der Mapnik-Karten erfolgte mit dem Tool nik2img.py und es standen der internationale und der deutsche Kartenstil zur Verfügung.

Für die Verwendung auf dem Messe-Stand habe ich eine JavaScript-Anwendung erstellt, die auf OpenLayers und GeoExt aufbaut. So konnten über eine Web-GUI die Parameter und der gewünschte Kartenausschnitt bequem am Bildschirm eingestellt werden.

 

In der Oberfläche wird die Breite und Höhe des Kartenbildes in Pixeln angegeben. Durch den eingebundenen WMS des MapServer konnte das Ergebnis vorab im Browser betrachtet werden. Bildausschnitt und Kartenstil gaben exakt das Ergebnis wieder, nur in einer geringeren Auflösung. Durch einen Klick auf den „gooo-Button“ erfolgte das eigentliche Rendern in der hohen Auflösung. Dazu werden alle Parameter an ein Python-Skript übergeben. Dieses holt sich entweder das Bild vom MapServer oder, wenn entsprechend eingestellt, durch einen Aufruf von nik2img. Das Rendern des Kartenbildes erfolgte innerhalb weniger Minuten, oftmals sogar unterhalb einer Minute. Anschließend wurde noch eine Infobox mit Lizenzangabe und Quellennachweis per ImageMagick auf das Kartenbild gerendert. Dieser Schritt könnte auch vom MapServer direkt und wahrscheinlich auch durch Mapnik mit einem zusätzlichen Layer realisiert werden. Ein ImageMagick-Aufruf war hier jedoch einfacher.

Die hohe Auflösung wurde erreicht durch die Umrechnung der Höhe und Breite. Hier sind zwei Beispielaufrufe, die ein Bild mit 800×600 Pixeln für einen Ausdruck mit 360 dpi erzeugen:

  • http://printbox/cgi-bin/mapserv?LAYERS=default&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A900913&BBOX=1467870.6369923,6882377.556746,1488984.3755909,6897485.2569212&WIDTH=3990&HEIGHT=2855&format=agga&map_resolution=360
  • nik2img.py /home/fossgis/build/styles/mapnik/osm.xml mapnik_2012-10-11-11-28.png --scale-factor=3  -e 1467870.6369923 6882377.556746 1488984.3755909 6897485.2569212 -d 3990 2855 --no-open

Das fertige Bild konnte jetzt zum Plotter geschickt werden. Hier kann es kompliziert werden. Durch die Verwendung von Photoshop und Mirage (das bevorzugte Epson Druckwerkzeug) bestand der Aufwand lediglich im Öffnen des Bildes und der Einstellung der Ausrichtung (Hoch- /Querformat). Hat man nur den Standard-Druckertreiber muss man die Breite und Höhe des Bildes sowie des Papierformats, die Ausrichtung, die Auflösung und die Positionierung einstellen.

Gedruckt wurde auf einer 44-Zoll-Rolle mit Fotopapier und auf einer 36-Zoll Rolle mit Normalpapier. Die Druckdateien waren zwischen 50 und 120 MB groß und gedruckt wurde mit 360dpi. Der Druck auf Fotopapier dauerte ca. 20 Minuten im B0-Format, auf Normalpapier waren es 7-10 Minuten.

Das Setup funktionierte auf dem OSM-Stand sehr gut. Insgesamt wurden zwei Rollen Fotopapier (44″) und eine Rolle Normalpapier (36″) verbraucht. Am zweiten Tag lief der Plotter fast ununterbrochen und produzierte für viele Interessenten ihr Kartenposter. Die exakte Anzahl der Ausdrucke kann leider nicht mehr angegeben werden.

Natürlich gibt es immer Platz für Verbesserungen. Zum einen war die Web-GUI nur ein Prototyp, der noch deutlich verbessert werden kann. Die direkte Auswahl des Papierformats würde dem Benutzer die ganze Umrechnung mit Breite/Höhe, DPI und Pixel ersparen. Das Kartenbild selbst könnte noch durch einen Rahmen, ein zusätzliches Gradnetz oder Elemente wie Nordpfeil, Maßstabsleiste und Legende ansehnlicher gestaltet werden. Einige Kartenstile der frei zugänglichen OSM-Karten sind öffentlich. Einige benutzen zusätzliche Daten wie z.B. Höhenlinien oder Schummerungen. Andere basieren auf einem eigenen Datenbankschema, wie z.B. die ÖPNV-Karte. Es ist nicht so einfach die diversen Kartenstile in das Setup zu integrieren, aber auch nicht unmöglich. Die Kartenstile können für den Druck noch angepasst werden. So sind z.B. bei den erzeugten Deutschlandkarten nicht alle Hauptstädte der Bundesländer beschriftet. Wenn dann letztendlich das druckbare Bild erzeugt wurde, wird auch ein großformatiger Drucker benötigt oder ein Copyshop. Eine Deutschlandkarte kann hier (ca. 90MB) heruntergeladen werden.  Aktuelle Downloadlinks am Ende des Artikels.

Die Druckwerkstatt auf der Intergeo war jedenfalls ein Erfolg. Es gab viele Interessenten, die sich das Setup erklären ließen und Anregungen für Verbesserungen gaben. Viele Besucher wollten ihren Wohn- oder Arbeitsort großformatig ausgedruckt haben. Ob und wenn ja, in welchem Umfang es eine Druckwerkstatt auch auf anderen Veranstaltungen geben wird, ist noch nicht entschieden. Alle aktiv Beteiligten können sich ähnliche Aktionen gut vorstellen. Meinungen und Ideen aus der OSM-Community sind auf jeden Fall erwünscht.

Update: Das Problem der Städtebeschriftung wurde inzwischen gelöst. Eine aktuelle Version kann für folgende Länder heruntergeladen werden: Deutschland (ca. 80MB), Österreich (ca. 40MB) und Schweiz (ca. 40MB)

Lars

Lars interessiert sich vor allem für die Verarbeitung und Visualisierung von Geodaten. Sowohl als Hobby als auch bei der täglichen Arbeit. Gleichzeitig ist er im FOSSGIS e.V. aktiv und unterstützt den Verein sowie OpenStreetMap bei öffentlichen Auftritten auf Messen und Konferenzen.

Kategorie: Gastblog