Un visor de PMTiles vectoriales que funciona en tu navegador
PMTiles es un formato de un solo archivo para mapas en teselas. Un archivo .pmtiles guarda toda una pirámide de teselas, desde la vista del mundo en el zoom 0 hasta el nivel de calle, más un índice que dice dónde está cada tesela dentro del archivo. Como una app de mapas puede leer cualquier tesela con una sola petición HTTP por rangos, basta con dejar el archivo en un almacenamiento en la nube normal y usarlo como mapa sin ningún servidor de teselas. Por eso los mapas PMTiles son hoy una forma habitual de publicar datos de OpenStreetMap: los mapas base de Protomaps y muchos mapas de ciudades y países creados con Planetiler se distribuyen como archivos PMTiles de OpenStreetMap.
Mirar dentro de uno es más difícil. Un .pmtiles es binario, ningún programa normal lo abre, y para ver las teselas vectoriales suele hacer falta MapLibre, un estilo y algo de código. Este visor de PMTiles vectoriales online hace el trabajo por ti. Suelta un archivo, o pega la URL de uno que ya esté en línea, y el visor lee la cabecera y los directorios, descarga solo las teselas a la vista, las decodifica en tu navegador y dibuja cada capa con su propio color.
Es tanto una herramienta de revisión como un visor. Haz clic en cualquier objeto para leer sus atributos, activa y desactiva capas, mira el tamaño de las teselas en cada nivel de zoom y revisa el archivo según PMTiles v3 y la especificación de teselas vectoriales: cabecera, compresión, agrupación, tamaño del directorio raíz, metadatos, extensión, recuentos de teselas y ETag. Después exporta los objetos visibles como GeoJSON, guarda un PNG o descarga un informe técnico. Mi consejo: abre el archivo desde su URL final antes de anunciarlo. La mayoría de los casos de "mi mapa PMTiles no carga" son ajustes de CORS o de rangos en el bucket, y este visor los muestra con un clic.
Qué hace el visor de PMTiles vectoriales
Esto es todo lo que hace la herramienta, en el orden en que lo vas a encontrar.
- Abrir un archivo o una URL. Arrastra un .pmtiles al mapa, haz clic en "Abrir PMTiles" o pega una URL y pulsa Abrir. No hay límite de tamaño: el visor lee solo la cabecera, los directorios y las teselas que necesita, de un archivo de tu disco o de un servidor. "Probar un ejemplo" carga un pequeño archivo PMTiles de OpenStreetMap del centro de París, y el enlace de ejemplo abre un archivo de Florencia en pmtiles.io.
- Ver el mapa al instante. El visor lee la extensión de la cabecera y va a los datos. Cada capa se dibuja en un lienzo con su propio color: polígonos como rellenos claros, líneas como trazos, puntos como puntos con etiquetas. Los nombres de capa de los esquemas de Protomaps, OpenMapTiles y Shortbread, como water, landuse, buildings, roads y places, reciben colores naturales.
- Trabajar con las capas. La pestaña Capas lista cada capa de los metadatos y de las teselas, con sus tipos de geometría, el número de objetos en una muestra y todos sus campos con un valor de ejemplo. Activa y desactiva capas, pulsa "Solo" para ver una capa sola o haz clic en el cuadro de color para elegir el tuyo.
- Hacer clic para revisar objetos. Haz clic en el mapa y una tarjeta muestra cada objeto de ese punto en las capas visibles: capa, tipo de geometría, ID y todos los atributos, por ejemplo kind, name y min_zoom de una calle de OpenStreetMap. El objeto se resalta, y puedes copiarlo como GeoJSON o descargar toda la tesela como archivo .pbf.
- Leer la información del archivo. La pestaña Archivo muestra la cabecera y los metadatos con palabras claras: nombre, atribución, tipo de tesela, compresión de teselas y directorios, rango de zoom, extensión, centro, la herramienta que lo creó (por ejemplo Planetiler), tamaño del archivo, número de teselas direccionadas y únicas y tamaño de los directorios.
- Revisar las teselas. El visor lee cada entrada de los directorios y da, por nivel de zoom, el número de teselas y el tamaño total, medio y máximo, además de las diez teselas más grandes. Pulsa "Ver" para ir a una tesela. La cuadrícula de teselas dibuja el borde de cada tesela con su z/x/y y su tamaño guardado.
- Ejecutar la revisión. La pestaña Revisión prueba el archivo: versión de la cabecera, tipo de tesela, compresión, agrupación, si el directorio raíz cabe en los primeros 16 KB, metadatos y vector_layers, extensión y centro, el rango de zoom y los recuentos de teselas frente a los directorios, teselas de más de 500 KB, deduplicación, atribución y, para las URL, el ETag. Cada punto se marca como OK, aviso o error con una explicación clara.
- Compartir un enlace. Cuando abres un archivo desde una URL, "Copiar enlace a este archivo" te da un enlace a esta página que abre el mismo archivo. Envíaselo a un compañero y verá el mismo mapa y la misma revisión.
- Acercarse más allá de los datos. Las teselas vectoriales siguen nítidas cuando te acercas más allá del último nivel de zoom, así que el visor sigue dibujando las teselas más profundas ampliadas ("overzoom"). Por debajo del primer nivel de zoom, un aviso te pide que te acerques.
- Exportar. Descarga los objetos visibles como GeoJSON, la vista del mapa como PNG, la cabecera y los metadatos como JSON o un informe técnico con la revisión, la cabecera, las capas, los campos, las estadísticas de teselas y recomendaciones.
Un archivo local se lee por partes con JavaScript dentro de la pestaña de tu navegador y nunca se sube. Una URL la lee tu navegador directamente desde su servidor; este sitio no ve los datos.
Cómo ver un archivo PMTiles, paso a paso
Un ejemplo real con la muestra PMTiles de OpenStreetMap del centro de París (esquema del mapa base de Protomaps, zoom 0 a 12).

La herramienta se abre con un mapa vacío, una zona para soltar archivos y un campo de URL. Arrastra tu .pmtiles al mapa, haz clic para elegir un archivo, pega una URL o pulsa "Probar un ejemplo".

El visor lee la cabecera y el directorio raíz, va a la extensión y dibuja todas las capas de los datos de OpenStreetMap: el agua en azul, los parques en verde, los edificios en marrón, las calles en naranja y los nombres de lugares en rojo.

La pestaña Capas lista cada capa con su geometría, los objetos encontrados en una muestra y todos sus campos. Aquí solo están activas roads y water, lo que muestra la red de calles y el Sena.

Haz clic en una calle. La tarjeta muestra su capa, geometría, ID y atributos de OpenStreetMap como kind, kind_detail y name, y la calle se resalta en el mapa.

La pestaña Archivo convierte la cabecera y los metadatos en palabras claras: tipo de tesela MVT, compresión gzip, zoom 0 a 12, extensión, centro, número de teselas y tamaño de los directorios.

La pestaña Teselas muestra teselas y tamaños por nivel de zoom y las teselas más grandes, leídas de los directorios. Con la cuadrícula activada, se dibuja el borde de cada tesela con su z/x/y y su tamaño guardado.

La pestaña Revisión prueba el archivo según las reglas de PMTiles v3 y de teselas vectoriales. La muestra pasa todas las pruebas; un archivo abierto desde una URL recibe además una prueba de ETag.

El informe técnico reúne en una página el resumen, una vista previa del mapa, la revisión, la cabecera completa, los metadatos, cada capa y campo, las estadísticas de teselas y recomendaciones. Imprímelo o guárdalo como PDF.
Cómo abrir un archivo PMTiles: tus opciones
Hay varias formas de abrir un .pmtiles. La adecuada depende de si quieres mirarlo, revisarlo o crear un mapa con él.
- En tu navegador, con este visor. La forma más rápida de ver qué hay dentro de un archivo vectorial, desde tu disco o desde una URL: sin instalar nada, sin servidor, funciona en Windows, Mac, Linux y tabletas. Ideal para revisar un archivo, leer atributos y compartir un informe. Para PMTiles ráster (teselas PNG, JPEG o WebP) usa el Visor de PMTiles de este sitio.
- Con el visor de pmtiles.io. El visor oficial de Protomaps muestra la cabecera, los metadatos y un inspector de teselas. Va bien para un vistazo técnico rápido; este visor añade colores por capa, campos de atributos, estadísticas de teselas, revisión y exportaciones.
- En MapLibre GL JS. Añade la biblioteca pmtiles, registra el protocolo y apunta una fuente vectorial a pmtiles://https://example.com/archivo.pmtiles. Con un estilo (por ejemplo los estilos del mapa base de Protomaps) tendrás un mapa web terminado y rápido. Así se publican la mayoría de los mapas PMTiles.
- En QGIS. Una versión de QGIS que use GDAL 3.8 o posterior abre un .pmtiles con el controlador PMTiles de GDAL: Capa → Añadir capa → Añadir capa vectorial, y elige el archivo. Cada capa de teselas se convierte en una capa vectorial. Útil para combinar los datos con otros datos SIG.
- Con la herramienta de línea de comandos pmtiles. El programa go-pmtiles muestra la cabecera ("pmtiles show"), recorta un área ("pmtiles extract"), convierte desde MBTiles ("pmtiles convert") y sirve el archivo como teselas z/x/y ("pmtiles serve").
- Como MBTiles. Si una herramienta solo lee MBTiles, convierte el archivo con "pmtiles convert archivo.pmtiles archivo.mbtiles". Las teselas no cambian; para la dirección contraria hay un conversor de MBTiles a PMTiles gratis en este sitio.
Hay algo igual en todas partes: un archivo PMTiles lleva datos, no un estilo. Cada app decide cómo colorear las capas. Este visor elige los colores por el nombre de la capa para que veas la estructura sin escribir antes un estilo.
Cómo lee el visor un archivo PMTiles y dibuja las teselas
Abrir un archivo PMTiles lleva cinco pasos: leer la cabecera, convertir la posición del mapa en un ID de tesela, buscar ese ID en los directorios, traer los bytes con una petición por rangos y, por último, descomprimir, decodificar y dibujar la tesela. Esto es exactamente lo que ocurre, con los números de la muestra de París.
1. La estructura del archivo y la cabecera de 127 bytes
Un archivo PMTiles v3 tiene cinco secciones en un orden fijo. Los primeros 127 bytes son la cabecera: la palabra mágica "PMTiles", la versión, el desplazamiento y la longitud de cada otra sección, recuentos de teselas, compresión, tipo de tesela, rango de zoom, extensión y centro. El visor lee los primeros 16.384 bytes con una petición, que siempre contienen la cabecera y el directorio raíz:
bytes 0–126 cabecera "PMTiles" + versión 3 + desplazamientos, recuentos, zoom, extensión
directorio raíz debe terminar antes del byte 16.384
metadatos JSON name, attribution, vector_layers, …
directorios hoja opcionales, para archivos grandes
datos de teselas las teselas, una tras otra
muestra París raíz 127 + 142 bytes metadatos 269 + 870 bytes
teselas 1.139 + 2.929.805 bytes 24 teselas, zoom 0–12
extensión 2.197266, 48.748945, 2.460938, 48.922499Las coordenadas se guardan como enteros en unidades de 10⁻⁷ grados, así que 2,197266° se guarda como 21972660. El visor las convierte de nuevo y ajusta el mapa a la extensión.
2. De z/x/y a un ID de tesela: la curva de Hilbert
PMTiles da a cada tesela del mundo un número, el ID de tesela. Primero van todas las teselas del zoom 0, luego todas las del zoom 1, y así sucesivamente. Dentro de un nivel de zoom, las teselas siguen una curva de Hilbert, una línea que pasa por cada tesela y mantiene juntas a las vecinas:
primer ID del zoom z = (4^z − 1) / 3 0, 1, 5, 21, 85, …
ID de tesela = primer ID del zoom z + índice de Hilbert d(x, y)
zoom 1: 1/0/0 → 1 1/0/1 → 2 1/1/1 → 3 1/1/0 → 4
París 12/2074/1409
primer ID del zoom 12 = (16.777.216 − 1) / 3 = 5.592.405
d(2074, 1409) = 14.248.941
ID de tesela = 19.841.346Como la curva de Hilbert mantiene cerca en el orden de IDs a las teselas vecinas, las teselas de una ciudad quedan juntas dentro del archivo. Un mapa que se desplaza por una ciudad lee entonces rangos de bytes vecinos, algo que las cachés y las CDN manejan bien.
3. Directorios: entradas con longitud de serie y directorios hoja
Un directorio es una lista ordenada de entradas. Cada entrada dice: a partir de este ID, tantas teselas seguidas (longitud de serie) usan los bytes en este desplazamiento con esta longitud. La lista se guarda columna a columna como varints, con los IDs como diferencias, y luego se comprime con gzip. Estas son las primeras cuatro entradas de la muestra de París, las teselas padre de la tesela de la ciudad en los zooms 0 a 3:
entrada ID tesela serie desplazamiento longitud
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
guardado 24 | 0, 4, 14, 57 | 1, 1, 1, 1 | 65269, 76322, … | 1, 0, 0, …
nº deltas de ID series longitudes desplazamientos (0 = justo tras la tesela anterior)
serie 0 → la entrada apunta a un directorio hoja, no a una teselaUna serie mayor que 1 es la forma en que PMTiles guarda la misma tesela muchas veces sin coste: diez mil teselas de océano iguales se convierten en una sola entrada. Cuando el directorio raíz no cabría en 16 KB, las entradas se reparten en directorios hoja y la raíz solo apunta a ellos. Para encontrar una tesela, el visor busca en la raíz, sigue como mucho tres niveles de hojas y guarda en caché cada directorio que lee.
4. Leer solo lo necesario: peticiones por rangos
Con una URL, cada lectura es una petición HTTP por rangos. Con un archivo local, es un trozo del objeto File. En ambos casos, abrir un archivo cuesta una lectura para la cabecera y la raíz, otra para los metadatos y luego una por tesela (más un directorio hoja la primera vez que se visita una zona):
GET /florence.pmtiles
Range: bytes=0-16383 → 206 Partial Content cabecera + raíz
Range: bytes=525-22237 → 206 metadatos JSON
Range: bytes=22238-456635 → 206 tesela 0/0/0
el servidor necesita Accept-Ranges: bytes, estado 206 para un rango
CORS: Access-Control-Allow-Origin para tu sitio
un ETag, para notar que se reemplazó el archivoSi el servidor ignora la cabecera Range y envía el archivo entero con estado 200, o si CORS bloquea la petición, el visor lo dice con palabras claras. Esos dos ajustes son la razón habitual de que un mapa PMTiles funcione en un portátil y falle en la web.
5. Contar las teselas: el recorrido de los directorios
Para la pestaña Teselas, el visor lee todo el directorio raíz y, si en total pesan 64 MB o menos (8 MB para una URL), todos los directorios hoja de una vez. Expande cada serie y la reparte por nivel de zoom usando el primer ID de cada zoom:
zoom del ID t = mayor z con (4^z − 1) / 3 ≤ t teselas por zoom = Σ series dentro de ese zoom tamaño por zoom = Σ serie × longitud cobertura = teselas / 4^z ahorro por deduplicación = 1 − tile_contents_count / addressed_tiles_count
Luego compara los totales con los tres recuentos de la cabecera (teselas direccionadas, entradas y contenidos). Una diferencia indica que el archivo lo escribió una herramienta con errores o que está cortado. En archivos del tamaño del planeta, cuyos directorios hoja ocupan cientos de MB, este recorrido se omite y el mapa sigue funcionando.
6. Descomprimir y decodificar la tesela vectorial
La cabecera dice cómo están comprimidas las teselas. Gzip se descomprime con el DecompressionStream integrado del navegador. El resultado es una Mapbox Vector Tile, un mensaje Protocol Buffers que decodifica el mismo decodificador que usa el Visor de MBTiles vectoriales de este sitio:
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 = (cantidad << 3) | id MoveTo = 1, LineTo = 2, ClosePath = 7 9 = MoveTo 1 punto 18 = LineTo 2 puntos 15 = ClosePath anillo con área > 0 anillo exterior, área < 0 hueco
Los nombres y valores de los atributos se guardan una vez por capa y cada objeto solo guarda pares de índices; por eso las teselas de OpenStreetMap con miles de edificios se quedan en unos 100 a 200 KB. El decodificador se probó contra el decodificador de referencia de Mapbox en más de 350.000 objetos sin ninguna diferencia.
7. Dibujo, overzoom y detección de clics
Cada tesela del mapa es un lienzo de 256 × 256 píxeles (512 en pantallas de alta resolución). Las unidades de tesela, de 0 a 4096 de lado, se escalan a píxeles. Más allá del último nivel de zoom, la tesela padre se amplía y se desplaza. Un clic se convierte a unidades de tesela y se prueba contra los objetos:
escala = 256 × f / extent f = 2^(z_mapa − z_datos) desplazamiento = (x mod f, y mod f) × 256 punto acierto si la distancia ≤ 7 px línea acierto si la distancia a un segmento ≤ 5 px polígono acierto si un rayo desde el clic cruza los anillos un número impar de veces
Como los datos son vectoriales, las líneas se dibujan de nuevo a cada escala y siguen nítidas. Las etiquetas siguen el atributo min_zoom que Protomaps y muchos builds de Planetiler dan a cada objeto: un nombre solo aparece cuando el mapa llega a ese zoom, y los nombres de lugares ganan a los de POI cuando falta espacio. Una prueba rápida con el rectángulo envolvente descarta la mayoría de los objetos antes de la prueba exacta del clic, así que incluso las teselas densas de una ciudad responden al instante.
8. Presupuesto de tamaño por tesela
Las teselas grandes hacen lentos los mapas: cada una debe descargarse, descomprimirse y decodificarse antes de dibujar nada. tippecanoe limita las teselas a 500 KB por defecto, y el mismo límite es común en los servicios de teselas vectoriales. El visor toma cada longitud guardada de los directorios y marca los niveles de zoom que lo superan:
tamaño guardado = longitud en la entrada del directorio bytes, comprimido tamaño medio = tamaño por zoom / teselas por zoom referencia tesela más grande < 500 KB (512.000 bytes) Florencia (pmtiles.io) tesela más grande 0/0/0 = 434.398 bytes → OK
En los archivos PMTiles de OpenStreetMap, las teselas más grandes suelen ser las de zoom bajo, que guardan un país o un continente entero, y los centros urbanos densos en los zooms 12 a 14. La lista de teselas más grandes te lleva directamente a ellas.
PMTiles y los formatos de exportación en detalle
Qué hay dentro de un archivo PMTiles, en qué se diferencia de MBTiles y qué contiene cada descarga de este visor.
PMTiles vectorial .pmtiles
Un archivo PMTiles v3 con tipo de tesela MVT. Cada tesela es una Mapbox Vector Tile comprimida con gzip y con capas con nombre. Los metadatos JSON suelen tener name, attribution, description y una lista vector_layers con los campos de cada capa. Los archivos creados con Planetiler guardan además la hora de creación y los datos de replicación de 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 archivo, sin servidor, de cualquier tamaño, desde una ciudad hasta el planeta entero. Necesita un lector que admita peticiones por rangos (MapLibre con la biblioteca pmtiles, OpenLayers, plugins de Leaflet, QGIS o este visor) y un estilo para parecer un mapa terminado.
PMTiles ráster .pmtiles
La misma estructura, pero las teselas son imágenes: PNG, JPEG, WebP o AVIF. El estilo está dentro de los píxeles, así que el mapa no se puede cambiar de estilo ni consultar, y se ve borroso más allá de su último nivel de zoom.
El tipo de tesela de la cabecera los distingue. Este visor envía los archivos ráster al Visor de PMTiles de este sitio, que está hecho para imágenes.
PMTiles y MBTiles comparados .pmtiles / .mbtiles
Los dos guardan las mismas teselas. MBTiles es una base de datos SQLite y necesita un programa o servidor que ejecute SQL; PMTiles es un archivo simple con su propio índice, así que un navegador puede leer teselas sueltas por HTTP. PMTiles además deduplica las teselas iguales con series y ordena las teselas en una curva de Hilbert.
Usa MBTiles para editar y para herramientas que lo esperan, y PMTiles para publicar en la web. Al convertir entre ellos, cada tesela queda idéntica byte a byte.
GeoJSON (vista) .geojson
Todos los objetos de las capas visibles en las teselas que cubren la vista actual, en el nivel de zoom de datos actual, como una FeatureCollection RFC 7946 en WGS84. Cada objeto conserva sus atributos y recibe _layer y _tile. Los polígonos se agrupan con sus huecos.
{ "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], …] } }Los objetos se cortan en los bordes de las teselas, tal como se guardan. Una exportación cubre como máximo 64 teselas; acércate para un área más pequeña y detallada. Con datos de OpenStreetMap, revisa la licencia ODbL antes de reutilizar un extracto.
PNG (vista) .png
Una imagen de las capas vectoriales tal como se ven en la ventana del mapa, con fondo blanco, una barra de título con el nombre y el nivel de zoom, y la atribución de los metadatos.
Útil para documentación o una vista previa rápida. El mapa base no se incluye, así que no hay derechos de imagen de terceros de los que preocuparse.
Cabecera y metadatos (JSON) .json
La cabecera PMTiles completa (desplazamientos, longitudes, recuentos, compresión, tipo de tesela, zoom, extensión y centro), los metadatos JSON, las estadísticas de los directorios por nivel de zoom y la lista de capas halladas en las teselas.
Útil para comparar dos versiones de un archivo o para copiar la lista vector_layers en un estilo de MapLibre.
Tesela (.pbf) .pbf
La tesela vectorial bajo tu clic, descomprimida, tal como la recibe MapLibre. El nombre del archivo lleva su z/x/y.
Pásala a otras herramientas (por ejemplo vt2geojson o un visor de protobuf) para depurar una tesela en detalle.
Informe técnico .html
Una página HTML con el resumen del archivo, una vista previa del mapa, cada prueba de la revisión, la tabla completa de la cabecera, los metadatos, las capas con sus tipos de geometría y campos, las teselas por nivel de zoom, las teselas más grandes, recomendaciones y cómo usar el archivo.
Se imprime limpio en PDF. Adjúntalo a un ticket o a una entrega para que quien lo reciba vea qué hay en el archivo sin abrirlo.
Todas las exportaciones se crean en tu navegador a partir del archivo que abriste. No se envía nada a este sitio.
Quién usa un visor de PMTiles vectoriales
PMTiles llevó el alojamiento de mapas de los servidores de teselas a archivos simples, así que ahora mucha gente necesita mirar dentro de esos archivos.
- Desarrolladores de mapas web. Revisa un archivo antes de escribir un estilo de MapLibre: qué capas existen, cómo se llaman los campos, en qué niveles de zoom aparecen los datos. Abre la URL de producción para comprobar que las peticiones por rangos y CORS funcionan antes de publicar.
- Mapeadores y usuarios de datos de OpenStreetMap. Mira un extracto PMTiles de OpenStreetMap de Protomaps o de un build de Planetiler, haz clic en calles, edificios y lugares y comprueba qué etiquetas de OSM llegaron exactamente a las teselas.
- Analistas SIG. Confirma que una salida de tippecanoe, Planetiler o "pmtiles convert" tiene las capas, atributos y rango de zoom correctos, y entrégala junto con el informe.
- Equipos de DevOps y nube. Prueba un bucket en S3, R2 o Google Cloud Storage: el visor muestra con palabras claras los errores de CORS, la falta de soporte de rangos y la falta de ETag, y la revisión detecta teselas demasiado grandes y archivos no agrupados.
- Editores de datos. Comprueba la atribución, la extensión, el centro y la descripción antes de publicar mapas PMTiles, para que los usuarios vean el crédito correcto y la vista inicial correcta.
- Cartografía sin conexión y de campo. Comprueba que un archivo recortado con "pmtiles extract" cubre la zona y los niveles de zoom correctos antes de copiarlo a un dispositivo que estará sin cobertura.
- Estudiantes y docentes. Mira cómo funcionan los mapas nativos de la nube: activa la cuadrícula de teselas, compara tamaños entre niveles de zoom, lee la cabecera y sigue un ID de tesela por los directorios.
- Soporte y reportes de errores. Cuando un mapa PMTiles muestra un hueco, encuentra la tesela, descárgala como .pbf y adjúntala con el informe al ticket.
Preguntas frecuentes sobre PMTiles
Las 20 preguntas que más se hacen sobre los archivos PMTiles y este visor.
1. ¿Qué es un archivo PMTiles?
PMTiles es un formato de archivo único para teselas de mapa, creado por Protomaps. Guarda las teselas de todos los niveles de zoom más un índice compacto (los directorios), así que un lector puede traer cualquier tesela con una petición HTTP por rangos. Puedes alojarlo en un almacenamiento estático normal y usarlo como mapa sin servidor de teselas.
2. ¿Cómo abro un archivo PMTiles?
Para un vistazo rápido, suéltalo en este visor o pega su URL: no se instala ni se sube nada. Para crear un mapa web, usa MapLibre GL JS con el protocolo pmtiles. QGIS lo abre como capa vectorial cuando usa GDAL 3.8 o posterior. La herramienta de línea de comandos pmtiles muestra la cabecera y lo convierte a MBTiles. La sección "Cómo abrir un archivo PMTiles" de arriba compara todas las opciones.
3. ¿Es gratis este visor de PMTiles?
Sí. Es gratis, sin cuenta, sin límite diario y sin marca de agua en las exportaciones. Todo funciona en tu navegador, así que no hay costes de servidor que repercutir.
4. ¿Se sube mi archivo?
No. Un archivo local se lee por partes con la API File del navegador, y las teselas se decodifican y dibujan dentro de tu pestaña. Cuando abres una URL, tu navegador trae las partes directamente de ese servidor; este sitio nunca recibe los datos. Solo un mapa base, si activas uno, se carga desde su proveedor.
5. ¿Qué tamaño puede tener el archivo?
No hay un límite fijo. El visor nunca carga el archivo entero, solo la cabecera, los directorios y las teselas a la vista, así que un archivo de todo el planeta de varios GB se abre tan rápido como uno pequeño. En archivos muy grandes se omiten las estadísticas de teselas por nivel de zoom, porque sus directorios ya ocupan cientos de MB.
6. ¿Por qué no se abre mi URL de PMTiles?
Casi siempre es CORS o las peticiones por rangos. El servidor debe aceptar peticiones desde otra web (cabecera Access-Control-Allow-Origin) y devolver solo los bytes pedidos con estado 206. Los buckets en la nube necesitan una regla CORS para GET y HEAD; algunas CDN necesitan activar la caché por rangos de bytes. El mensaje de error del visor te dice cuál de las dos falló.
7. ¿Qué son los PMTiles de OpenStreetMap?
Archivos PMTiles creados con datos de OpenStreetMap, como el mapa base de Protomaps (capas earth, water, landuse, landcover, roads, buildings, pois, places, boundaries, transit) o builds con el esquema OpenMapTiles hechos con Planetiler. Puedes descargar builds diarios del planeta o recortar una región. Están bajo la licencia ODbL y necesitan el crédito "© OpenStreetMap contributors".
8. ¿Qué diferencia hay entre PMTiles y MBTiles?
Los dos guardan las mismas teselas. MBTiles es una base de datos SQLite que necesita un programa o un servidor de teselas para leerse; PMTiles es un archivo simple con su propio índice que un navegador puede leer por HTTP. PMTiles además guarda una sola vez las teselas idénticas. Convierte entre ellos con "pmtiles convert" o con el conversor de MBTiles a PMTiles de este sitio, y las teselas no cambian.
9. ¿Puedo ver PMTiles ráster aquí?
Esta página es para teselas vectoriales. Si abres un archivo ráster (teselas PNG, JPEG, WebP o AVIF), el visor lo reconoce por la cabecera y te enlaza al Visor de PMTiles de este sitio, que muestra teselas de imagen.
10. ¿Qué significa "agrupado"?
Un archivo agrupado (clustered) guarda las teselas en el orden de su ID, así que las teselas cercanas en el mapa también están cerca en el archivo. Los lectores pueden traer las vecinas juntas y las cachés de las CDN funcionan mejor. Los archivos escritos por "pmtiles convert", tippecanoe y Planetiler están agrupados.
11. ¿Por qué el directorio raíz debe caber en 16 KB?
Para que una petición de los primeros 16.384 bytes devuelva siempre la cabecera y el directorio raíz juntos. Así el lector sabe dónde está cada tesela o directorio hoja tras un solo viaje de ida y vuelta. Si la raíz es mayor, se incumple la especificación y muchos lectores fallan. La pestaña Revisión lo comprueba.
12. ¿Qué es un ID de tesela?
Un número para cada tesela del mundo. Primero van todas las teselas del zoom 0, luego las del zoom 1, y así sucesivamente; dentro de un nivel de zoom, las teselas siguen una curva de Hilbert. Por ejemplo, la tesela 12/2074/1409 de París tiene el ID 19.841.346. Los directorios asignan a estos IDs rangos de bytes.
13. ¿Qué es la deduplicación en PMTiles?
Muchas teselas son idénticas, por ejemplo mar abierto o tierra vacía en zooms altos. PMTiles guarda esa tesela una vez y hace que muchos IDs apunten a ella, usando series para los tramos largos. La cabecera cuenta las teselas direccionadas y los contenidos únicos; el visor muestra cuánto espacio se ahorra.
14. ¿Qué significa overzoom?
Un conjunto de teselas tiene un último nivel de zoom, a menudo 14 o 15 en datos de OpenStreetMap. Si te acercas más, el visor sigue usando esas teselas y las dibuja más grandes. Como los datos vectoriales se vuelven a dibujar, las líneas siguen nítidas. Por eso los mapas base rara vez pasan del zoom 15.
15. ¿Por qué los objetos se cortan en los bordes de las teselas?
Cada tesela vectorial solo guarda las partes de los objetos que caen dentro de ella, más un pequeño margen. Una calle larga se guarda en varios trozos, uno por tesela, y el renderizador los dibuja uno al lado del otro para que el corte no se vea. En la exportación GeoJSON los trozos quedan separados, cada uno con un atributo _tile.
16. ¿Puedo convertir PMTiles a GeoJSON?
Para un área, sí: acércate a ella y pulsa "GeoJSON (vista)". Exporta las capas visibles de hasta 64 teselas. Para un archivo entero, mejor exporta desde los datos originales, porque las teselas están simplificadas y cortadas en los bordes.
17. ¿Puedo editar un archivo PMTiles aquí?
No, el visor solo lee. Para cambiar los datos, edita la fuente y vuelve a crear el archivo con tippecanoe o Planetiler. Para cambiar solo los metadatos, usa "pmtiles edit" de la herramienta de línea de comandos.
18. ¿Qué herramientas crean PMTiles vectoriales?
tippecanoe (desde GeoJSON, CSV y FlatGeobuf), Planetiler (desde OpenStreetMap, incluidos los esquemas de Protomaps y OpenMapTiles), GDAL 3.8 y posteriores, y "pmtiles convert" desde un MBTiles. La pestaña Archivo muestra la herramienta de creación cuando los metadatos la registran.
19. ¿Qué es MLT y por qué no se muestra?
MLT (MapLibre Tile) es un formato de teselas vectoriales más nuevo, con codificación por columnas y mejor compresión. PMTiles puede guardarlo con el tipo de tesela 6. Este visor solo decodifica Mapbox Vector Tiles (MVT) y te avisa cuando un archivo contiene MLT; MapLibre GL JS puede mostrar esos archivos.
20. ¿Funciona en un móvil o una tableta?
Sí, en cualquier navegador actual de iOS, Android, Windows, macOS y Linux. Abrir desde una URL va especialmente bien en móviles, porque solo se descargan las teselas a la vista. Usa la versión a pantalla completa para tener más espacio.
Especificaciones, software y créditos de datos
El visor se basa en especificaciones abiertas, software abierto y datos abiertos:
- PMTiles (Protomaps) · BSD-3-ClauseEspecificación PMTiles v3 y biblioteca JavaScript pmtiles de Protomaps: la estructura del archivo, los IDs de tesela de Hilbert, los directorios y la lectura de cabecera, directorios y teselas desde un archivo o una URL.
- Mapbox Vector Tile Specification · SpecificationEspecificación Mapbox Vector Tile: la estructura protobuf, los comandos de geometría y las reglas de orientación que sigue el decodificador.
- Leaflet 1.9 · BSD-2-ClauseMapa interactivo y la capa de cuadrícula en lienzo que dibuja las teselas.
- OpenStreetMap · ODbL 1.0Datos de mapa de la muestra de París y del ejemplo de Florencia: © OpenStreetMap contributors, bajo la Open Database License.
- Protomaps Basemap and pmtiles.io · BSD-3-Clause / ODbLEsquema de mapa base de la muestra y el archivo de ejemplo de Florencia en pmtiles.io.
- Protomaps (hosted by KONAKTIVE), CARTO, OpenStreetMap, Esri World Imagery · ODbL and provider termsMapas base opcionales: teselas vectoriales propias alojadas por KONAKTIVE, con CARTO y OpenStreetMap como respaldo, y Esri World Imagery.
El recorrido de los directorios, el decodificador de teselas vectoriales, el renderizador, la revisión y todas las exportaciones se escribieron para este sitio y funcionan por completo en tu navegador.
Herramientas relacionadas de teselas y archivos SIG
La revisión sigue las especificaciones PMTiles v3 y Mapbox Vector Tile 2.1 y la práctica habitual; pasar una prueba no garantiza que todas las apps de mapas acepten el archivo. Sample data © OpenStreetMap contributors (ODbL), Protomaps. Optional base maps © OpenStreetMap contributors, Protomaps (hosted by KONAKTIVE), CARTO, Esri.
