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

  1. Schuppentier

    Wo bekomme ich den “precise penguin” her? Auf der offiziellen Seite jedenfalls nicht.

  2. Stimmt, den gab es nur in meinem Kopf. Danke für Dein aufmerksames Lesen!

  3. !i!

    Wow das ist echt super, dass ihr euch so viel Arbeit gemacht habt :)

  4. davids

    Danke für den sehr interessanten Beitrag.
    Es wäre hoch interessant noch mehr druckfähige Dateien aus osm quellen zu erhalten. Z.b eine D-A-CH Karte Oder nur Schweiz Österreich.

    Es existieren sehr viele Druckveranstalltungen weltweit, wo aus Lizenztechnischen Gründen z.b nur Russischsprachige weltkarten gedruckt werden, weil über osm karten keiner bescheid weiss. Solche karten wurden z.b auf der Drupa verteilt und waren der absolute Renner obwohl die messe in düsseldorf stattfand und nur auf Russisch beschriftet wurde.

    Wenn wir einige solcher Riesenkarten erstellen und downloadbar machen würden, würde das Openstreetmap sicher aufmerksamkeit bringen. Immerhin wäre unser Logo dann für alle sichtbar.

    Die Deutschlandkarte ist ja ein toller Anfang. Danke dafür.

  5. Roland

    Ein tolles Projekt!

    Beim Ansehen der Deutschlandkarte ist mir allerdings aufgefallen, das z.B. Köln und Berlin nicht auf der Karte stehen. Dafür Schöneiche (seit Apple Maps kennt das eh jeder).

    Die Idee, solche Karten downloadbar anzubieten, ist großartig, aber beim Kartenstil müsste noch nachgebessert werden. “Ihr habt ja nichtmal Berlin gemappt!” als Kommentar von jemand, der OSM nicht kennt, wäre das letzte, was wir brauchen.

    • Hallo Roland,

      in der Tat kam als häufigster Kritikpunkt die fehlende Beschriftung der Städte. Inzwischen ist dieses Problem behoben.

      Der technische Hintergrund: Beim Vorverarbeiten der Daten wird auch der Wert ‘population’ ausgewertet. Dabei kam es zu einem Fehler, da nicht nur Zahlen sondern auch mal ein Semikolon vorkommt. Das führte dazu, dass in der Spalte überhaupt keine Werte eingetragen wurden und der Kartenstil dann willkürlich und nicht wie vorgesehen priorisiert nach Bevölkerungszahl, beschriftet hat.

      Ich habe für D-A-CH mal die Karten neu gerendert und die Links im Blogpost als Update ergänzt.

  6. Danke für den Beitrag!!! Bin schon etwas am verzweifeln gewesen, weil meine Karten für den Druck einfach nur Misst waren. Habe nun durch deinen Beitrag den Parameter map_resolution gefunden (Hatte gedacht das müsste ich mit Scale oder ähnlichem machen). Nun kann men endlich die Beschriftung erkennen und zudem sind die Straßen etc. auch viel deutlicher und schärfer.

    War schon leicht am verzweifeln. Jetzt müsste ich nur noch herausfinden, ob ich das auch über den Mapchache machen kann bzw. ob das überhaupt einen Sinn hat das darüber zu machen.

    • Lars

      Möchtest Du denn deinen Kartendienst in der hohen Auflösung permanent anbieten?
      Ich benutze für eine normale Onlinekarte weiterhin die Standardauflösung. Das Rendern geht schneller und die Dateien sind auch nicht so groß.

      Die hohe Auflösung benutze ich dann nur wenn ich es brauche. Außerdem auch immer einen anderen Ausschnitt, den ich dann komplett rendere und nicht kachele. Insofern bringt mir der Mapcache dabei nichts.

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht.