Unsere Freifunkkarte nutzt standardmäßig Kartenbilder, die von unserem eigenen Karten-Server (https://tiles.bremen.freifunk.net/) bereitgestellt werden. Um die Kartenbilder (die "Kacheln") zu erzeugen, nutzen wir die Software Tessera. Damit werden Vektor-Kartendaten vom OpenStreetMap-Projekt (OSM) auf dem Server in PNGs gerendert und an den Browser ausgeliefert.
Die Vektor-Kartendaten liegen auf dem Server in einer großen "mbtiles"-Datei. Wenn wir neuere Kartendaten anzeigen wollen, muss diese Datei gegen eine neue Datei ausgetauscht werden. Leider gibt es inzwischen die OSM-Daten nicht mehr kostenlos im mbtiles-Format, sondern nur im .osm.pbf-Format. Ursprünglich wurden die mbtiles-Dateien kostenlos auf https://openmaptiles.org/ angeboten; aber dort gibt die aktuellen Daten nur noch gegen Gebühr.
Dieser Artikel beschreibt, wie man eine neue mbtiles-Datei aus den aktuellen rohen OSM-Daten erzeugen kann.
Diese Schritte müssen auf einem System ausgeführt werden, das genug Festplattenplatz (40 GB?) und RAM (ca. 30 GB) hat. Ich hab in dieser Anleitung mal angenommen, dass die ganze Prozedur auf unserem Jenkins-Server ausgeführt wird, als User "jenkins", im Verzeichnis ~/tiles/ .
tmux
- oder screen
-Session ausgeführt werden, damit die auch noch weiterlaufen, falls die SSH-Verbindung getrennt wird.wget https://osmdata.openstreetmap.de/download/water-polygons-split-4326.zip
unzip water-polygons-split-4326.zip
ln -s water-polygons-split-4326 coastline
cp 2019-09-planet-10.mbtiles germany-<datum>_planet10-201909.mbtiles
./build/tilemaker --input germany-latest.osm.pbf --output germany-<datum>_planet10-201909.mbtiles --merge --store ./tmp/ --config resources/config-openmaptiles.json --process resources/process-openmaptiles.lua
germany-<datum>_planet10-201909.mbtiles
muss so platziert sein, dass dieser Befehl dort hinein schreibt. Tilemaker soll keine neue mbtiles-Datei anlegen!./tmp/
werden dann temporäre Dateien für die Konvertierung abgelegt (ca. 30 GB). Das ist nur mit einer SSD sinnvoll! Die --store
-Option kann auch weggelassen werden, aber dann benötigt der Prozess ca. 48 GB RAM.germany-<datum>_planet10-201909.mbtiles
kann jetzt auf den Tileserver nach /home/tiles/
kopiert werdensu - tiles
systemctl --user restart tessera.service