Une visionneuse PMTiles vectorielles qui fonctionne dans votre navigateur
PMTiles est un format en un seul fichier pour les cartes tuilées. Une archive .pmtiles contient toute une pyramide de tuiles, de la vue du monde au zoom 0 jusqu’au niveau de la rue, plus un index qui dit où se trouve chaque tuile dans le fichier. Comme une appli de carte peut lire n’importe quelle tuile avec une seule requête HTTP par plage, il suffit de déposer le fichier sur un stockage cloud ordinaire pour l’utiliser comme carte, sans aucun serveur de tuiles. C’est pourquoi les cartes PMTiles sont devenues une façon courante de publier les données OpenStreetMap : les fonds de carte Protomaps et beaucoup de cartes de villes et de pays construites avec Planetiler sont distribués sous forme de fichiers PMTiles OpenStreetMap.
Regarder à l’intérieur est plus difficile. Un .pmtiles est binaire, aucun logiciel courant ne l’ouvre, et pour voir les tuiles vectorielles il faut en général MapLibre, un style et un peu de code. Cette visionneuse PMTiles vectorielles en ligne fait le travail à votre place. Déposez un fichier, ou collez l’URL d’une archive déjà en ligne : la visionneuse lit l’en-tête et les répertoires, ne télécharge que les tuiles visibles, les décode dans votre navigateur et dessine chaque couche dans sa propre couleur.
C’est un outil de contrôle autant qu’une visionneuse. Cliquez sur un objet pour lire ses attributs, activez et désactivez les couches, voyez la taille des tuiles à chaque niveau de zoom et contrôlez l’archive selon PMTiles v3 et la spécification des tuiles vectorielles : en-tête, compression, regroupement, taille du répertoire racine, métadonnées, emprise, nombre de tuiles et ETag. Exportez ensuite les objets visibles en GeoJSON, enregistrez un PNG ou téléchargez un rapport technique. Mon conseil : ouvrez l’archive depuis son URL définitive avant de l’annoncer. La plupart des cas de « ma carte PMTiles ne se charge pas » viennent de réglages CORS ou de plages sur le bucket, et cette visionneuse les montre en un clic.
Ce que fait la visionneuse PMTiles vectorielles
Voici tout ce que fait l’outil, dans l’ordre où vous le rencontrerez.
- Ouvrir un fichier ou une URL. Faites glisser un .pmtiles sur la carte, cliquez sur « Ouvrir un PMTiles », ou collez une URL et appuyez sur Ouvrir. Il n’y a pas de limite de taille : la visionneuse ne lit que l’en-tête, les répertoires et les tuiles dont elle a besoin, depuis un fichier sur votre disque ou depuis un serveur. « Essayer un exemple » charge un petit fichier PMTiles OpenStreetMap du centre de Paris, et le lien d’exemple ouvre une archive de Florence sur pmtiles.io.
- Voir la carte tout de suite. La visionneuse lit l’emprise dans l’en-tête et zoome sur les données. Chaque couche est dessinée sur un canevas dans sa propre couleur : polygones en aplats clairs, lignes en traits, points en points avec étiquettes. Les noms de couches des schémas Protomaps, OpenMapTiles et Shortbread, comme water, landuse, buildings, roads et places, reçoivent des couleurs naturelles.
- Travailler avec les couches. L’onglet Couches liste chaque couche des métadonnées et des tuiles, avec ses types de géométrie, le nombre d’objets dans un échantillon et tous ses champs avec un exemple de valeur. Cochez et décochez les couches, appuyez sur « Seule » pour voir une couche isolée, ou cliquez sur le carré de couleur pour choisir la vôtre.
- Cliquer pour inspecter les objets. Cliquez sur la carte et une fiche montre chaque objet à cet endroit dans les couches visibles : couche, type de géométrie, ID et tous les attributs, par exemple kind, name et min_zoom d’une rue OpenStreetMap. L’objet est mis en évidence, et vous pouvez le copier en GeoJSON ou télécharger toute la tuile en fichier .pbf.
- Lire les infos de l’archive. L’onglet Archive présente l’en-tête et les métadonnées en mots simples : nom, attribution, type de tuile, compression des tuiles et des répertoires, plage de zoom, emprise, centre, l’outil de création (par exemple Planetiler), taille de l’archive, nombre de tuiles adressées et uniques, et taille des répertoires.
- Vérifier les tuiles. La visionneuse lit chaque entrée des répertoires et donne, par niveau de zoom, le nombre de tuiles et leur taille totale, moyenne et maximale, ainsi que les dix plus grosses tuiles. Cliquez sur « Voir » pour aller à une tuile. L’option grille des tuiles dessine le bord de chaque tuile avec son z/x/y et sa taille stockée.
- Lancer les contrôles. L’onglet Contrôles teste l’archive : version de l’en-tête, type de tuile, compression, regroupement, place du répertoire racine dans les 16 premiers Ko, métadonnées et vector_layers, emprise et centre, plage de zoom et nombre de tuiles comparés aux répertoires, tuiles de plus de 500 Ko, dédoublonnage, attribution et, pour les URL, l’ETag. Chaque contrôle est marqué OK, attention ou erreur avec une explication simple.
- Partager un lien. Quand vous ouvrez une archive depuis une URL, « Copier le lien vers cette archive » vous donne un lien vers cette page qui ouvre le même fichier. Envoyez-le à un collègue : il voit la même carte et les mêmes contrôles.
- Zoomer au-delà des données. Les tuiles vectorielles restent nettes quand vous zoomez au-delà du dernier niveau, la visionneuse continue donc à dessiner les tuiles les plus profondes agrandies (« overzoom »). Sous le premier niveau de zoom, un message vous invite à zoomer.
- Exporter. Téléchargez les objets visibles en GeoJSON, la vue de la carte en PNG, l’en-tête et les métadonnées en JSON, ou un rapport technique avec les contrôles, l’en-tête, les couches, les champs, les statistiques de tuiles et des recommandations.
Un fichier local est lu morceau par morceau par JavaScript dans votre onglet et n’est jamais envoyé. Une URL est lue directement depuis son serveur par votre navigateur ; ce site ne voit pas les données.
Comment voir un fichier PMTiles, étape par étape
Un vrai exemple avec l’échantillon PMTiles OpenStreetMap du centre de Paris (schéma de fond de carte Protomaps, zoom 0 à 12).

L’outil s’ouvre avec une carte vide, une zone de dépôt et un champ URL. Faites glisser votre .pmtiles sur la carte, cliquez pour choisir un fichier, collez une URL ou appuyez sur « Essayer un exemple ».

La visionneuse lit l’en-tête et le répertoire racine, zoome sur l’emprise et dessine toutes les couches des données OpenStreetMap : l’eau en bleu, les parcs en vert, les bâtiments en brun, les rues en orange et les noms de lieux en rouge.

L’onglet Couches liste chaque couche avec sa géométrie, les objets trouvés dans un échantillon et tous ses champs. Ici seules roads et water sont actives, ce qui montre le réseau des rues et la Seine.

Cliquez sur une rue. La fiche montre sa couche, sa géométrie, son ID et ses attributs OpenStreetMap comme kind, kind_detail et name, et la rue est mise en évidence sur la carte.

L’onglet Archive traduit l’en-tête et les métadonnées en mots simples : type de tuile MVT, compression gzip, zoom 0 à 12, emprise, centre, nombre de tuiles et taille des répertoires.

L’onglet Tuiles montre les tuiles et leurs tailles par niveau de zoom ainsi que les plus grosses tuiles, lues dans les répertoires. Avec la grille activée, le bord de chaque tuile est dessiné avec son z/x/y et sa taille stockée.

L’onglet Contrôles teste l’archive selon les règles de PMTiles v3 et des tuiles vectorielles. L’échantillon passe tous les contrôles ; une archive ouverte depuis une URL reçoit en plus un contrôle de l’ETag.

Le rapport technique réunit sur une page le résumé, un aperçu de la carte, les contrôles, l’en-tête complet, les métadonnées, chaque couche et champ, les statistiques de tuiles et des recommandations. Imprimez-le ou enregistrez-le en PDF.
Comment ouvrir un fichier PMTiles : vos options
Il y a plusieurs façons d’ouvrir un .pmtiles. La bonne dépend de ce que vous voulez : le regarder, le contrôler ou construire une carte avec.
- Dans votre navigateur, avec cette visionneuse. Le moyen le plus rapide de voir ce que contient une archive vectorielle, depuis votre disque ou une URL : sans installation, sans serveur, sous Windows, Mac, Linux et sur tablette. Idéal pour contrôler une archive, lire des attributs et partager un rapport. Pour les PMTiles raster (tuiles PNG, JPEG, WebP), utilisez la Visionneuse PMTiles de ce site.
- Avec la visionneuse de pmtiles.io. La visionneuse officielle de Protomaps montre l’en-tête, les métadonnées et un inspecteur de tuiles. Elle convient à un coup d’œil technique rapide ; cette visionneuse ajoute les couleurs par couche, les champs d’attributs, les statistiques de tuiles, les contrôles et les exports.
- Dans MapLibre GL JS. Ajoutez la bibliothèque pmtiles, enregistrez le protocole et pointez une source vectorielle vers pmtiles://https://example.com/fichier.pmtiles. Avec un style (par exemple les styles du fond de carte Protomaps), vous obtenez une carte web finie et rapide. C’est ainsi que la plupart des cartes PMTiles sont publiées.
- Dans QGIS. Une version de QGIS qui utilise GDAL 3.8 ou plus récent ouvre un .pmtiles par le pilote PMTiles de GDAL : Couche → Ajouter une couche → Ajouter une couche vecteur, puis choisissez le fichier. Chaque couche de tuiles devient une couche vecteur. Pratique pour combiner les données avec d’autres données SIG.
- Avec l’outil en ligne de commande pmtiles. Le programme go-pmtiles affiche l’en-tête (« pmtiles show »), extrait une zone (« pmtiles extract »), convertit depuis MBTiles (« pmtiles convert ») et sert l’archive en tuiles z/x/y (« pmtiles serve »).
- En MBTiles. Si un outil ne lit que MBTiles, convertissez l’archive avec « pmtiles convert fichier.pmtiles fichier.mbtiles ». Les tuiles restent identiques ; pour l’autre sens, ce site propose un convertisseur MBTiles vers PMTiles gratuit.
Une chose est partout la même : une archive PMTiles contient des données, pas un style. Chaque appli décide comment colorer les couches. Cette visionneuse choisit les couleurs d’après le nom des couches pour que vous voyiez la structure sans écrire de style.
Comment la visionneuse lit une archive PMTiles et dessine les tuiles
Ouvrir une archive PMTiles demande cinq étapes : lire l’en-tête, transformer la position sur la carte en ID de tuile, chercher cet ID dans les répertoires, récupérer les octets par une requête par plage, puis décompresser, décoder et dessiner la tuile. Voici exactement ce qui se passe, avec les chiffres de l’échantillon de Paris.
1. La structure de l’archive et l’en-tête de 127 octets
Une archive PMTiles v3 a cinq sections dans un ordre fixe. Les 127 premiers octets forment l’en-tête : le mot magique « PMTiles », la version, la position et la longueur de chaque autre section, le nombre de tuiles, la compression, le type de tuile, la plage de zoom, l’emprise et le centre. La visionneuse lit les 16 384 premiers octets en une requête, qui contiennent toujours l’en-tête et le répertoire racine :
octets 0–126 en-tête "PMTiles" + version 3 + positions, nombres, zoom, emprise
répertoire racine doit finir avant l’octet 16 384
métadonnées JSON name, attribution, vector_layers, …
rép. feuilles facultatifs, pour les grosses archives
données tuiles les tuiles, l’une après l’autre
échantillon Paris racine 127 + 142 octets métadonnées 269 + 870 octets
tuiles 1 139 + 2 929 805 octets 24 tuiles, zoom 0–12
emprise 2.197266, 48.748945, 2.460938, 48.922499Les coordonnées sont stockées en entiers, en unités de 10⁻⁷ degré : 2,197266° est donc stocké sous la forme 21972660. La visionneuse les reconvertit et cadre la carte sur l’emprise.
2. De z/x/y à un ID de tuile : la courbe de Hilbert
PMTiles donne à chaque tuile du monde un numéro, l’ID de tuile. Toutes les tuiles du zoom 0 viennent d’abord, puis toutes celles du zoom 1, et ainsi de suite. Dans un niveau de zoom, les tuiles suivent une courbe de Hilbert, une ligne qui passe par chaque tuile et garde les voisines proches :
premier ID du zoom z = (4^z − 1) / 3 0, 1, 5, 21, 85, …
ID de tuile = premier ID du zoom z + indice de Hilbert d(x, y)
zoom 1 : 1/0/0 → 1 1/0/1 → 2 1/1/1 → 3 1/1/0 → 4
Paris 12/2074/1409
premier ID du zoom 12 = (16 777 216 − 1) / 3 = 5 592 405
d(2074, 1409) = 14 248 941
ID de tuile = 19 841 346Comme la courbe de Hilbert garde les tuiles voisines proches dans l’ordre des ID, les tuiles d’une ville se suivent dans le fichier. Une carte qu’on déplace sur une ville lit alors des plages d’octets voisines, ce que les caches et les CDN gèrent bien.
3. Les répertoires : entrées avec longueur de série et répertoires feuilles
Un répertoire est une liste triée d’entrées. Chaque entrée dit : à partir de cet ID, tant de tuiles à la suite (la longueur de série) utilisent les octets à cette position avec cette longueur. La liste est stockée colonne par colonne en varints, les ID sous forme d’écarts, puis compressée en gzip. Voici les quatre premières entrées de l’échantillon de Paris, les tuiles parentes de la tuile de la ville aux zooms 0 à 3 :
entrée ID tuile série position longueur
0/0/0 0 1 0 65 269
1/1/0 4 1 65 269 76 322
2/2/1 18 1 141 591 124 909
3/4/2 75 1 266 500 116 768
stocké 24 | 0, 4, 14, 57 | 1, 1, 1, 1 | 65269, 76322, … | 1, 0, 0, …
nombre écarts d’ID séries longueurs positions (0 = juste après la tuile précédente)
série 0 → l’entrée pointe vers un répertoire feuille, pas vers une tuileUne série de plus de 1 est la façon dont PMTiles stocke gratuitement la même tuile de nombreuses fois : dix mille tuiles d’océan identiques deviennent une seule entrée. Quand le répertoire racine ne tiendrait pas dans 16 Ko, les entrées sont réparties dans des répertoires feuilles et la racine ne fait plus que les pointer. Pour trouver une tuile, la visionneuse cherche dans la racine, suit au plus trois niveaux de feuilles et garde en cache chaque répertoire lu.
4. Ne lire que le nécessaire : les requêtes par plage
Pour une URL, chaque lecture est une requête HTTP par plage. Pour un fichier local, c’est une tranche de l’objet File. Dans les deux cas, ouvrir une archive coûte une lecture pour l’en-tête et la racine, une pour les métadonnées, puis une par tuile (plus un répertoire feuille la première fois qu’une zone est visitée) :
GET /florence.pmtiles
Range: bytes=0-16383 → 206 Partial Content en-tête + racine
Range: bytes=525-22237 → 206 métadonnées JSON
Range: bytes=22238-456635 → 206 tuile 0/0/0
le serveur doit Accept-Ranges: bytes, statut 206 pour une plage
CORS : Access-Control-Allow-Origin pour votre site
un ETag, pour remarquer un fichier remplacéSi le serveur ignore l’en-tête Range et envoie tout le fichier avec le statut 200, ou si CORS bloque la requête, la visionneuse le dit en mots simples. Ces deux réglages sont la raison habituelle pour laquelle une carte PMTiles marche sur un portable et échoue sur le web.
5. Compter les tuiles : le parcours des répertoires
Pour l’onglet Tuiles, la visionneuse lit tout le répertoire racine et, s’ils font au total 64 Mo ou moins (8 Mo pour une URL), tous les répertoires feuilles en une lecture. Elle déplie chaque série et la répartit par niveau de zoom grâce au premier ID de chaque zoom :
zoom de l’ID t = plus grand z tel que (4^z − 1) / 3 ≤ t tuiles par zoom = Σ séries dans ce zoom taille par zoom = Σ série × longueur couverture = tuiles / 4^z gain du dédoublonnage = 1 − tile_contents_count / addressed_tiles_count
Les totaux sont ensuite comparés aux trois nombres de l’en-tête (tuiles adressées, entrées et contenus). Un écart signifie que l’archive a été écrite par un outil bogué ou qu’elle est tronquée. Pour les archives à l’échelle de la planète, dont les répertoires feuilles pèsent des centaines de Mo, ce parcours est sauté et la carte fonctionne quand même.
6. Décompresser et décoder la tuile vectorielle
L’en-tête indique comment les tuiles sont compressées. Le gzip est décompressé avec le DecompressionStream intégré du navigateur. Le résultat est une Mapbox Vector Tile, un message Protocol Buffers lu par le même décodeur que la Visionneuse MBTiles vectorielles de ce site :
varint 300 = 1010 1100 0000 0010 → 0101100 + 0000010 × 128 = 300 zigzag 0 → 0, −1 → 1, 1 → 2, −2 → 3 n = (z >>> 1) ^ −(z & 1) commande = (nombre << 3) | id MoveTo = 1, LineTo = 2, ClosePath = 7 9 = MoveTo 1 point 18 = LineTo 2 points 15 = ClosePath anneau d’aire > 0 anneau extérieur, aire < 0 trou
Les noms et valeurs d’attributs sont stockés une fois par couche et chaque objet ne garde que des paires d’indices ; c’est pourquoi les tuiles OpenStreetMap avec des milliers de bâtiments restent autour de 100 à 200 Ko. Le décodeur a été comparé au décodeur de référence de Mapbox sur plus de 350 000 objets, sans aucune différence.
7. Dessin, overzoom et détection des clics
Chaque tuile de la carte est un canevas de 256 × 256 pixels (512 sur les écrans haute résolution). Les unités de tuile, de 0 à 4096 en largeur, sont converties en pixels. Au-delà du dernier niveau de zoom, la tuile parente est agrandie et décalée. Un clic est converti en unités de tuile et testé contre les objets :
échelle = 256 × f / extent f = 2^(z_carte − z_données) décalage = (x mod f, y mod f) × 256 point touché si distance ≤ 7 px ligne touchée si distance à un segment ≤ 5 px polygone touché si un rayon partant du clic coupe les anneaux un nombre impair de fois
Comme les données sont vectorielles, les lignes sont redessinées à chaque échelle et restent nettes. Les étiquettes suivent l’attribut min_zoom que Protomaps et beaucoup de builds Planetiler donnent à chaque objet : un nom n’apparaît qu’une fois ce zoom atteint, et les noms de lieux passent avant ceux des POI quand la place manque. Un test rapide sur le rectangle englobant écarte la plupart des objets avant le test exact du clic, si bien que même les tuiles denses d’une ville répondent tout de suite.
8. Budget de taille par tuile
Les grosses tuiles ralentissent les cartes : chacune doit être téléchargée, décompressée et décodée avant que rien ne s’affiche. tippecanoe limite par défaut les tuiles à 500 Ko, et cette limite est courante pour les services de tuiles vectorielles. La visionneuse prend chaque longueur stockée dans les répertoires et signale les niveaux de zoom qui la dépassent :
taille stockée = longueur dans l’entrée du répertoire octets, compressés taille moyenne = taille par zoom / tuiles par zoom repère plus grosse tuile < 500 Ko (512 000 octets) Florence (pmtiles.io) plus grosse tuile 0/0/0 = 434 398 octets → OK
Dans les fichiers PMTiles OpenStreetMap, les plus grosses tuiles sont souvent celles des petits zooms, qui contiennent un pays ou un continent entier, et les centres-villes denses aux zooms 12 à 14. La liste des plus grosses tuiles vous y mène directement.
PMTiles et les formats d’export en détail
Ce que contient une archive PMTiles, en quoi elle diffère de MBTiles, et ce que contient chaque téléchargement de cette visionneuse.
PMTiles vectoriel .pmtiles
Une archive PMTiles v3 de type de tuile MVT. Chaque tuile est une Mapbox Vector Tile compressée en gzip avec des couches nommées. Les métadonnées JSON contiennent en général name, attribution, description et une liste vector_layers avec les champs de chaque couche. Les archives construites avec Planetiler enregistrent aussi l’heure de création et les données de réplication OpenStreetMap.
metadata = {
"name": "Paris, OpenStreetMap sample",
"attribution": "© OpenStreetMap contributors",
"vector_layers": [
{ "id": "roads", "minzoom": 3, "maxzoom": 12,
"fields": { "kind": "String", "kind_detail": "String",
"name": "String", "min_zoom": "Number", … } } ]
}Un fichier, pas de serveur, toutes les tailles, d’une ville à la planète entière. Il faut un lecteur qui gère les requêtes par plage (MapLibre avec la bibliothèque pmtiles, OpenLayers, des extensions Leaflet, QGIS ou cette visionneuse) et un style pour obtenir une carte finie.
PMTiles raster .pmtiles
La même structure, mais les tuiles sont des images : PNG, JPEG, WebP ou AVIF. Le style est figé dans les pixels, la carte ne peut donc être ni restylée ni interrogée, et elle devient floue au-delà de son dernier niveau de zoom.
Le type de tuile de l’en-tête les distingue. Cette visionneuse envoie les archives raster vers la Visionneuse PMTiles de ce site, faite pour les images.
PMTiles et MBTiles comparés .pmtiles / .mbtiles
Les deux contiennent les mêmes tuiles. MBTiles est une base SQLite et demande un programme ou un serveur qui exécute du SQL ; PMTiles est un simple fichier avec son propre index, qu’un navigateur peut lire tuile par tuile en HTTP. PMTiles dédoublonne aussi les tuiles identiques grâce aux séries et range les tuiles sur une courbe de Hilbert.
Utilisez MBTiles pour l’édition et pour les outils qui l’attendent, et PMTiles pour publier sur le web. La conversion de l’un à l’autre garde chaque tuile identique octet pour octet.
GeoJSON (vue) .geojson
Tous les objets des couches visibles dans les tuiles qui couvrent la vue actuelle, au niveau de zoom de données actuel, sous forme de FeatureCollection RFC 7946 en WGS84. Chaque objet garde ses attributs et reçoit _layer et _tile. Les polygones sont regroupés avec leurs trous.
{ "type": "Feature", "id": 35184380521390,
"properties": { "kind": "highway", "kind_detail": "motorway", "name": "Avenue de Paris",
"min_zoom": 4, "_layer": "roads", "_tile": "11/1037/705" },
"geometry": { "type": "LineString",
"coordinates": [[2.3650217, 48.7375971], [2.3645496, 48.7386726], …] } }Les objets sont coupés aux bords des tuiles, comme ils sont stockés. Un export couvre au plus 64 tuiles ; zoomez pour une zone plus petite et plus détaillée. Pour des données OpenStreetMap, vérifiez la licence ODbL avant de réutiliser un extrait.
PNG (vue) .png
Une image des couches vectorielles telles qu’elles apparaissent dans la fenêtre de la carte, sur fond blanc, avec une barre de titre portant le nom et le niveau de zoom, et l’attribution des métadonnées.
Pratique pour une documentation ou un aperçu rapide. Le fond de carte n’est pas inclus, il n’y a donc aucun droit d’image de tiers à gérer.
En-tête et métadonnées (JSON) .json
L’en-tête PMTiles complet (positions, longueurs, nombres, compression, type de tuile, zoom, emprise et centre), les métadonnées JSON, les statistiques des répertoires par niveau de zoom et la liste des couches trouvées dans les tuiles.
Utile pour comparer deux constructions d’une archive, ou pour copier la liste vector_layers dans un style MapLibre.
Tuile (.pbf) .pbf
La tuile vectorielle sous votre clic, décompressée, exactement comme MapLibre la reçoit. Le nom du fichier contient son z/x/y.
Passez-la à d’autres outils (par exemple vt2geojson ou une visionneuse protobuf) pour déboguer une tuile en détail.
Rapport technique .html
Une page HTML avec le résumé de l’archive, un aperçu de la carte, chaque contrôle, le tableau complet de l’en-tête, les métadonnées, les couches avec leurs types de géométrie et leurs champs, les tuiles par niveau de zoom, les plus grosses tuiles, des recommandations et la façon d’utiliser l’archive.
Il s’imprime proprement en PDF. Joignez-le à un ticket ou à une livraison pour que le destinataire voie le contenu de l’archive sans l’ouvrir.
Tous les exports sont créés dans votre navigateur à partir de l’archive ouverte. Rien n’est envoyé à ce site.
Qui utilise une visionneuse PMTiles vectorielles
PMTiles a fait passer l’hébergement des cartes des serveurs de tuiles à de simples fichiers, et beaucoup de gens doivent maintenant regarder à l’intérieur de ces fichiers.
- Développeurs de cartes web. Contrôlez une archive avant d’écrire un style MapLibre : quelles couches existent, comment s’appellent les champs, à quels niveaux de zoom les données apparaissent. Ouvrez l’URL de production pour vérifier que les requêtes par plage et CORS fonctionnent avant la mise en ligne.
- Contributeurs et utilisateurs d’OpenStreetMap. Regardez un extrait PMTiles OpenStreetMap de Protomaps ou d’un build Planetiler, cliquez sur les rues, bâtiments et lieux, et voyez exactement quels tags OSM sont arrivés dans les tuiles.
- Analystes SIG. Vérifiez qu’une sortie de tippecanoe, Planetiler ou « pmtiles convert » contient les bonnes couches, les bons attributs et la bonne plage de zoom, puis livrez-la avec le rapport.
- Équipes DevOps et cloud. Testez un bucket sur S3, R2 ou Google Cloud Storage : la visionneuse montre en mots simples les erreurs CORS, l’absence de prise en charge des plages et l’absence d’ETag, et les contrôles repèrent les tuiles trop grosses et les archives non regroupées.
- Éditeurs de données. Vérifiez l’attribution, l’emprise, le centre et la description avant de publier des cartes PMTiles, pour que les utilisateurs aient le bon crédit et la bonne vue de départ.
- Cartographie hors ligne et sur le terrain. Vérifiez qu’une archive découpée avec « pmtiles extract » couvre la bonne zone et les bons niveaux de zoom avant de la copier sur un appareil qui sera hors réseau.
- Étudiants et enseignants. Voyez comment marchent les cartes natives du cloud : activez la grille des tuiles, comparez les tailles d’un zoom à l’autre, lisez l’en-tête et suivez un ID de tuile dans les répertoires.
- Support et rapports de bogues. Quand une carte PMTiles affiche un trou, trouvez la tuile, téléchargez-la en .pbf et joignez-la au ticket avec le rapport.
Questions fréquentes sur PMTiles
Les 20 questions les plus posées sur les fichiers PMTiles et cette visionneuse.
1. Qu’est-ce qu’un fichier PMTiles ?
PMTiles est un format d’archive en un seul fichier pour les tuiles de carte, créé par Protomaps. Il contient les tuiles de tous les niveaux de zoom plus un index compact (les répertoires), si bien qu’un lecteur peut récupérer n’importe quelle tuile par une requête HTTP par plage. Vous pouvez l’héberger sur un simple stockage statique et l’utiliser comme carte sans serveur de tuiles.
2. Comment ouvrir un fichier PMTiles ?
Pour un coup d’œil rapide, déposez-le dans cette visionneuse ou collez son URL : rien n’est installé ni envoyé. Pour une carte web, utilisez MapLibre GL JS avec le protocole pmtiles. QGIS l’ouvre comme couche vecteur quand il utilise GDAL 3.8 ou plus récent. L’outil en ligne de commande pmtiles affiche l’en-tête et le convertit en MBTiles. La section « Comment ouvrir un fichier PMTiles » ci-dessus compare toutes les options.
3. Cette visionneuse PMTiles est-elle gratuite ?
Oui. Elle est gratuite, sans compte, sans limite par jour et sans filigrane sur les exports. Tout tourne dans votre navigateur, il n’y a donc pas de coût de serveur à répercuter.
4. Mon fichier est-il envoyé quelque part ?
Non. Un fichier local est lu morceau par morceau avec l’API File du navigateur, et les tuiles sont décodées et dessinées dans votre onglet. Quand vous ouvrez une URL, votre navigateur récupère les parties directement sur ce serveur ; ce site ne reçoit jamais les données. Seul un fond de carte, si vous en activez un, est chargé chez son fournisseur.
5. Quelle taille peut avoir l’archive ?
Il n’y a pas de limite fixe. La visionneuse ne charge jamais tout le fichier, seulement l’en-tête, les répertoires et les tuiles visibles, donc une archive de la planète de plusieurs Go s’ouvre aussi vite qu’une petite. Pour les très grosses archives, les statistiques de tuiles par zoom sont sautées, car leurs répertoires pèsent déjà des centaines de Mo.
6. Pourquoi mon URL PMTiles ne s’ouvre-t-elle pas ?
Presque toujours à cause de CORS ou des requêtes par plage. Le serveur doit accepter les requêtes venant de votre page (en-tête Access-Control-Allow-Origin) et ne renvoyer que les octets demandés avec le statut 206. Les buckets cloud ont besoin d’une règle CORS pour GET et HEAD ; certains CDN demandent d’activer la mise en cache par plages d’octets. Le message d’erreur de la visionneuse vous dit laquelle des deux conditions manque.
7. Que sont les PMTiles OpenStreetMap ?
Des fichiers PMTiles construits à partir des données OpenStreetMap, comme le fond de carte Protomaps (couches earth, water, landuse, landcover, roads, buildings, pois, places, boundaries, transit) ou des builds au schéma OpenMapTiles faits avec Planetiler. Vous pouvez télécharger des builds quotidiens de la planète ou extraire une région. Ils sont sous licence ODbL et exigent le crédit « © OpenStreetMap contributors ».
8. Quelle différence entre PMTiles et MBTiles ?
Les deux stockent les mêmes tuiles. MBTiles est une base SQLite qu’il faut lire avec un programme ou un serveur de tuiles ; PMTiles est un simple fichier avec son propre index, lisible par un navigateur en HTTP. PMTiles ne stocke aussi qu’une fois les tuiles identiques. Convertissez de l’un à l’autre avec « pmtiles convert » ou le convertisseur MBTiles vers PMTiles de ce site, les tuiles restent les mêmes.
9. Puis-je voir des PMTiles raster ici ?
Cette page est faite pour les tuiles vectorielles. Si vous ouvrez une archive raster (tuiles PNG, JPEG, WebP ou AVIF), la visionneuse la reconnaît grâce à l’en-tête et vous renvoie vers la Visionneuse PMTiles de ce site, qui affiche les tuiles image.
10. Que veut dire « regroupée » ?
Une archive regroupée (clustered) range les tuiles dans l’ordre de leur ID, si bien que les tuiles proches sur la carte sont aussi proches dans le fichier. Les lecteurs peuvent alors récupérer les voisines ensemble, et les caches des CDN fonctionnent mieux. Les archives écrites par « pmtiles convert », tippecanoe et Planetiler sont regroupées.
11. Pourquoi le répertoire racine doit-il tenir dans 16 Ko ?
Pour qu’une requête sur les 16 384 premiers octets renvoie toujours l’en-tête et le répertoire racine ensemble. Le lecteur sait alors, après un seul aller-retour, où se trouve chaque tuile ou répertoire feuille. Si la racine est plus grande, la spécification n’est pas respectée et beaucoup de lecteurs échouent. L’onglet Contrôles le vérifie.
12. Qu’est-ce qu’un ID de tuile ?
Un numéro pour chaque tuile du monde. Toutes les tuiles du zoom 0 viennent d’abord, puis celles du zoom 1, et ainsi de suite ; dans un niveau de zoom, les tuiles suivent une courbe de Hilbert. La tuile 12/2074/1409 à Paris, par exemple, a l’ID 19 841 346. Les répertoires associent ces ID à des plages d’octets.
13. Qu’est-ce que le dédoublonnage dans PMTiles ?
Beaucoup de tuiles sont identiques, par exemple la pleine mer ou une terre vide aux grands zooms. PMTiles stocke une telle tuile une seule fois et fait pointer de nombreux ID vers elle, avec des séries pour les longues étendues. L’en-tête compte les tuiles adressées et les contenus uniques ; la visionneuse montre la place ainsi gagnée.
14. Que veut dire overzoom ?
Un jeu de tuiles a un dernier niveau de zoom, souvent 14 ou 15 pour les données OpenStreetMap. Si vous zoomez plus loin, la visionneuse continue d’utiliser ces tuiles et les dessine plus grandes. Comme les données vectorielles sont redessinées, les lignes restent nettes. C’est pourquoi les fonds de carte dépassent rarement le zoom 15.
15. Pourquoi les objets sont-ils coupés aux bords des tuiles ?
Chaque tuile vectorielle ne contient que les parties des objets qui tombent dedans, plus une petite marge. Une longue rue est stockée en plusieurs morceaux, un par tuile, et le moteur de rendu les dessine côte à côte pour que la coupure ne se voie pas. Dans l’export GeoJSON, les morceaux restent séparés, chacun avec un attribut _tile.
16. Puis-je convertir PMTiles en GeoJSON ?
Pour une zone, oui : zoomez dessus et appuyez sur « GeoJSON (vue) ». Les couches visibles de 64 tuiles au plus sont exportées. Pour une archive entière, exportez plutôt depuis les données d’origine, car les tuiles sont simplifiées et coupées aux bords.
17. Puis-je modifier un fichier PMTiles ici ?
Non, la visionneuse ne fait que lire. Pour changer les données, modifiez la source et reconstruisez l’archive avec tippecanoe ou Planetiler. Pour ne changer que les métadonnées, utilisez « pmtiles edit » de l’outil en ligne de commande.
18. Quels outils créent des PMTiles vectoriels ?
tippecanoe (depuis GeoJSON, CSV et FlatGeobuf), Planetiler (depuis OpenStreetMap, y compris les schémas Protomaps et OpenMapTiles), GDAL 3.8 et plus récent, et « pmtiles convert » depuis un MBTiles. L’onglet Archive montre l’outil de création quand les métadonnées l’indiquent.
19. Qu’est-ce que MLT et pourquoi n’est-il pas affiché ?
MLT (MapLibre Tile) est un format de tuiles vectorielles plus récent, avec un codage en colonnes et une meilleure compression. PMTiles peut le stocker avec le type de tuile 6. Cette visionneuse ne décode que les Mapbox Vector Tiles (MVT) et vous prévient quand une archive contient du MLT ; MapLibre GL JS sait afficher ces archives.
20. Est-ce que ça marche sur téléphone ou tablette ?
Oui, dans tout navigateur récent sous iOS, Android, Windows, macOS et Linux. L’ouverture depuis une URL marche particulièrement bien sur téléphone, car seules les tuiles visibles sont téléchargées. Utilisez la version plein écran pour avoir plus de place.
Spécifications, logiciels et crédits des données
La visionneuse repose sur des spécifications ouvertes, des logiciels libres et des données ouvertes :
- PMTiles (Protomaps) · BSD-3-ClauseSpécification PMTiles v3 et bibliothèque JavaScript pmtiles de Protomaps : structure de l’archive, ID de tuiles de Hilbert, répertoires, et lecture de l’en-tête, des répertoires et des tuiles depuis un fichier ou une URL.
- Mapbox Vector Tile Specification · SpecificationSpécification Mapbox Vector Tile : structure protobuf, commandes de géométrie et règles d’orientation suivies par le décodeur.
- Leaflet 1.9 · BSD-2-ClauseCarte interactive et couche de grille en canevas qui dessine les tuiles.
- OpenStreetMap · ODbL 1.0Données cartographiques de l’échantillon de Paris et de l’exemple de Florence : © OpenStreetMap contributors, sous Open Database License.
- Protomaps Basemap and pmtiles.io · BSD-3-Clause / ODbLSchéma de fond de carte de l’échantillon et archive d’exemple de Florence sur pmtiles.io.
- Protomaps (hosted by KONAKTIVE), CARTO, OpenStreetMap, Esri World Imagery · ODbL and provider termsFonds de carte optionnels : tuiles vectorielles propres hébergées par KONAKTIVE, avec CARTO et OpenStreetMap en secours, et Esri World Imagery.
Le parcours des répertoires, le décodeur de tuiles vectorielles, le moteur de rendu, les contrôles et tous les exports ont été écrits pour ce site et tournent entièrement dans votre navigateur.
Outils liés aux tuiles et aux fichiers SIG
Les contrôles suivent les spécifications PMTiles v3 et Mapbox Vector Tile 2.1 et les usages courants ; un contrôle réussi ne garantit pas que toutes les applis de carte accepteront l’archive. Sample data © OpenStreetMap contributors (ODbL), Protomaps. Optional base maps © OpenStreetMap contributors, Protomaps (hosted by KONAKTIVE), CARTO, Esri.
