OpenStreetMap (OSM) ist eine freie Weltkarte, die von Menschen auf der ganzen Welt gemeinsam erstellt wird – frei, offen und unabhängig. Während Google Maps als Marktführer oft die erste Wahl für digitale Karten ist, setzt OSM auf ein völlig anderes Prinzip: eine kollaborative Community, die geografische Daten sammelt, verbessert und kostenlos zur Verfügung stellt.
Warum ist das wichtig? Weil Karten Wissen sind – und Wissen sollte frei sein. Für individuelle Anwendungen kann es sinnvoll sein, OSM-Daten selbst zu hosten, um maßgeschneiderte Kartenlösungen zu entwickeln und die Kontrolle über die Daten und deren Darstellung zu behalten. Das Selbsthosting von OSM bietet mehrere Vorteile:
- Unabhängigkeit: Man ist nicht auf externe Dienste angewiesen und hat die volle Kontrolle über die Kartendaten.
- Anpassbarkeit: Man kann das Kartenstyling und die dargestellten Daten nach den eigenen Bedürfnissen gestalten.
- Datenschutz: Alle Daten sind lokal selbst gehostet. Es werden keine externen APIs abgerufen.
Bei der Darstellung von Karten gibt es zwei Hauptmethoden:
- Rasterkacheln: Vorgefertigte Bilddateien für verschiedene Zoomstufen. Sie sind einfach zu implementieren, bieten jedoch weniger Flexibilität bei der Anpassung des Kartenstils.
- Vektorkacheln: Enthalten geografische Daten in Form von Vektoren (Punkte, Linien, Polygone), die clientseitig gerendert werden. Dies ermöglicht flexible Anpassungen des Kartendesigns und eine scharfe Darstellung bei allen Zoomstufen. Allerdings erfordert das Rendering mehr Rechenleistung auf dem Client-Gerät.
Für das Selbsthosting bieten sich insbesondere Vektorkacheln an, da sie mehr Anpassungsmöglichkeiten bieten und effizienter sind. Für regionale Karten mit kleineren Gebieten genügen oft schon ~1 GB Festplattenspeicher. Sinnvoll ist der Einsatz von SSDs, da diese Geschwindigkeitsvorteile beim Laden der Kacheln haben. Statische Vektorkacheln benötigen keinen laufenden Kartenserver (z. B. TileServer GL oder Mapnik), haben einen geringeren Wartungsaufwand und weniger Serverlast – sie sind ideal für kleinere Projekte mit festgelegten Kartenausschnitten.
Mein kleines Paket osmhelper erleichtert den Prozess der Erstellung und Bereitstellung von Vektorkacheln aus .osm.pbf
-Dateien. Mit benutzerdefinierten Bounding-Boxen können Entwickler spezifische geografische Bereiche extrahieren und passende Boilerplate-Dateien generieren, die direkt auf einen Server hochgeladen werden können. Dies erleichtert die Integration von OSM-Daten in Webprojekte erheblich. Um osmhelper zu nutzen, sind einige Vorbereitungen erforderlich. Die Bibliothek baut auf Tools wie osmium, mbutil und tilemaker auf, die installiert sein müssen.
Installation von osmium
osmium ist ein leistungsfähiges Tool zum Verarbeiten von OSM-Daten.
mkdir osmium
cd osmium
wget https://github.com/osmcode/osmium-tool/archive/refs/tags/v1.16.0.tar.gz
tar -xzf v1.16.0.tar.gz
cd osmium-tool-1.16.0
apt-get install libosmium2-dev libprotozero-dev nlohmann-json3-dev libboost-program-options-dev libbz2-dev zlib1g-dev liblz4-dev libexpat1-dev cmake pandoc
mkdir build
cd build
cmake ..
make
make install
cd ..
cd ..
rm -rf ./osmium
exec env -i HOME=$HOME bash -l
osmium --version
Installation von mbutil
mbutil ist ein Python-basiertes Tool zum Arbeiten mit MBTiles.
git clone https://github.com/mapbox/mbutil.git
cd mbutil
python setup.py install
cd ..
rm -rf ./mbutil
exec env -i HOME=$HOME bash -l
mb-util --version
Installation von tilemaker
tilemaker ist ein Open-Source-Tool, das OSM-Daten direkt in Vektorkacheln umwandelt.
apt install build-essential libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-system-dev lua5.1 liblua5.1-0-dev libshp-dev libsqlite3-dev rapidjson-dev
git clone https://github.com/systemed/tilemaker.git
cd tilemaker
make
make install
cd ..
rm -rf ./tilemaker
exec env -i HOME=$HOME bash -l
tilemaker --help
Download des Conversion-Scripts
mkdir openstreetmap
cd openstreetmap
wget -O ./convert.sh https://raw.githubusercontent.com/vielhuber/osmhelper/refs/heads/master/convert.sh
chmod +x convert.sh
Nutzung von osmhelper
Nach der Installation der erforderlichen Tools kann osmhelper verwendet werden, um Vektorkacheln zu generieren und für das Hosting vorzubereiten:
./convert.sh \
--url https://download.geofabrik.de/europe/germany-latest.osm.pbf \
--lat-min 47.27 \
--lon-min 8.97 \
--lat-max 50.57 \
--lon-max 13.84 \
--compress
Dieser Prozess ermöglicht es, maßgeschneiderte Kartenausschnitte effizient und ohne die Notwendigkeit eines dynamischen Kartenservers bereitzustellen. Die Integration von OpenStreetMap-Daten in eigene Projekte kann komplex sein, insbesondere wenn es um das Hosting und die Bereitstellung geht. Da Google Maps ein Monopol auf Kartenlösungen hat, suchen viele Entwickler nach Alternativen. osmhelper erleichtert den Einstieg in das Hosting eigener OpenStreetMap-Daten. Damit hast Du volle Kontrolle über Deine Karten, keine API-Beschränkungen und kannst eigene Datenlayer hinzufügen.
Die meisten Menschen kennen Google Maps als Standardlösung für digitale Karten. Doch nur wenige wissen, dass OpenStreetMap eine großartige Alternative ist – und das ohne kommerzielle Einschränkungen oder versteckte Kosten. Während Google Maps API-Nutzungsgebühren erhebt und Nutzerdaten sammelt, ist OSM frei, offen und von einer weltweiten Community getragen. OSM ist das Wikipedia der Kartenwelt – jeder kann beitragen, Straßen, Wanderwege oder POIs (Points of Interest) hinzufügen und somit die freie Weltkarte verbessern.