Retour au blog

Générer des données pour un serveur de cartographie (vector tiles)

Publié le 04 mar. 2026

Mettre en place un serveur de cartographie nécessite plusieurs étapes techniques : récupérer les données géographiques, les transformer en tuiles vectorielles, puis les exposer via un serveur spécialisé.

Cet article explique comment construire une infrastructure de génération et de diffusion de cartes à partir des données OpenStreetMap (OSM).

Nous allons couvrir :

  1. les sources de données

  2. l’extraction d’une zone

  3. la génération de tuiles vectorielles

  4. l’optimisation des données

  5. le déploiement d’un serveur de tiles

 

Vue d’ensemble du pipeline

La génération d’une carte vectorielle suit généralement ce pipeline :

OpenStreetMap (PBF) => osmium (extraction / nettoyage) => tilemaker / planetiler => MBTiles / PMTiles => TileServer / Martin => Client (MapLibre / Mapbox GL)

Chaque étape transforme les données pour les rendre plus compactes, plus rapides à charger et adaptées à l’affichage web.

 

Tracez votre propre parcours

MapPlanner vous aide à calculer les distances, le dénivelé, la durée et à planifier vos randonnées, courses à pied et sorties vélo sur une carte interactive.

  • Calcul automatique des distances et du dénivelé
  • Cartes topographiques, satellite et IGN
  • Export GPX/KML pour votre GPS
  • Suivi GPS en temps réel

1. Outils et ressources cartographiques

Avant de commencer, il est utile de connaître les principales ressources de données et outils utilisés dans l’écosystème cartographique.

Outils généraux

Quelques ressources utiles :

Outils pratiques pour travailler avec les données :

Ces outils permettent par exemple de :

  • sélectionner une zone géographique précise

  • récupérer uniquement certains objets OSM

  • préparer les données avant leur transformation.

 

2. Sources de données géographiques

La génération d’une carte repose sur plusieurs types de données :

  • données vectorielles (routes, bâtiments, POI)

  • données topographiques (relief, glaciers)

  • données globales simplifiées (continents, océans)

 

Données topographiques

Ces données servent à enrichir la carte avec des éléments naturels :

  • relief

  • océans

  • glaciers

  • zones urbaines

Sources :

 

Données OpenStreetMap

Les données OSM sont distribuées au format PBF (Protocolbuffer Binary Format).

Ce format est compact et optimisé pour le traitement.

Monde

Europe / régions

 

3. Récupération et extraction des données

Les fichiers OSM complets peuvent être extrêmement volumineux.

Par exemple :

  • planète entière : plusieurs centaines de Go

  • Europe : plusieurs dizaines de Go

Il est donc souvent préférable de travailler sur une sous-zone.

 

Installation d’osmium

Osmium est un outil performant permettant de manipuler les fichiers PBF.

Installation :

sudo apt-get install osmium-tool

 

Extraction d’une zone géographique

La commande suivante permet d’extraire une région spécifique à partir d’un fichier plus large.

osmium extract --bbox=2.68,50.72,7.55,54.12 --set-bounds --strategy=smart europe-latest.osm.pbf --output netherlands.osm.pbf

Explication :

  • --bbox définit la zone géographique

  • --set-bounds ajoute les limites dans le fichier

  • --strategy=smart optimise l’extraction

 

4. Conversion vers les tiles vectorielles

Les données OSM sont vectorielles, mais elles ne sont pas directement exploitables pour un rendu cartographique web.

Il faut les convertir vers le format Mapbox Vector Tiles (MVT).

Cette conversion permet :

  • de découper les données par tuiles

  • de simplifier les géométries

  • d’optimiser les performances côté client.

L’outil utilisé ici est Tilemaker.

 

5. Installation de Tilemaker

Installer les dépendances nécessaires :

sudo apt install libboost-dev libboost-filesystem-dev libboost-iostreams-dev libboost-program-options-dev libboost-system-dev shapelib lua5.4 liblua5.4-dev libprotobuf-dev libshp-dev libsqlite3-dev protobuf-compiler rapidjson-dev

Cloner le projet :

git clone https://github.com/systemed/tilemaker.git cd tilemaker

Compiler :

make sudo make install

 

6. Configuration de Tilemaker

Tilemaker fonctionne avec deux fichiers principaux :

fichier JSON

Il décrit :

  • les layers

  • les niveaux de zoom

  • les sources de données

resources/config-openmaptiles.json

 

fichier LUA

Le fichier LUA définit comment transformer les objets OSM en couches cartographiques.

resources/process-openmaptiles.lua

Ce fichier indique par exemple :

  • quelles routes doivent être affichées

  • quels bâtiments doivent être inclus

  • quels POI doivent apparaître.

Documentation :

https://github.com/systemed/tilemaker/blob/master/docs/CONFIGURATION.md

 

7. Données supplémentaires pour Tilemaker

Certaines données doivent être ajoutées pour améliorer la qualité visuelle des cartes.

 

Côtes et surfaces

Exécuter les scripts :

./get-coastline.sh ./get-landcover.sh

Ces scripts téléchargent :

  • les côtes

  • les océans

  • certaines zones naturelles simplifiées.

 

Gestion des falaises (cliffs)

Tilemaker gère les falaises comme des polygones.

Or dans OSM elles sont généralement représentées par des lignes.

Il faut donc les extraire séparément.

Installation d’Osmosis :

https://wiki.openstreetmap.org/wiki/Osmosis/Installation

Extraction :

./bin/osmosis --rbf europe-latest.osm.pbf --way-key-value keyValueList=natural.cliff --wb europe_cliffs.osm.pbf

Conversion en shapefile :

sudo apt-get install gdal-bin ogr2ogr -lco ENCODING=UTF-8 -f "ESRI Shapefile" europe_cliffs.shp europe_cliffs.osm.pbf lines

Copier ensuite les fichiers dans :

tilemaker/data

Ajouter ensuite la couche dans la configuration :

"cliff": { "minzoom": 8, "maxzoom": 14, "source": "landcover/europe_cliffs.shp" },

 

8. Optimisation du fichier PBF

Avant la génération des tiles, il est recommandé d’optimiser les données.

osmium cat -f pbf your-file.osm.pbf -o optimized.osm.pbf

Cette opération :

  • réorganise les données

  • améliore les performances du traitement.

Consommation typique :

  • 2 Go de RAM

  • environ 14 minutes

 

9. Génération des tiles vectorielles

La génération des tiles est réalisée avec Tilemaker.

./tilemaker FILE.osm.pbf --output FILE.mbtiles --config resources/config-map-planner.json --process resources/process-map-planner.lua

Résultat :

  • un fichier MBTiles

  • contenant toutes les tiles vectorielles.

 

10. Performances de génération

Les performances dépendent de la zone traitée.

Exemples :

Zone Temps RAM
Europe 30 min 40 Go
Amérique du Nord 24 min 40 Go
Monde 1h20 60 Go

Espace disque recommandé : ≈600 Go

 

Options pour réduire la RAM

Tilemaker propose plusieurs options :

  • --store

  • --shard-stores

  • --compact

Pour utiliser --compact, il faut réordonner les données :

osmium renumber -o optimized-renumbered.osm.pbf optimized.osm.pbf

 

11. Alternative : Planetiler

Planetiler est une alternative moderne à Tilemaker.

Installation :

sudo apt install default-jre default-jdk

Génération :

java -Xmx136g -jar planetiler.jar --config=config.properties

Exemple :

https://onthegomap.github.io/planetiler-demo/#9.09/46.122/6.155

 

12. Alternative : OpenMapTiles

OpenMapTiles propose un environnement Docker complet.

Cloner le projet :

git clone https://github.com/openmaptiles/openmaptiles.git cd openmaptiles/ nano .env

Modifier :

PGPORT=5432 ... MAX_ZOOM=14

Génération :

./quickstart.sh france

 

13. Optimisation du rendu côté client

Le rendu est effectué dans le navigateur.

Le temps de rendu dépend notamment :

render time = constant time + [ number of sources * per source time ] + [ number of layers * per layer time ] + [ number of vertices * per vertex time ]

Optimisations possibles :

  • réduire le nombre de layers

  • réduire le nombre de sources

  • limiter les POI

  • supprimer les IDs inutiles

  • limiter les calculs de filtres.

 

14. Installation du serveur de tiles

Le serveur utilisé est TileServer GL.

Créer la structure :

mkdir tileserver cd tileserver mkdir data fonts glyphs sprites styles

Organisation :

  • data → fichiers mbtiles

  • fonts → polices

  • styles → styles Mapbox

 

15. Configuration du serveur

Créer config.json :

{
  "options": {
    "paths": {
      "root": "",
      "fonts": "fonts",
      "sprites": "sprites",
      "styles": "styles",
      "mbtiles": "data"
    },
    "domains": [
      "maps.map-planner.com",
      "maps-a.map-planner.com",
      "maps-b.map-planner.com"
    ],
    "frontPage": true,
    "formatQuality": {
      "jpeg": 80,
      "webp": 90
    },
    "maxScaleFactor": 3,
    "maxSize": 2048,
    "pbfAlias": "pbf",
    "serveAllFonts": false,
    "serveAllStyles": false,
    "serveStaticMaps": true,
    "tileMargin": 0
  },
  "styles": {
    "map-planner": {
      "style": "map-planner/style.json"
    },
  },
  "data": {
    "world": {
      "mbtiles": "world.mbtiles"
    },
    "natural_earth_relief": {
      "mbtiles": "natural_earth_relief.mbtiles"
    }
  }
}

Les styles sont ensuite déclarés dans la configuration complète.

 

16. Lancer le serveur

Avec Docker :

sudo docker pull maptiler/tileserver-gl sudo docker run -it -v $(pwd):/data -p 5010:8080 maptiler/tileserver-gl -c config.json

Alternative NPM :

npm install tileserver-gl-light

 

17. Déploiement en service systemd

Créer un service :

sudo nano /etc/systemd/system/tileserver.service

Démarrer :

sudo systemctl daemon-reload sudo systemctl enable tileserver.service sudo systemctl start tileserver.service sudo systemctl status tileserver.service

 

18. Format MBTiles vs PMTiles

Comparaison :

Format Caractéristiques
MBTiles base SQLite locale
PMTiles optimisé HTTP
PMTiles plus léger (15–25%)

Conversion

./pmtiles convert natural_earth_relief.mbtiles natural_earth_relief.pmtiles

 

19. Serveur alternatif : Martin

Martin est un serveur vectoriel moderne écrit en Rust.

Documentation :

https://maplibre.org/martin/introduction.html

 

20. Utilisation avec MapLibre

Installer PMTiles :

yarn add pmtiles

Déclarer le protocole :

import { Map, addProtocol } from 'maplibre-gl';

import {Protocol as PMTilesProtocol} from 'pmtiles';

const protocol = new PMTilesProtocol();

addProtocol('pmtiles', protocol.tile);

Essayez toutes les fonctionnalités gratuitement

Profitez de 7 jours d'essai gratuit avec un accès complet à toutes les fonctionnalités Explorer. Sans engagement — découvrez la planification d'itinéraires, le suivi GPS, les exports illimités et bien plus.

  • Planification d'itinéraires illimitée
  • Position GPS en temps réel
  • Exports GPX/KML/FIT illimités
  • Import de fichiers depuis vos appareils GPS

Articles similaires

Ce que disent nos utilisateurs Explorer

⭐⭐⭐⭐⭐

Grâce à MapPlanner, j’ai planifié un parcours de jogging de 8 km autour de chez moi en quelques minutes. La distance et le temps estimé étaient parfaits pour ma séance matinale avant le travail.

Claire M. Nouvelle joggeuse
⭐⭐⭐⭐⭐

Grâce au mode isochrone, je planifie mes randos en un clin d'œil ! Je vois directement où je peux aller avec mon temps disponible. Le suivi GPS est top pour ne jamais me perdre en montagne.

Marie L. Randonneuse passionnée
⭐⭐⭐⭐⭐

On a préparé une boucle vélo de 40 km entre amis et exporté la trace en GPX. Tout le monde a pu suivre le même parcours sur sa montre, sans se perdre. Organisation parfaite !

Julien R. Sortie vélo du dimanche
⭐⭐⭐⭐⭐

Avant une randonnée en forêt, j’ai vérifié le dénivelé et la durée. Le tracé a suivi les vrais sentiers, ce qui m’a évité de mauvaises surprises. Très fiable !

Sophie L. Randonneuse débutante
⭐⭐⭐⭐⭐

Je voulais une balade facile pour mes enfants. J’ai défini 5 km max et MapPlanner m’a permis de tracer une boucle idéale. On a passé un super moment en famille.

Nicolas D. Balade en famille
⭐⭐⭐⭐⭐

J’aime planifier mes sorties à l’avance. J’ai sauvegardé plusieurs tracés pour les week-ends. Je gagne un temps fou.

Martine G. Randonneuse par intermittence
⭐⭐⭐⭐⭐

En explorant les parcours autour de chez moi, j’ai découvert de super itinéraires que je ne connaissais pas du tout. MapPlanner m’a ouvert de nouvelles zones à explorer.

Olivier P. Découverte de parcours
⭐⭐⭐⭐⭐

Je garde un œil sur mon évolution grâce à l’historique. Je compare mes vitesses et distances de course au fil des mois, c’est motivant !

Anaïs T. Suivi des performances
⭐⭐⭐⭐⭐

Pour notre sortie VTT en club, on a créé le parcours et envoyé le GPX à tout le monde. Résultat : aucun écart, tout le groupe ensemble du début à la fin.

Romain B. Sortie en club
⭐⭐⭐⭐⭐

J’adore prendre des photos en randonnée. MapPlanner place automatiquement mes photos sur la carte. C’est génial pour revoir le parcours et partager avec mes amis.

Laetitia F. Sortie découverte
⭐⭐⭐⭐⭐

Selon l’activité, je change la carte : topo pour la montagne, rue pour la ville, satellite pour repérer les zones. Ça rend la préparation super intuitive.

Hugo S. Randonneur expérimenté
⭐⭐⭐⭐⭐

MapPlanner estime désormais mes temps selon mon propre rythme. Je sais précisément combien de temps durera ma prochaine sortie. Parfait pour m'organiser au dernier moment.

Isabelle J. Joggeuse en devenir