Unsere neue Karte

Seit heute gibt es auf der Startseite eine neue Karte. Unsere eigene.

“Aber die alte war doch auch schon sehr individuell” könnte man jetzt sagen. Das war sie, aber die neue hat einige Vorteile.

Vorteil 1: Sie ist kostenlos und bleibt es, egal wie viele Nutzer sie ansehen. Bisher wurde die Karte über den Dienst CloudMade bezogen. Dieser verlangt ab 250.000 abgerufenen Karten-Kacheln (das sind die Einzelbilder, aus denen die Kartenansicht zusammengesetzt wird) im Monat eine Gebühr. Im Februar hatten wir davon schon knapp 160.000 verbraucht. Wieviele es im März bisher waren, weiß ich leider nicht, denn das Reporting von Cloudmade stellt die aktuellen Daten sonderbarerweise erst gegen Monatsende zur Verfügung.

Vorteil 2: Die Karte ist nun besser anpassbar. Cloudmade hat zwar eine praktische und einfache Web-Oberfläche für die Anpassung der Darstellung. Allerdings kann man damit leider nicht alle Gestaltungsparameter beeinflussen. Die Eisenbahnschienen zum Beispiel waren deshalb auf einem ockergelben Gleisbett verlegt. Das hat die Schienen deutlich mehr hervorgehoben, als irgendwie sinnvoll wäre. Auch Beschriftungen lassen sich praktisch nicht anpassen, außer farblich. Unsere eigenen Kacheln sind mit TileMill gemacht. Da lässt sich – die notwendigen Kenntnisse vorausgesetzt – praktisch jedes noch so kleine Detail beeinflussen.

Vorteil 3: Einige weitere Problemchen der Cloudmade-Karte existieren bei unseren eigenen nicht. Unser Karten-Stil basiert auf sehr guten Vorlage (namentlich OSM Bright). Diese sorgt mit beträchlichtem Aufwand dafür, dass problematische Stellen wie z.B. die Übergänge zwischen verschiedenen Straßentypen, etwa an Autobahnauffahrten, vernünftig dargestellt werden. Bei der Cloudmade-Karte kam es auch häufiger zu angeschnittenen Beschriftungen an den Kachelgrenzen. Das ist bei dem Renderer von TileMill zwar nicht ausgeschlossen, aber sehr selten.

Vorteil 4: Die Cloudmade-Server schienen mir recht langsam. Nun werden die Kacheln von unserem eigenen Server ausgeliefert. Der steht im Zweifel näher am Nutzer als die von Cloudmade es tun. Damit das Laden der Kacheln schön schnell geht, werden die Zugriffe auf drei verschiedene virtuelle Hosts verteilt.

Vorteil 5: Wir können nun selbst bestimmen, wie oft wir die Kartendaten aktualisieren. Dabei ist die Datenbasis die gleiche wie vorher, nämlich OpenStreetMap.

Vorteil 6: Last but not least wird die Copyright-Zeile unter der Karte um einen Baustein kürzer. Cloudmade wollte Credits für die Kartendarstellung, auch wenn sie nicht von Cloudmade gestaltet wurde. Danach müssen wir uns nun nicht mehr richten.

Einen weiteren Grund, die Cloudmade Karte auszutauschen, hat Cloudemade ausgerechnet heute nachgeliefert, als bräuchte es noch ein bisschen mehr Überzeugungskraft, um uns loszuwerden. Ab vermutlich heute Mittag hat der Server überhaupt keine Kacheln mehr für unsere Karte ausgeliefert. Die Karte blieb einfach grau. Die Fehlermeldung des Tile-Servers: No such style. Aha. Das wird uns hoffentlich mit dem eigenen Server nicht passieren.

Weil es insgesamt nicht ganz problemlos war, hier noch ein paar Worte dazu, wie die Erzeugung der eigenen Kacheln letztlich funktioniert hat. Vielleicht hilft es ja jemandem weiter.

  • Unter Mac OS X hat es schon mal nicht funktioniert. Nachdem die Installation der TileMill-Umgebung mit allem, was dazu gehört, sehr langwierig war, wurde der Export der Kacheln immer wieder abgebrochen. Als er letztlich doch einmal komplett abgeschlossen wurde, fehlten etliche Kacheln. Auf der Karte blieben einfach viele Quadrate grau.
  • Erfolgreich war ich unter Ubuntu 11.10 (32 Bit). Ich habe mir dafür eine Virtual Box Umgebung mit 1 CPU, 4 GB RAM und 32 GB Festplatten-Image angelegt. MapBox stellt für Ubuntu ein Paket zu Verfügung. Die Anleitung hat für mich funktioniert.
  • Aber mit der TileMill-Installation ist es nicht getan. Man muss sich vorher Postgresql und PostGIS (über apt-get) installieren. Dann muss man eine Datenbank für die OpenStreetMap Daten anlegen und mit den PostGIS-Funktionen versehen. Und dann installiert man imposm, den Python-basierten OSM-Importer. Das erklärt MapBox alles in der OSMBright Quickstart Anleitung. Letztlich lädt man sich OSMBright als Template herunter und kopiert es unter anderem Namen in das TileMill Projektverzeichnis. Aber nicht einfach so, sondern schön über das make.py Script wie in der Anleitung beschrieben!
  • Das Exportieren der Kacheln hat anfangs hervorragend funktioniert. Dann habe ich den Bereich der Zoom-Stufen, die ich exportiere, von 11 bis 16 auf 11 bis 17 erweitert, damit man noch etwas tiefer in die Karte hineinzoomen kann. Mit dieser Einstellung ließ sich der Export nicht beenden. Nach ca. 40 Minuten, kurz vor Schluss, endete der Vorgang mit “Export process died”. Der Exporte funktionierte, nachdem ich die Zoom-Stufen wieder auf 11 bis 16 eingestellt habe.
  • Der Export generiert eine Mbtiles-Datei, was letztlich eine Sqlite-Datenbank ist, die sowohl die Kacheln als auch Metadaten enthält. Um die Kacheln einfach mit dem Webserver ohne zusätzliche Software auszuliefern, muss man sie noch mit einem Werkzeug namens mb-util aus der Mbtiles-Datei extrahieren. Dabei ist die Einstellung “—scheme=osm” essentiell, zumindest wenn man die Kacheln wie wir mit Leaflet darstellen möchte (für OpenLayers gilt vermutlich das gleiche). Sonst sind die Dateien nicht so benannt wie erwartet und es gibt jede Menge 404-Fehler und graue Quadrate statt Kartenkacheln.

Das zur Technik. Aber jetzt das wichtigste: Wie gefällt Euch die Karte?

Update 11. April 2012: Inzwischen habe ich einen Weg gefunden, die Kacheln zuverlässig und automatisierbar zu exportieren. Dazu generiert man zunächst aus der in TileMill erzeugten Konfiguration (die im Carto-Format vorliegt) eine Mapnik XML Datei. Dazu gibt es in TileMill das Kommandozeilen-Tool ‘carto’. Ich musste an der erzeugten XML-Datei noch die Pfade zu den Font-Dateien anpassen, da Mapnik in der XML-Datei relative Pfade erwartet. Mit dieser Datei und dem Script generate_tiles.py (das den eigenen Anforderungen angepasst wird) gelingt das Rendern der gewünschten Zoom-Stufen über die Kommandozeile.

Diskussion