Un visualizzatore PMTiles vettoriali che funziona nel browser
PMTiles è un formato a file singolo per mappe a tile. Un archivio .pmtiles contiene un’intera piramide di tile, dalla vista del mondo allo zoom 0 fino al livello della strada, più un indice che dice dove si trova ogni tile nel file. Poiché un’app di mappe può leggere qualsiasi tile con una sola richiesta HTTP per intervallo, basta mettere il file su un normale storage cloud per usarlo come mappa, senza alcun server di tile. Per questo le mappe PMTiles sono oggi un modo comune di pubblicare i dati OpenStreetMap: le mappe di base Protomaps e molte mappe di città e paesi create con Planetiler sono distribuite come file PMTiles di OpenStreetMap.
Guardarci dentro è più difficile. Un .pmtiles è binario, nessun programma comune lo apre, e per vedere le tile vettoriali di solito servono MapLibre, uno stile e un po’ di codice. Questo visualizzatore PMTiles vettoriali online fa il lavoro al posto tuo. Trascina un file, o incolla l’URL di un archivio già online: il visualizzatore legge intestazione e directory, scarica solo le tile visibili, le decodifica nel browser e disegna ogni layer con il suo colore.
È uno strumento di controllo quanto un visualizzatore. Clicca su un oggetto per leggerne gli attributi, accendi e spegni i layer, guarda la dimensione delle tile a ogni livello di zoom e controlla l’archivio secondo PMTiles v3 e le specifiche delle tile vettoriali: intestazione, compressione, raggruppamento, dimensione della directory radice, metadati, estensione, conteggi delle tile ed ETag. Poi esporta gli oggetti visibili in GeoJSON, salva un PNG o scarica un rapporto tecnico. Il mio consiglio: apri l’archivio dal suo URL definitivo prima di annunciarlo. La maggior parte dei casi di "la mia mappa PMTiles non si carica" dipende da impostazioni CORS o degli intervalli sul bucket, e questo visualizzatore li mostra con un clic.
Cosa fa il visualizzatore PMTiles vettoriali
Ecco tutto quello che fa lo strumento, nell’ordine in cui lo incontrerai.
- Aprire un file o un URL. Trascina un .pmtiles sulla mappa, clicca "Apri PMTiles" o incolla un URL e premi Apri. Non c’è un limite di dimensione: il visualizzatore legge solo intestazione, directory e le tile che servono, da un file sul tuo disco o da un server. "Prova un esempio" carica un piccolo file PMTiles OpenStreetMap del centro di Parigi, e il link di esempio apre un archivio di Firenze su pmtiles.io.
- Vedere subito la mappa. Il visualizzatore legge l’estensione dall’intestazione e va ai dati. Ogni layer è disegnato su un canvas con il suo colore: poligoni come riempimenti chiari, linee come tratti, punti come pallini con etichette. I nomi di layer degli schemi Protomaps, OpenMapTiles e Shortbread, come water, landuse, buildings, roads e places, ricevono colori naturali.
- Lavorare con i layer. La scheda Layer elenca ogni layer dei metadati e delle tile, con i tipi di geometria, il numero di oggetti in un campione e tutti i campi con un valore di esempio. Accendi e spegni i layer, premi "Solo" per vedere un layer da solo o clicca sul quadratino di colore per sceglierne uno tuo.
- Cliccare per esaminare gli oggetti. Clicca sulla mappa e una scheda mostra ogni oggetto in quel punto nei layer visibili: layer, tipo di geometria, ID e tutti gli attributi, per esempio kind, name e min_zoom di una strada OpenStreetMap. L’oggetto viene evidenziato e puoi copiarlo come GeoJSON o scaricare tutta la tile come file .pbf.
- Leggere le informazioni dell’archivio. La scheda Archivio mostra intestazione e metadati in parole semplici: nome, attribuzione, tipo di tile, compressione di tile e directory, intervallo di zoom, estensione, centro, lo strumento usato per crearlo (per esempio Planetiler), dimensione dell’archivio, numero di tile indirizzate e uniche e dimensione delle directory.
- Controllare le tile. Il visualizzatore legge ogni voce delle directory e indica, per livello di zoom, il numero di tile e la dimensione totale, media e massima, oltre alle dieci tile più grandi. Premi "Vedi" per andare a una tile. L’opzione griglia delle tile disegna il bordo di ogni tile con z/x/y e dimensione salvata.
- Eseguire i controlli. La scheda Controlli verifica l’archivio: versione dell’intestazione, tipo di tile, compressione, raggruppamento, se la directory radice sta nei primi 16 KB, metadati e vector_layers, estensione e centro, intervallo di zoom e conteggi delle tile rispetto alle directory, tile oltre 500 KB, deduplicazione, attribuzione e, per gli URL, l’ETag. Ogni controllo è segnato come OK, avviso o errore con una spiegazione semplice.
- Condividere un link. Quando apri un archivio da un URL, "Copia il link a questo archivio" ti dà un link a questa pagina che apre lo stesso file. Mandalo a un collega e vedrà la stessa mappa e gli stessi controlli.
- Ingrandire oltre i dati. Le tile vettoriali restano nitide quando ingrandisci oltre l’ultimo livello di zoom, quindi il visualizzatore continua a disegnare ingrandite le tile più profonde ("overzoom"). Sotto il primo livello di zoom, un avviso ti dice di ingrandire.
- Esportare. Scarica gli oggetti visibili in GeoJSON, la vista della mappa in PNG, intestazione e metadati in JSON, oppure un rapporto tecnico con controlli, intestazione, layer, campi, statistiche delle tile e raccomandazioni.
Un file locale viene letto a pezzi da JavaScript nella scheda del browser e non viene mai caricato. Un URL viene letto dal tuo browser direttamente dal suo server; questo sito non vede i dati.
Come vedere un file PMTiles, passo dopo passo
Un esempio reale con il campione PMTiles OpenStreetMap del centro di Parigi (schema della mappa di base Protomaps, zoom da 0 a 12).

Lo strumento si apre con una mappa vuota, un’area di rilascio e un campo URL. Trascina il tuo .pmtiles sulla mappa, clicca per scegliere un file, incolla un URL o premi "Prova un esempio".

Il visualizzatore legge intestazione e directory radice, va all’estensione e disegna tutti i layer dei dati OpenStreetMap: l’acqua in blu, i parchi in verde, gli edifici in marrone, le strade in arancione e i nomi dei luoghi in rosso.

La scheda Layer elenca ogni layer con la sua geometria, gli oggetti trovati in un campione e tutti i campi. Qui sono accesi solo roads e water, che mostrano la rete stradale e la Senna.

Clicca su una strada. La scheda mostra layer, geometria, ID e attributi OpenStreetMap come kind, kind_detail e name, e la strada viene evidenziata sulla mappa.

La scheda Archivio traduce intestazione e metadati in parole semplici: tipo di tile MVT, compressione gzip, zoom da 0 a 12, estensione, centro, numero di tile e dimensione delle directory.

La scheda Tile mostra tile e dimensioni per livello di zoom e le tile più grandi, lette dalle directory. Con la griglia accesa, il bordo di ogni tile è disegnato con z/x/y e dimensione salvata.

La scheda Controlli verifica l’archivio secondo le regole di PMTiles v3 e delle tile vettoriali. Il campione supera tutti i controlli; un archivio aperto da un URL riceve anche un controllo dell’ETag.

Il rapporto tecnico raccoglie in una pagina riepilogo, anteprima della mappa, controlli, intestazione completa, metadati, ogni layer e campo, statistiche delle tile e raccomandazioni. Stampalo o salvalo come PDF.
Come aprire un file PMTiles: le tue opzioni
Ci sono diversi modi per aprire un .pmtiles. Quello giusto dipende da cosa vuoi fare: guardarlo, controllarlo o costruirci una mappa.
- Nel browser, con questo visualizzatore. Il modo più veloce per vedere cosa c’è in un archivio vettoriale, dal disco o da un URL: niente installazione, niente server, funziona su Windows, Mac, Linux e tablet. Ideale per controllare un archivio, leggere attributi e condividere un rapporto. Per i PMTiles raster (tile PNG, JPEG, WebP) usa il Visualizzatore PMTiles di questo sito.
- Con il visualizzatore di pmtiles.io. Il visualizzatore ufficiale di Protomaps mostra intestazione, metadati e un ispettore di tile. Va bene per uno sguardo tecnico veloce; questo visualizzatore aggiunge colori per layer, campi degli attributi, statistiche delle tile, controlli ed esportazioni.
- In MapLibre GL JS. Aggiungi la libreria pmtiles, registra il protocollo e punta una sorgente vettoriale a pmtiles://https://example.com/file.pmtiles. Con uno stile (per esempio gli stili della mappa di base Protomaps) ottieni una mappa web finita e veloce. Così viene pubblicata la maggior parte delle mappe PMTiles.
- In QGIS. Una versione di QGIS che usa GDAL 3.8 o successivo apre un .pmtiles con il driver PMTiles di GDAL: Layer → Aggiungi layer → Aggiungi layer vettoriale, poi scegli il file. Ogni layer di tile diventa un layer vettoriale. Utile per combinare i dati con altri dati GIS.
- Con lo strumento a riga di comando pmtiles. Il programma go-pmtiles mostra l’intestazione ("pmtiles show"), ritaglia un’area ("pmtiles extract"), converte da MBTiles ("pmtiles convert") e serve l’archivio come tile z/x/y ("pmtiles serve").
- Come MBTiles. Se uno strumento legge solo MBTiles, converti l’archivio con "pmtiles convert file.pmtiles file.mbtiles". Le tile restano le stesse; per la direzione opposta c’è un convertitore MBTiles in PMTiles gratuito su questo sito.
Una cosa è uguale ovunque: un archivio PMTiles contiene dati, non uno stile. Ogni app decide come colorare i layer. Questo visualizzatore sceglie i colori in base al nome dei layer, così vedi la struttura senza prima scrivere uno stile.
Come il visualizzatore legge un archivio PMTiles e disegna le tile
Aprire un archivio PMTiles richiede cinque passi: leggere l’intestazione, trasformare la posizione sulla mappa in un ID di tile, cercare l’ID nelle directory, prendere i byte con una richiesta per intervallo e poi decomprimere, decodificare e disegnare la tile. Ecco esattamente cosa succede, con i numeri del campione di Parigi.
1. La struttura dell’archivio e l’intestazione di 127 byte
Un archivio PMTiles v3 ha cinque sezioni in ordine fisso. I primi 127 byte sono l’intestazione: la parola magica "PMTiles", la versione, la posizione e la lunghezza di ogni altra sezione, i conteggi delle tile, la compressione, il tipo di tile, l’intervallo di zoom, l’estensione e il centro. Il visualizzatore legge i primi 16.384 byte con una richiesta, che contengono sempre intestazione e directory radice:
byte 0–126 intestazione "PMTiles" + versione 3 + posizioni, conteggi, zoom, estensione
directory radice deve finire prima del byte 16.384
metadati JSON name, attribution, vector_layers, …
directory foglia facoltative, per archivi grandi
dati delle tile le tile, una dopo l’altra
campione Parigi radice 127 + 142 byte metadati 269 + 870 byte
tile 1.139 + 2.929.805 byte 24 tile, zoom 0–12
estensione 2.197266, 48.748945, 2.460938, 48.922499Le coordinate sono salvate come interi in unità di 10⁻⁷ gradi, quindi 2,197266° è salvato come 21972660. Il visualizzatore le riconverte e adatta la mappa all’estensione.
2. Da z/x/y a un ID di tile: la curva di Hilbert
PMTiles dà a ogni tile del mondo un numero, l’ID di tile. Vengono prima tutte le tile dello zoom 0, poi tutte quelle dello zoom 1 e così via. Dentro un livello di zoom le tile seguono una curva di Hilbert, una linea che passa per ogni tile e tiene vicine le tile confinanti:
primo ID dello zoom z = (4^z − 1) / 3 0, 1, 5, 21, 85, …
ID di tile = primo ID dello zoom z + indice di Hilbert d(x, y)
zoom 1: 1/0/0 → 1 1/0/1 → 2 1/1/1 → 3 1/1/0 → 4
Parigi 12/2074/1409
primo ID dello zoom 12 = (16.777.216 − 1) / 3 = 5.592.405
d(2074, 1409) = 14.248.941
ID di tile = 19.841.346Poiché la curva di Hilbert mantiene vicine nell’ordine degli ID le tile confinanti, le tile di una città stanno vicine nel file. Una mappa che si sposta su una città legge quindi intervalli di byte vicini, cosa che cache e CDN gestiscono bene.
3. Directory: voci con lunghezza di serie e directory foglia
Una directory è un elenco ordinato di voci. Ogni voce dice: da questo ID, tante tile di seguito (lunghezza di serie) usano i byte a questa posizione con questa lunghezza. L’elenco è salvato colonna per colonna come varint, con gli ID come differenze, e poi compresso con gzip. Queste sono le prime quattro voci del campione di Parigi, le tile genitrici della tile della città agli zoom da 0 a 3:
voce ID tile serie posizione lunghezza
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
salvato 24 | 0, 4, 14, 57 | 1, 1, 1, 1 | 65269, 76322, … | 1, 0, 0, …
numero delta degli ID serie lunghezze posizioni (0 = subito dopo la tile precedente)
serie 0 → la voce punta a una directory foglia, non a una tileUna serie maggiore di 1 è il modo in cui PMTiles salva gratis la stessa tile molte volte: diecimila tile di oceano uguali diventano una sola voce. Quando la directory radice non starebbe in 16 KB, le voci vengono divise in directory foglia e la radice punta solo a queste. Per trovare una tile il visualizzatore cerca nella radice, segue al massimo tre livelli di foglie e mette in cache ogni directory letta.
4. Leggere solo ciò che serve: le richieste per intervallo
Per un URL ogni lettura è una richiesta HTTP per intervallo. Per un file locale è una fetta dell’oggetto File. In entrambi i casi, aprire un archivio costa una lettura per intestazione e radice, una per i metadati e poi una per tile (più una directory foglia la prima volta che si visita una zona):
GET /florence.pmtiles
Range: bytes=0-16383 → 206 Partial Content intestazione + radice
Range: bytes=525-22237 → 206 metadati JSON
Range: bytes=22238-456635 → 206 tile 0/0/0
il server deve Accept-Ranges: bytes, stato 206 per un intervallo
CORS: Access-Control-Allow-Origin per il tuo sito
un ETag, per accorgersi di un file sostituitoSe il server ignora l’intestazione Range e invia tutto il file con stato 200, o se CORS blocca la richiesta, il visualizzatore lo dice in parole semplici. Queste due impostazioni sono il motivo tipico per cui una mappa PMTiles funziona sul portatile e fallisce sul web.
5. Contare le tile: la scansione delle directory
Per la scheda Tile il visualizzatore legge tutta la directory radice e, se in totale pesano 64 MB o meno (8 MB per un URL), tutte le directory foglia in una sola lettura. Espande ogni serie e la divide per livello di zoom usando il primo ID di ogni zoom:
zoom dell’ID t = z più grande con (4^z − 1) / 3 ≤ t tile per zoom = Σ serie dentro quello zoom dimensione per zoom = Σ serie × lunghezza copertura = tile / 4^z risparmio della deduplicazione = 1 − tile_contents_count / addressed_tiles_count
I totali vengono poi confrontati con i tre conteggi dell’intestazione (tile indirizzate, voci e contenuti). Una differenza indica che l’archivio è stato scritto da uno strumento difettoso o che è troncato. Per archivi grandi come il pianeta, le cui directory foglia pesano centinaia di MB, la scansione viene saltata e la mappa funziona comunque.
6. Decomprimere e decodificare la tile vettoriale
L’intestazione dice come sono compresse le tile. Il gzip viene decompresso con il DecompressionStream integrato nel browser. Il risultato è una Mapbox Vector Tile, un messaggio Protocol Buffers letto dallo stesso decodificatore del Visualizzatore MBTiles vettoriali di questo sito:
varint 300 = 1010 1100 0000 0010 → 0101100 + 0000010 × 128 = 300 zigzag 0 → 0, −1 → 1, 1 → 2, −2 → 3 n = (z >>> 1) ^ −(z & 1) comando = (quantità << 3) | id MoveTo = 1, LineTo = 2, ClosePath = 7 9 = MoveTo 1 punto 18 = LineTo 2 punti 15 = ClosePath anello con area > 0 anello esterno, area < 0 buco
Nomi e valori degli attributi sono salvati una volta per layer e ogni oggetto tiene solo coppie di indici; per questo le tile OpenStreetMap con migliaia di edifici restano intorno a 100–200 KB. Il decodificatore è stato confrontato con il decodificatore di riferimento di Mapbox su oltre 350.000 oggetti senza alcuna differenza.
7. Disegno, overzoom e rilevamento dei clic
Ogni tile della mappa è un canvas di 256 × 256 pixel (512 sugli schermi ad alta risoluzione). Le unità di tile, da 0 a 4096 di lato, vengono scalate in pixel. Oltre l’ultimo livello di zoom la tile genitrice viene ingrandita e spostata. Un clic viene convertito in unità di tile e confrontato con gli oggetti:
scala = 256 × f / extent f = 2^(z_mappa − z_dati) spostamento = (x mod f, y mod f) × 256 punto colpito se distanza ≤ 7 px linea colpita se distanza da un segmento ≤ 5 px poligono colpito se un raggio dal clic attraversa gli anelli un numero dispari di volte
Poiché i dati sono vettoriali, le linee vengono ridisegnate a ogni scala e restano nitide. Le etichette seguono l’attributo min_zoom che Protomaps e molti build di Planetiler danno a ogni oggetto: un nome compare solo quando la mappa arriva a quello zoom, e i nomi dei luoghi vincono su quelli dei POI quando manca spazio. Un test veloce sul rettangolo di ingombro scarta la maggior parte degli oggetti prima del test esatto del clic, così anche le tile dense di una città rispondono subito.
8. Budget di dimensione per tile
Le tile grandi rallentano le mappe: ognuna va scaricata, decompressa e decodificata prima che compaia qualcosa. tippecanoe limita le tile a 500 KB per impostazione predefinita, e lo stesso limite è diffuso nei servizi di tile vettoriali. Il visualizzatore prende ogni lunghezza salvata dalle directory e segnala i livelli di zoom che lo superano:
dimensione salvata = lunghezza nella voce della directory byte, compressi dimensione media = dimensione per zoom / tile per zoom riferimento tile più grande < 500 KB (512.000 byte) Firenze (pmtiles.io) tile più grande 0/0/0 = 434.398 byte → OK
Nei file PMTiles di OpenStreetMap le tile più grandi sono spesso quelle degli zoom bassi, che contengono un paese o un continente intero, e i centri urbani densi agli zoom da 12 a 14. L’elenco delle tile più grandi ti porta direttamente lì.
PMTiles e i formati di esportazione nel dettaglio
Cosa c’è dentro un archivio PMTiles, in cosa differisce da MBTiles e cosa contiene ogni download di questo visualizzatore.
PMTiles vettoriale .pmtiles
Un archivio PMTiles v3 con tipo di tile MVT. Ogni tile è una Mapbox Vector Tile compressa con gzip con layer dotati di nome. I metadati JSON contengono di solito name, attribution, description e un elenco vector_layers con i campi di ogni layer. Gli archivi creati con Planetiler registrano anche l’ora di creazione e i dati di replica di 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 file, nessun server, qualsiasi dimensione da una città al pianeta intero. Serve un lettore che gestisca le richieste per intervallo (MapLibre con la libreria pmtiles, OpenLayers, plugin di Leaflet, QGIS o questo visualizzatore) e uno stile per farlo sembrare una mappa finita.
PMTiles raster .pmtiles
La stessa struttura, ma le tile sono immagini: PNG, JPEG, WebP o AVIF. Lo stile è fissato nei pixel, quindi la mappa non si può ristilizzare né interrogare, e diventa sfocata oltre il suo ultimo livello di zoom.
Il tipo di tile nell’intestazione li distingue. Questo visualizzatore manda gli archivi raster al Visualizzatore PMTiles di questo sito, fatto per le immagini.
PMTiles e MBTiles a confronto .pmtiles / .mbtiles
Entrambi contengono le stesse tile. MBTiles è un database SQLite e richiede un programma o un server che esegua SQL; PMTiles è un semplice file con un proprio indice, da cui un browser può leggere singole tile via HTTP. PMTiles inoltre deduplica le tile uguali con le serie e ordina le tile lungo una curva di Hilbert.
Usa MBTiles per modificare i dati e per gli strumenti che lo richiedono, e PMTiles per pubblicare sul web. Nella conversione tra i due ogni tile resta identica byte per byte.
GeoJSON (vista) .geojson
Tutti gli oggetti dei layer visibili nelle tile che coprono la vista attuale, al livello di zoom dei dati attuale, come FeatureCollection RFC 7946 in WGS84. Ogni oggetto mantiene i suoi attributi e riceve _layer e _tile. I poligoni vengono raggruppati con i loro buchi.
{ "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], …] } }Gli oggetti sono tagliati ai bordi delle tile, come sono salvati. Un’esportazione copre al massimo 64 tile; ingrandisci per un’area più piccola e dettagliata. Con i dati OpenStreetMap, controlla la licenza ODbL prima di riutilizzare un estratto.
PNG (vista) .png
Un’immagine dei layer vettoriali come appaiono nella finestra della mappa, con sfondo bianco, una barra del titolo con nome e livello di zoom e l’attribuzione dei metadati.
Utile per documentazione o un’anteprima veloce. La mappa di base non è inclusa, quindi non ci sono diritti d’immagine di terzi da considerare.
Intestazione e metadati (JSON) .json
L’intestazione PMTiles completa (posizioni, lunghezze, conteggi, compressione, tipo di tile, zoom, estensione e centro), i metadati JSON, le statistiche delle directory per livello di zoom e l’elenco dei layer trovati nelle tile.
Utile per confrontare due build di un archivio o per copiare l’elenco vector_layers in uno stile MapLibre.
Tile (.pbf) .pbf
La singola tile vettoriale sotto il clic, decompressa, esattamente come la riceve MapLibre. Il nome del file contiene il suo z/x/y.
Passala ad altri strumenti (per esempio vt2geojson o un visualizzatore protobuf) per analizzare una tile nel dettaglio.
Rapporto tecnico .html
Una pagina HTML con riepilogo dell’archivio, anteprima della mappa, ogni controllo, la tabella completa dell’intestazione, i metadati, i layer con tipi di geometria e campi, le tile per livello di zoom, le tile più grandi, raccomandazioni e come usare l’archivio.
Si stampa bene in PDF. Allegalo a un ticket o a una consegna, così chi lo riceve vede cosa c’è nell’archivio senza aprirlo.
Tutte le esportazioni vengono create nel browser a partire dall’archivio aperto. Nulla viene inviato a questo sito.
Chi usa un visualizzatore PMTiles vettoriali
PMTiles ha spostato l’hosting delle mappe dai server di tile a semplici file, quindi oggi molte persone hanno bisogno di guardare dentro quei file.
- Sviluppatori di mappe web. Controlla un archivio prima di scrivere uno stile MapLibre: quali layer esistono, come si chiamano i campi, a quali livelli di zoom compaiono i dati. Apri l’URL di produzione per verificare che richieste per intervallo e CORS funzionino prima della pubblicazione.
- Mappatori e utenti dei dati OpenStreetMap. Guarda un estratto PMTiles di OpenStreetMap di Protomaps o di un build Planetiler, clicca su strade, edifici e luoghi e vedi esattamente quali tag OSM sono finiti nelle tile.
- Analisti GIS. Verifica che un output di tippecanoe, Planetiler o "pmtiles convert" contenga i layer, gli attributi e l’intervallo di zoom giusti, poi consegnalo con il rapporto.
- Team DevOps e cloud. Prova un bucket su S3, R2 o Google Cloud Storage: il visualizzatore mostra in parole semplici errori CORS, mancato supporto degli intervalli ed ETag assenti, e i controlli trovano tile troppo grandi e archivi non raggruppati.
- Editori di dati. Controlla attribuzione, estensione, centro e descrizione prima di pubblicare mappe PMTiles, così gli utenti ricevono il credito giusto e la vista iniziale giusta.
- Cartografia offline e sul campo. Verifica che un archivio ritagliato con "pmtiles extract" copra l’area e i livelli di zoom giusti prima di copiarlo su un dispositivo che resterà senza rete.
- Studenti e docenti. Scopri come funzionano le mappe native per il cloud: accendi la griglia delle tile, confronta le dimensioni tra i livelli di zoom, leggi l’intestazione e segui un ID di tile attraverso le directory.
- Supporto e segnalazioni di bug. Quando una mappa PMTiles mostra un buco, trova la tile, scaricala come .pbf e allegala al ticket insieme al rapporto.
Domande frequenti su PMTiles
Le 20 domande più frequenti sui file PMTiles e su questo visualizzatore.
1. Che cos’è un file PMTiles?
PMTiles è un formato di archivio a file singolo per tile di mappa, creato da Protomaps. Contiene le tile di tutti i livelli di zoom più un indice compatto (le directory), così un lettore può prendere qualsiasi tile con una richiesta HTTP per intervallo. Puoi ospitarlo su un normale storage statico e usarlo come mappa senza server di tile.
2. Come apro un file PMTiles?
Per uno sguardo veloce, trascinalo in questo visualizzatore o incolla il suo URL: non si installa né si carica nulla. Per una mappa web usa MapLibre GL JS con il protocollo pmtiles. QGIS lo apre come layer vettoriale quando usa GDAL 3.8 o successivo. Lo strumento a riga di comando pmtiles mostra l’intestazione e lo converte in MBTiles. La sezione "Come aprire un file PMTiles" qui sopra confronta tutte le opzioni.
3. Questo visualizzatore PMTiles è gratuito?
Sì. È gratuito, senza account, senza limiti giornalieri e senza filigrana sulle esportazioni. Tutto funziona nel browser, quindi non ci sono costi di server da ribaltare.
4. Il mio file viene caricato da qualche parte?
No. Un file locale viene letto a pezzi con l’API File del browser, e le tile vengono decodificate e disegnate nella tua scheda. Quando apri un URL, il browser prende le parti direttamente da quel server; questo sito non riceve mai i dati. Solo una mappa di base, se ne accendi una, viene caricata dal suo fornitore.
5. Quanto può essere grande l’archivio?
Non c’è un limite fisso. Il visualizzatore non carica mai tutto il file, solo intestazione, directory e tile visibili, quindi un archivio dell’intero pianeta di diversi GB si apre veloce come uno piccolo. Per archivi molto grandi le statistiche delle tile per zoom vengono saltate, perché già le loro directory pesano centinaia di MB.
6. Perché il mio URL PMTiles non si apre?
Quasi sempre è colpa di CORS o delle richieste per intervallo. Il server deve accettare richieste dalla tua pagina (intestazione Access-Control-Allow-Origin) e restituire solo i byte richiesti con stato 206. I bucket cloud hanno bisogno di una regola CORS per GET e HEAD; alcune CDN richiedono di attivare la cache per intervalli di byte. Il messaggio di errore del visualizzatore ti dice quale delle due condizioni manca.
7. Cosa sono i PMTiles di OpenStreetMap?
File PMTiles creati dai dati OpenStreetMap, come la mappa di base Protomaps (layer earth, water, landuse, landcover, roads, buildings, pois, places, boundaries, transit) o build con lo schema OpenMapTiles fatti con Planetiler. Puoi scaricare build giornalieri del pianeta o ritagliare una regione. Sono sotto licenza ODbL e richiedono il credito "© OpenStreetMap contributors".
8. Che differenza c’è tra PMTiles e MBTiles?
Entrambi salvano le stesse tile. MBTiles è un database SQLite che serve un programma o un server di tile per essere letto; PMTiles è un semplice file con un proprio indice che un browser può leggere via HTTP. PMTiles salva inoltre una sola volta le tile identiche. Converti tra i due con "pmtiles convert" o con il convertitore MBTiles in PMTiles di questo sito, e le tile restano le stesse.
9. Posso vedere qui i PMTiles raster?
Questa pagina è fatta per le tile vettoriali. Se apri un archivio raster (tile PNG, JPEG, WebP o AVIF), il visualizzatore lo riconosce dall’intestazione e ti manda al Visualizzatore PMTiles di questo sito, che mostra le tile immagine.
10. Cosa significa "raggruppato"?
Un archivio raggruppato (clustered) salva le tile nell’ordine del loro ID, quindi le tile vicine sulla mappa sono vicine anche nel file. I lettori possono prendere le tile vicine insieme e le cache delle CDN funzionano meglio. Gli archivi scritti da "pmtiles convert", tippecanoe e Planetiler sono raggruppati.
11. Perché la directory radice deve stare in 16 KB?
Perché una richiesta dei primi 16.384 byte restituisca sempre insieme intestazione e directory radice. Così il lettore sa dove si trova ogni tile o directory foglia dopo un solo andata e ritorno. Se la radice è più grande, le specifiche non sono rispettate e molti lettori falliscono. La scheda Controlli lo verifica.
12. Che cos’è un ID di tile?
Un numero per ogni tile del mondo. Prima vengono tutte le tile dello zoom 0, poi quelle dello zoom 1 e così via; dentro un livello di zoom le tile seguono una curva di Hilbert. Per esempio la tile 12/2074/1409 a Parigi ha ID 19.841.346. Le directory associano questi ID a intervalli di byte.
13. Che cos’è la deduplicazione in PMTiles?
Molte tile sono identiche, per esempio mare aperto o terra vuota agli zoom alti. PMTiles salva una tile così una sola volta e fa puntare molti ID a essa, usando le serie per i tratti lunghi. L’intestazione conta le tile indirizzate e i contenuti unici; il visualizzatore mostra quanto spazio si risparmia.
14. Cosa significa overzoom?
Un insieme di tile ha un ultimo livello di zoom, spesso 14 o 15 per i dati OpenStreetMap. Se ingrandisci oltre, il visualizzatore continua a usare quelle tile e le disegna più grandi. Poiché i dati vettoriali vengono ridisegnati, le linee restano nitide. Per questo le mappe di base raramente vanno oltre lo zoom 15.
15. Perché gli oggetti sono tagliati ai bordi delle tile?
Ogni tile vettoriale contiene solo le parti degli oggetti che cadono al suo interno, più un piccolo margine. Una strada lunga è salvata in più pezzi, uno per tile, e il motore di disegno li affianca in modo che il taglio non si veda. Nell’esportazione GeoJSON i pezzi restano separati, ognuno con un attributo _tile.
16. Posso convertire PMTiles in GeoJSON?
Per un’area sì: ingrandisci su di essa e premi "GeoJSON (vista)". Vengono esportati i layer visibili di al massimo 64 tile. Per un archivio intero conviene esportare dai dati originali, perché le tile sono semplificate e tagliate ai bordi.
17. Posso modificare un file PMTiles qui?
No, il visualizzatore legge soltanto. Per cambiare i dati modifica la fonte e ricrea l’archivio con tippecanoe o Planetiler. Per cambiare solo i metadati usa "pmtiles edit" dello strumento a riga di comando.
18. Quali strumenti creano PMTiles vettoriali?
tippecanoe (da GeoJSON, CSV e FlatGeobuf), Planetiler (da OpenStreetMap, anche con gli schemi Protomaps e OpenMapTiles), GDAL 3.8 e successivi, e "pmtiles convert" da un MBTiles. La scheda Archivio mostra lo strumento di creazione quando i metadati lo registrano.
19. Che cos’è MLT e perché non viene mostrato?
MLT (MapLibre Tile) è un formato di tile vettoriali più recente, con codifica a colonne e compressione migliore. PMTiles può salvarlo con il tipo di tile 6. Questo visualizzatore decodifica solo le Mapbox Vector Tiles (MVT) e ti avvisa quando un archivio contiene MLT; MapLibre GL JS può mostrare questi archivi.
20. Funziona su telefono o tablet?
Sì, in qualsiasi browser recente su iOS, Android, Windows, macOS e Linux. L’apertura da URL funziona particolarmente bene sui telefoni, perché vengono scaricate solo le tile visibili. Usa la versione a schermo intero per avere più spazio.
Specifiche, software e crediti dei dati
Il visualizzatore si basa su specifiche aperte, software libero e dati aperti:
- PMTiles (Protomaps) · BSD-3-ClauseSpecifica PMTiles v3 e libreria JavaScript pmtiles di Protomaps: struttura dell’archivio, ID di tile di Hilbert, directory e lettura di intestazione, directory e tile da un file o da un URL.
- Mapbox Vector Tile Specification · SpecificationSpecifica Mapbox Vector Tile: struttura protobuf, comandi di geometria e regole di orientamento seguite dal decodificatore.
- Leaflet 1.9 · BSD-2-ClauseMappa interattiva e layer a griglia su canvas che disegna le tile.
- OpenStreetMap · ODbL 1.0Dati cartografici del campione di Parigi e dell’esempio di Firenze: © OpenStreetMap contributors, sotto la Open Database License.
- Protomaps Basemap and pmtiles.io · BSD-3-Clause / ODbLSchema della mappa di base del campione e archivio di esempio di Firenze su pmtiles.io.
- Protomaps (hosted by KONAKTIVE), CARTO, OpenStreetMap, Esri World Imagery · ODbL and provider termsMappe di base opzionali: tile vettoriali proprie ospitate da KONAKTIVE, con CARTO e OpenStreetMap come riserva, ed Esri World Imagery.
La scansione delle directory, il decodificatore di tile vettoriali, il motore di disegno, i controlli e tutte le esportazioni sono stati scritti per questo sito e funzionano interamente nel browser.
Strumenti correlati per tile e file GIS
I controlli seguono le specifiche PMTiles v3 e Mapbox Vector Tile 2.1 e la pratica comune; un controllo superato non garantisce che ogni app di mappe accetti l’archivio. Sample data © OpenStreetMap contributors (ODbL), Protomaps. Optional base maps © OpenStreetMap contributors, Protomaps (hosted by KONAKTIVE), CARTO, Esri.
