FR:Passer aux tuiles vectorielles
Cett page est à destination des (plutôt petits) développeurs qui utilisent pour l'instant des tuiles bitmap (raster tiles) fournies par un service tiers (souvent bénévole comme celui d'osm-fr ou osm.org) et qui souhaitent (ou ont besoin de) passer à une solution auto-hébergée utilisant des tuiles vectorielles. (héberger ses propres tuiles raster n'est a priori pas à la portée de petits développeurs).
C'est quoi des tuiles vectorielles ?
Voir la page Vector_tiles
Principe
En résumé :
- il s'agit d'un extrait de la base OSM, qui contient les informations nécessaires pour dessiner un fond de cartes.
- c'est une alternative moderne aux fond de cartes en format bitmap (voir Raster_tiles)
- elles contiennent des données brutes (coordonnées des éléments, tags), et le calcul du visuel est réalisé par le navigateur de l'utilisateur
Avantages
- ne pas dépendre d'un service tiers de fourniture de tuiles
- pouvoir choisir l'apparence en jouant sur le style
- voire pouvoir modifier le style à votre convenance pour changer les couleurs, les formes, les labels, etc...
Schémas
Il existe plusieurs schémas, correspondant à plusieurs façons de :
- choisir les éléments OSM, et leurs tags, parmi toute la base OSM (les éléments pertinents pour dessiner un fond de cartes)
- et de les organiser dans des couches de données (par exemple : est-ce que je mets les noms des villes avec le tracé des frontières, ou avec les noms des points d'intérêts)
Les schémas les plus connus sont (pour info, car a priori vous n'avez pas besoin de vous plonger dans les détails) :
- Basemaps Layers (par Protomaps)
- OpenMapTiles schema (par Maptiler)
- Shortbread Tiles schema (initié par Geofabrik)
Clients
On appelle client la bibliothèque de code qui permet d'afficher et d'interagir avec la carte dans le navigateur.
Mapbox GL LS est le client open-source le plus connu capable et lire et afficher des tuiles vectorielles, mais d'autres clients existent aussi évidemment.
Leaflet par défaut ne sait afficher que des tuiles raster, mais différents plugins existent pour lui permettre d'afficher des tuiles vectorielles.
Styles
Une tuile vectorielle est un fichier brut, contenant les coordonnées des éléments. Il est transformé en visuel (par le client) en suivant des consignes décrites dans un style (par ex : est-ce qu'on affiche les routes en blanc ou en jaune ou en gris, ...). Pour chaque schéma de tuiles, il existe donc plusieurs styles, donc plusieurs rendus possibles. Par exemple, un rendu coloré, un rendu gris, un rendu sombre. Vous pouvez même créer de nouveaux styles à votre convenance (avec les routes en rose).
Une liste de styles open-source pour maplibre est disponible ici :maplibre-styles.
Exemples
- les styles proposés par Protomaps pour leurs tuiles : liste ou site de démo/ (protomaps appelle les styles : flavors)
- les styles adaptés au schéma OpenMapTiles : liste avec liens vers démo chez Maptiler
- les styles adaptés au schéma Shortbread : liste avec liens vers démos
Générer soi-même des tuiles vectorielles ?
Il s'agit d'une tâche qui demande beaucoup de puissance de calcul (si vous avez besoin de la planète entière avec tous les détails), donc ça ne sera pas le coeur de cette page.
De plus, c'est nécessaire uniquement si :
- les schémas existants ne vous conviennent pas (vous avez besoin de rajouter des éléments OSM qui n'ont pas été inclus)
- vous avez besoin de mises à jours régulières.
- vous n'avez pas trouvé de site qui propose des fichiers au téléchargement (comme cela est proposé ci-dessous)
(à compléter quand même avec qq infos sur les soft (tilemaker, planetiler) et des liens vers ceux qui l'ont fait (cartes.app, openFreeMap, ...))
Héberger des tuiles vectorielles ?
C'est très facile grâce au format pmtiles qui permet de stocker toutes les tuiles vectorielles dans 1 seul fichier.
Une question de taille
Néanmoins la taille peut être un problème car un fichier pmtiles couvrant toute la planète avec tous les niveaux de zoom pèse environ 80-120 Go.
Si vous avez assez d'espace disque sur votre serveur, tant mieux, c'est parfait.
Sinon vous aurez à prendre un extrait adapté à votre cas d'usage, par exemple :
- la planète entière, mais sans le(s) zoom(s le(s) plus fort(s) (ce sont ceux qui pèsent le plus lourd), donc sans tous les détails.
- une zone géographique limitée, mais avec tous les niveaux de zoom.
Dans ce cas, ne téléchargez pas tout le fichier, mais utilisez les commandes ci-dessous pour télécharger uniquement l'extrait dont vous avez besoin.
Sources de fichiers pmtiles
Les styles étant adapté à un schéma donné, il est important de choisir des tuiles au schéma correspondant au style que vous avez choisi.
schéma Protomaps basemap
Protomaps met à disposition chaque jour un fichier pmtiles complet (122 Go début 2026) : https://maps.protomaps.com/builds/
schéma OpenMapTiles
- Maptiler propose des fichiers au téléchargement (conditions d'accès et d'utilisation à vérifier) https://www.maptiler.com/on-prem-datasets/planet/
- il est sans doute possible ponctuellement de télécharger un fichier auto-hébergé par quelqu'un d'autre.
schéma Shortbread
?
Télécharger le fichier ou un extrait
Si vous avez la place pour héberger un fichier planet.pmtiles complet, parfait.
Si vous n'avez pas la place, réfléchissez à votre usage pour choisir le type d'extrait dont vous avez besoin.
Dans tous les cas, utilisez l'outil pmtiles CLI pour télécharger l'extrait.
Extrait sans les zoom les plus forts
La commande suivante permet de télécharger un fichier INPUT.pmtiles à une URL donnée, jusqu'au zoom MAXZOOM, et d'enregistrer le résultat dans OUTPUT.pmtiles
Evidemment, les détails manqueront. Par exemple, dans les schéma OpenMapTiles, les building, POI, housenumber et petites rues ne sont disponibles que au zoom 14.
pmtiles extract https://example.com/INPUT.pmtiles OUTPUT.pmtiles --maxzoom=MAXZOOM
| maxzoom | Protomaps | OpenMapTiles |
|---|---|---|
| 15 | 122 | n'existe pas |
| 14 | 61 ? | 77 |
| 13 | 31 | 29 |
| 12 | 16 | 11 |
| 11 | 7 | 3.7 |
| 10 | 3.3 | 1.6 |
Extrait géographique
Si vous avez besoin de tous les détails, mais que vous pouvez ne couvrir qu'une bboox donnée, téléchargez un extrait géographique comme ceci :
pmtiles extract https://example.com/INPUT.pmtiles OUTPUT.pmtiles --bbox=MIN_LON,MIN_LAT,MAX_LON,MAX_LAT
| bbox | Protomaps | OpenMapTiles |
|---|---|---|
| planète | 122 | 77 |
| Europe | 43 | 24 |
| France métropolitaine | 9 | 5 |
Servir un fichier
Maintenant que vous avez récupéré un fichier pmtiles, il suffit de l'enregistrer quelque part sur votre serveur.
Puis de suivre ces consignes qui expliquent comment utiliser la librairie javascript pmtiles dans Maplibre GL.
Utiliser un service tiers de fourniture de tuiles vectorielles
Nous recommandons vraiment d'héberger vous même votre fichier de tuiles vectorielles. Mais si vous n'avez vraiment pas cette possibilité malgré toutes les explications ci-dessus, il existe différents fournisseurs.
fournisseurs gratuits
- la fondation OSM propose des tuiles au format Shortbread (visibles sur osm.org avec le style VersaTiles Colorful), mais avec les même conditions d'utilisation que les tuiles raster
- OpenFreeMap propose des tuiles au format OpenMapTiles
fournisseurs commerciaux
(écrire ou ajouter un lien vers une liste de fournisseurs).
Les fournisseurs commerciaux proposent en général un certain nombres de tuiles gratuites par mois. Si le trafic sur votre site est faible, cela peut tout à fait couvrir votre besoin, donc ne rien vous couter, mais attention à bien surveiller le compteur.