OpenStreetMap (OSM) is een gratis wereldkaart die gezamenlijk door mensen over de hele wereld is gemaakt – gratis, open en onafhankelijk. Terwijl Google Maps als marktleider vaak de eerste keuze is voor digitale kaarten, is OSM gebaseerd op een heel ander principe: een samenwerkende community die geografische gegevens verzamelt, verbetert en gratis beschikbaar stelt.
Waarom is dit belangrijk? Omdat kaarten kennis zijn – en kennis zou gratis moeten zijn. Voor individuele toepassingen kan het nuttig zijn om zelf OSM-gegevens te hosten, zodat u op maat gemaakte kaartoplossingen kunt ontwikkelen en zelf de controle over de gegevens en de presentatie ervan kunt behouden. Zelf-hostende OSM biedt verschillende voordelen:
- Onafhankelijkheid: U bent niet afhankelijk van externe diensten en heeft volledige controle over de kaartgegevens.
- Aanpassingsvermogen: U kunt de kaartopmaak en de weergegeven gegevens naar eigen wens aanpassen.
- Gegevensbescherming: Alle gegevens worden lokaal gehost. Er worden geen externe API's aangeroepen.
Er zijn twee hoofdmethoden voor het weergeven van kaarten:
- Raster tegels: Vooraf gemaakte afbeeldingsbestanden voor verschillende zoomniveaus. Ze zijn eenvoudig te implementeren, maar bieden minder flexibiliteit bij het aanpassen van de kaartstijl.
- Vectortegels: Bevat geografische gegevens in de vorm van vectoren (punten, lijnen, polygonen) die aan de clientzijde worden weergegeven. Hierdoor zijn flexibele aanpassingen van het kaartontwerp mogelijk en is de weergave op alle zoomniveaus scherp. Voor het renderen is echter meer rekenkracht op het clientapparaat nodig.
Vectortegels zijn met name geschikt voor zelfhosting, omdat ze meer aanpassingsmogelijkheden bieden en efficiënter zijn. Voor regionale kaarten met kleinere gebieden is ongeveer 1 GB aan harde schijfruimte vaak voldoende. Het is zinvol om SSD's te gebruiken omdat ze snelheidsvoordelen bieden bij het laden van tegels. Statische vectortegels vereisen geen actieve kaartserver (bijv. TileServer GL of Mapnik), vereisen minder onderhoud en belasten de server minder. Ze zijn ideaal voor kleinere projecten met vaste kaartsecties.
Mijn kleine pakketje osmhelper vergemakkelijkt het proces van het maken en implementeren van vectortegels van .osm.pbf
Bestanden. Met aangepaste begrenzingsvakken kunnen ontwikkelaars specifieke geografische gebieden extraheren en bijbehorende standaardbestanden genereren die rechtstreeks naar een server kunnen worden geüpload. Dit maakt de integratie van OSM-gegevens in webprojecten veel eenvoudiger. Om osmhelper te kunnen gebruiken, is enige voorbereiding nodig. De bibliotheek is gebaseerd op hulpmiddelen zoals osmium, mbutil en tegelzetter die geïnstalleerd moeten worden.
Installatie van osmium
Osmium is een krachtig hulpmiddel voor het verwerken van OSM-gegevens.
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
Installatie van mbutil
mbutil is een Python-gebaseerde tool voor het werken met 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
Installatie van tegelzetter
tilemaker is een open source-tool die OSM-gegevens rechtstreeks omzet in vectortegels.
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 het conversiescript
mkdir openstreetmap
cd openstreetmap
wget -O ./convert.sh https://raw.githubusercontent.com/vielhuber/osmhelper/refs/heads/master/convert.sh
chmod +x convert.sh
Osmhelper gebruiken
Nadat u de vereiste hulpmiddelen hebt geïnstalleerd, kunt u osmhelper gebruiken om vectortegels te genereren en deze voor te bereiden op hosting.:
./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
Dankzij dit proces kunnen we op efficiënte wijze aangepaste kaartdelen leveren, zonder dat er een dynamische kaartserver nodig is. Het integreren van OpenStreetMap-gegevens in uw eigen projecten kan complex zijn, vooral als het gaat om hosting en implementatie. Omdat Google Maps het monopolie heeft op kaartoplossingen, zijn veel ontwikkelaars op zoek naar alternatieven. Met osmhelper kunt u gemakkelijker aan de slag met het hosten van uw eigen OpenStreetMap-gegevens. Hiermee heeft u volledige controle over uw kaarten, geen API-beperkingen en de mogelijkheid om uw eigen gegevenslagen toe te voegen.
De meeste mensen kennen Google Maps als de standaardoplossing voor digitale kaarten. Maar weinig mensen weten dat OpenStreetMap een geweldig alternatief is – zonder commerciële beperkingen of verborgen kosten. Terwijl Google Maps kosten rekent voor het gebruik van de API en gebruikersgegevens verzamelt, is OSM gratis, open en wordt het ondersteund door een wereldwijde community. OSM is de Wikipedia van de kaartenwereld – iedereen kan bijdragen, wegen, wandelpaden of POI's (Points of Interest) toevoegen en zo de gratis wereldkaart verbeteren.