Generate Map
generate-map est un outil permettant de générer des cartes vectorielles au format MBTiles à partir des données OpenStreetMap fournies par Geofabrik.
Le script s'appuie sur Planetiler exécuté dans un conteneur Docker afin de produire des cartes optimisées pouvant être directement utilisées par TileServer GL.
L'objectif est de permettre la génération ou la mise à jour des cartes embarquées dans une Recovery Box sans intervention manuelle.
Les principales fonctionnalités sont :
- téléchargement automatique des données OpenStreetMap ;
- génération des fichiers
.mbtilesvia Planetiler ; - choix de la zone géographique (continent ou pays) ;
- choix du niveau de détail de la carte (zoom maximal) ;
- fusion automatique avec une carte existante ;
- redémarrage optionnel du serveur de tuiles.
Le script est entièrement interactif et guide l'utilisateur tout au long de la génération.
Fonctionnement
Le script automatise l'ensemble de la chaîne de génération des cartes.
1. Sélection de la zone
L'utilisateur choisit si la carte doit être générée pour :
- un continent complet ;
- un pays.
Les données sont ensuite téléchargées automatiquement depuis le dépôt Geofabrik sous forme de fichier .osm.pbf.
2. Sélection du niveau de détail
Le script propose quatre niveaux de zoom correspondant au niveau maximal généré par Planetiler.
| Niveau | Zoom | Utilisation |
|---|---|---|
| Overview | 6 | Vue globale, très faible encombrement |
| Tactical | 10 | Réseau routier et navigation |
| Operational | 12 | Détails urbains |
| High Precision | 14 | Bâtiments et détails complets |
Plus le niveau de zoom est élevé, plus :
- le temps de génération augmente ;
- la consommation mémoire augmente ;
- la taille finale du fichier MBTiles est importante.
Le niveau 14 peut produire un fichier plusieurs dizaines de fois plus volumineux qu'un niveau 6.
3. Génération de la carte
Une fois les données téléchargées, Planetiler est exécuté dans un conteneur Docker.
La quantité de mémoire Java allouée est calculée automatiquement en fonction de la mémoire disponible sur la machine.
Le fichier généré est produit au format :
<zone>.mbtiles
4. Fusion des cartes
Si aucune carte n'existe encore sur la Recovery Box :
map.mbtiles
est créé directement.
Si une carte est déjà présente, le script fusionne automatiquement les deux fichiers à l'aide de tile-join.
Cette opération permet d'ajouter une nouvelle zone géographique sans régénérer les cartes existantes.
En cas d'échec de la fusion, un mécanisme de rollback restaure automatiquement la carte précédente.
5. Redémarrage du Tile Server
Une fois la génération terminée, le script propose de redémarrer automatiquement le service :
tileserver-gl.service
afin que la nouvelle carte soit immédiatement disponible.
Interactions avec les fichiers
Le script utilise plusieurs répertoires de travail.
Répertoire de travail Planetiler
/data/planetiler
Contient temporairement :
- les fichiers
.osm.pbftéléchargés ; - les fichiers temporaires de Planetiler ;
- les fichiers MBTiles avant leur installation.
Ce répertoire est automatiquement nettoyé à la fin de l'exécution.
Répertoire du Tile Server
/data/tileserver
Contient les cartes utilisées par TileServer GL.
Le fichier principal est :
map.mbtiles
Lors d'une fusion, un fichier temporaire est créé :
world.mbtiles
qui est supprimé après la fusion.
Téléchargement des données
Les données OpenStreetMap proviennent automatiquement de :
https://download.geofabrik.de/
Le script télécharge la dernière version disponible de la zone sélectionnée au format :
<zone>-latest.osm.pbf
Conteneur Docker
La génération est réalisée via l'image Docker officielle :
ghcr.io/onthegomap/planetiler:latest
Le répertoire de travail est monté dans le conteneur afin de récupérer directement les fichiers générés.
Debug
Plusieurs vérifications permettent de diagnostiquer un problème lors de la génération.
Vérifier le téléchargement
S'assurer que le fichier PBF a bien été téléchargé :
ls -lh /data/planetiler/*.osm.pbf
Vérifier Docker
Le script nécessite Docker et l'image Planetiler.
docker images
docker run --rm ghcr.io/onthegomap/planetiler:latest --help
Vérifier l'espace disque
Les cartes haute résolution peuvent nécessiter plusieurs dizaines de gigaoctets.
df -h
Vérifier la mémoire disponible
Planetiler utilise une grande quantité de mémoire vive.
free -h
Le script adapte automatiquement la mémoire Java disponible à partir de la mémoire physique détectée.
Vérifier les cartes générées
Lister les cartes présentes :
ls -lh /data/tileserver
La carte active doit être :
map.mbtiles
Vérifier le service TileServer
Après la génération :
systemctl status tileserver-gl.service
ou
journalctl -u tileserver-gl.service
permettent de vérifier que le serveur a correctement chargé la nouvelle carte.
Nettoyage automatique
À la fin de l'exécution (même en cas d'erreur), le script supprime automatiquement :
- les fichiers temporaires Planetiler ;
- les fichiers PBF téléchargés ;
- les sources intermédiaires ;
- les fichiers de pondération générés.
Cela permet de limiter l'espace disque utilisé après chaque génération.
Outils
Le script utilise le container planetiler pour générer le fichier .mbtiles à partir du .pbf
Afin de fusionner les cartes, le script utilise tile-join de tippecanoe