6 puntos por GN⁺ 2023-10-24 | 2 comentarios | Compartir por WhatsApp
  • Ofrece a los equipos para los que operar servidores y pagar costos de APIs de mapas en la publicación de mapas web resulta una carga, una alternativa de self-hosting con un único archivo estático
  • Los desarrolladores frontend pueden servir tiles de mapas vectoriales de forma simple y económica usando solo almacenamiento en la nube y HTTP range requests
  • PMTiles es un formato abierto que contiene basemaps ráster y vectoriales, y capas personalizadas; admite plugin de MapLibre, CLI e integración con CDN
  • Protomaps mantiene tilesets de basemaps basados en OpenStreetMap y otros datos abiertos, para facilitar el uso de OSM en mapas web interactivos
  • El uso no comercial es gratuito; si se necesita uso comercial o una API administrada de tiles de basemap, es necesario participar como GitHub Sponsor

Mapas con self-hosting en un solo archivo

  • Protomaps es un mapa gratuito y personalizable que permite publicar el mapa del mundo como un único archivo estático
  • Puede subirse a almacenamiento en la nube; si tienes experiencia usando S3, puedes publicar mapas interactivos a escala global
  • Está diseñado para que los desarrolladores frontend hagan self-hosting de mapas sin configurar servidores adicionales
  • Los tiles de mapas vectoriales se sirven de forma simple y económica usando HTTP range requests
  • Ofrece materiales de inicio como Get Started y el quick start tutorial

PMTiles y cómo se componen los mapas

Basemaps basados en OpenStreetMap

  • Protomaps mantiene tilesets de basemaps creados con OpenStreetMap y otras fuentes de datos abiertos
    • Puede usarse como una vía sencilla para adoptar OSM en mapas web interactivos
    • Se puede descargar gratis el archivo planet completo o extraer solo la región deseada con la CLI
    • Puedes iniciar la extracción de una región en Download your area
  • Los usuarios que no quieran gestionar directamente archivos grandes pueden usar una API de tiles de basemap basada en caché de CDN
    • El uso no comercial es gratuito
    • El uso comercial requiere ser GitHub Sponsor
    • Se puede usar la Maps API desde el código

Escenarios de uso

  • Las empresas pueden usar su almacenamiento en la nube existente para obtener control full-stack sobre mapas embebidos en sitios, y reducir costos de mapas de cientos de dólares al mes a centavos
  • Las redacciones pueden crear historias interactivas con mapas personalizados que sigan funcionando por mucho tiempo, sin depender de APIs de terceros
  • En el ámbito científico, PMTiles permite visualizar datos climáticos y ambientales a escala global, y crear exploradores de datos con herramientas open source y frontends de mapas
  • Las agencias gubernamentales pueden reducir la dependencia de Big Tech, preservar la privacidad ciudadana y el cumplimiento de GDPR, y usar una alternativa gratuita a los GIS propietarios

2 comentarios

 
GN⁺ 2023-10-24
Comentarios de Hacker News
  • Probé crear un mapa recortado solo alrededor de Half Moon Bay, al sur de San Francisco, con la herramienta pmtiles de Protomaps.
    Descargué el binario Go más reciente para macOS desde https://github.com/protomaps/go-pmtiles/releases, y encontré el cuadro delimitador aproximado con http://bboxfinder.com/#37.373977,-122.593346,37.570977,-122.....
    El comando que ejecuté fue pmtiles extract https://build.protomaps.com/20231023.pmtiles hmb.pmtiles \ --bbox=-122.593346,37.373977,-122.400055,37.570977, y al arrastrar el hmb.pmtiles de 2 MB resultante a la “drop zone” de https://maps.protomaps.com/, apareció un mapa detallado que permite hacer zoom hasta el nivel de metadatos de OpenStreetMap y contornos de edificios.
    Es realmente impresionante lograr eso en 2 MB, y el archivo está aquí: https://gist.githubusercontent.com/simonw/3c1a5358ca8f782f13...

    • Lo convertí en una demo https://simonw.github.io/hmb-map/ y en una entrada de blog https://til.simonwillison.net/gis/pmtiles
    • Realmente genial. Parece que podría ser útil para negocios locales.
      Normalmente se incrusta Google Maps, pero muchas veces con un mapa de la zona local basta y puede salir más barato.
    • Hice un mapa de Gran Canaria del mismo modo y pesó 15 MB.
      Es bastante genial, sobre todo porque el usuario nunca tendría que descargar el archivo completo, y me entusiasma la idea de poner mapas en sitios estáticos.
    • No es una pregunta de soporte técnico, pero no sé por qué no me funciona.
      El archivo pmtile enlazado sí funciona, pero el archivo más pequeño que generé yo no. Aun así, el concepto de obtener un mapa para un proyecto es excelente.
  • Uso Mapbox con entusiasmo desde que recibí acceso alfa a Tilemill, y desde mi punto de vista esto es la contribución más importante al ámbito de los mapas abiertos desde los tiles vectoriales y Mapbox GL / Map GL.
    Mapbox dejó una puerta abierta al abordar la generación de tiles con MTS, pero aunque era potente, también era demasiado complejo y caro. Se podían generar tiles con Tippecanoe, pero hospedar tiles vectoriales seguía siendo un dolor de cabeza; con PMTiles, el hosting de tiles vectoriales puede ser más fácil y cómodo que con Mapbox, y con costos más de un orden de magnitud menores.
    Esto es especialmente cierto si no necesitas proyecciones llamativas ni soporte 3D y MapLibre te alcanza. Felt también parece ser uno de los servicios importantes que usan internamente un enfoque con PMTile, y es excelente que sigan invirtiendo en Tippecanoe. En un contexto en el que el foco de Mapbox parece desplazarse hacia la navegación vehicular, da gusto ver innovación disruptiva viniendo de otros lados, y lo más sorprendente es que esto salió de un equipo de una sola persona.
    La aparición de PMTiles, combinada con el soporte de consultas espaciales de DuckDB, parece que abrirá muchas innovaciones. Si se pueden consultar y procesar archivos GeoParquet grandes y transmitirlos como PMTiles generados rápidamente, se habilitan casos de uso bastante potentes.

  • Suelo leer sin participar una comunidad online de desarrolladores periodistas, y ahí hay gente que ve a PMTiles como una forma de reducir costos al autoalojar tiles de mapas con estilos personalizados.
    Por ejemplo, vale la pena ver “How The Post is replacing Mapbox with open source solutions” https://www.kschaul.com/post/2023/02/16/how-the-post-is-repl....

    • ¿Cómo saben los medios que estos datos son correctos?
    • Suena como una comunidad interesante. ¿Puedes compartir cuál es?
  • Para quien tenga curiosidad, el archivo PMTile de muestra derivado de OSM, protomaps-basemap-opensource-20230408.pmtiles, pesa 103 GB.
    https://docs.protomaps.com/basemaps/downloads

    • Ahora pesa 107 GB.
      Sería bueno poder descargar y aplicar solo los cambios para archivos diarios, semanales o mensuales.
    • Este es exactamente el tipo de cosa ideal para descargar por Bittorrent.
    • ¿Qué usan para comprimir los tiles? ¿Se podría hacerlo más pequeño con AVIF? ¿O qué tal AVIF para texto + una superposición SVG?
    • Justo eso quería saber. Se puede considerar un tamaño bastante razonable.
  • “La API de Google Maps tiene un nivel gratuito generoso, pero después de superar las 30,000 cargas de mapa, el costo sube bastante. Protomaps se diseñó desde el inicio como un sistema autogestionado, y funciona con un backend 100% estático sobre almacenamiento en la nube, así que solo pagas los costos de almacenamiento y transferencia. Con un uso medio, puede estar en el orden de unos pocos centavos”; eso me parece interesante
    Me gustaría ver una configuración de hosting recomendada, una comparación de costos con Google Maps, y en qué punto se cruzan las líneas de costo

    • No lo encontré en el FAQ, pero sería interesante saber de cuánto es el tamaño de archivo PMTiles de un país mediano
      Si no necesitas que esté 100% actualizado y el mapa se usa solo en una región específica, parece una forma realmente atractiva de autohostearlo. Recompilar el archivo una vez al año y subirlo a un hosting de archivos estáticos parece que sería un procedimiento sencillo, con muy pocas dependencias externas
      Edición: encontré el enlace oficial de descarga de todo el mundo[1], y supera apenas los 100 GB. Entonces, la respuesta a mi pregunta parece ser “de unos cientos de MB a algunos GB”, y eso se ve totalmente aceptable
      [1] https://docs.protomaps.com/basemaps/downloads
    • En Cloudflare, alojar 100 GB cuesta $1, y 10 millones de solicitudes cuestan $0.36
      Al leer la documentación de Protomaps, explican cómo cachear las solicitudes en el CDN de Cloudflare, así que solo tienes que pagar una vez el costo de cada solicitud de tile por período de caché. Es bastante barato
      El título de una publicación anterior sobre Protomaps era “Mapas serverless a 1/700 del costo de la API de Google Maps”
  • Brandon, fundador de Protomaps, estuvo hace unos meses en el podcast Geomob: https://thegeomob.com/podcast/episode-176

  • Lo que más me interesa es PMTiles
    “PMTiles es un formato de archivo único para pirámides de datos de tiles. Un archivo PMTiles puede alojarse en plataformas de almacenamiento como S3, lo que permite aplicaciones de mapas de bajo costo y sin administración”
    “PMTiles es un formato general para datos de tiles direccionados con coordenadas Z/X/Y. Puede contener distintos tipos de datos, como tiles vectoriales de mapas base, observaciones de teledetección o imágenes JPEG”
    “Los lectores de PMTiles usan solicitudes de rango HTTP para traer bajo demanda solo los tiles o metadatos necesarios dentro de un archivo PMTiles”
    “La distribución de tiles y directorios está diseñada para minimizar la cantidad de solicitudes adicionales al desplazarse y hacer zoom”
    https://docs.protomaps.com/pmtiles/

    • PMTiles es increíble. Lo conocí este verano mientras hacía un mapa de focos de incendios forestales en Canadá
      Todos los días recibía un archivo CSV, lo convertía en tiles vectoriales, lo sincronizaba con S3 y lo mostraba en un mapa con mapbox-gl; el mayor costo eran las operaciones sobre archivos en S3. Para reducir costos, apliqué clustering de forma agresiva y bajé la cantidad de tiles a unos 75,000, pero con la frecuencia de actualización que quería, solo las operaciones de S3 costaban $500 al mes
      Ahora proceso los archivos como un único archivo PMTiles y distribuyo solo ese archivo, así que el costo bajó a unos pocos centavos
      Me abrió muchas posibilidades para crear mapas públicos, y si tienen curiosidad, pueden ver aquí los datos de focos de incendios de Canadá de todo 2023: https://lens.pathandfocus.com
    • PMTiles es el equivalente vectorial de Cloud Optimized GeoTIFF (COG): permite que el cliente use la información del mapa de manera eficiente cuando el servidor admite solicitudes de rango HTTP
      Antes, en el mundo vectorial, las opciones eran muchísimos archivos pequeños o un archivo grande que requería un frontend para servir cada tile individual
      Ahora puedes convertir un dump de OSM en mapas base por país en cuestión de minutos, o por continente en unas horas, usando una máquina potente, y luego autohostearlos en un servidor web común con una hoja de estilos personalizada
    • ¿Se podría usar PMTiles como una forma barata, aproximada y rápida de alojar datos geoespaciales que no sean estrictamente “tiles de mapa”? Por ejemplo, una base de datos de POI bastante grande pero que no se actualiza con frecuencia
    • Si es un archivo vectorial, ¿eso significa que se puede aplicar estilizado al vuelo?
  • La combinación de Maplibre[1] + PMTiles + tippecanoe[2] de Felt es excelente para mapas web autohospedados si te parece bien quedar ligado a la proyección Web Mercator
    Casi cualquier fuente geoespacial se puede convertir a .pmtiles con GDAL[3] y tippecanoe: (.shp .gpkg ...) | ogr2ogr -> .geojson | tippecanoe -> .pmtiles
    Para datos de OpenStreetMap está planetiler[4], y también hay estilos de openmaptiles[5] que se pueden usar con Maplibre
    Con esta combinación tienes un buen punto de partida con una canalización de datos open source que puedes alojar en AWS S3+CloudFront o Cloudflare R2 por unos pocos centavos
    [1] https://maplibre.org/
    [2] https://github.com/felt/tippecanoe
    [3] https://gdal.org/
    [4] https://github.com/onthegomap/planetiler
    [5] https://openmaptiles.org/styles/
    Además, la documentación de GDAL/ogr2ogr me parece bastante difícil de leer, así que como ejemplo inicial puedes ver un comando como este
    ogr2ogr -f GeoJSON counties.json -t_srs EPSG:4326 -nln counties -sql "SELECT STATEFP, COUNTYFP, NAME FROM tl_2022_us_county" /vsizip/tl_2022_us_county.zip
    https://census.gov/geographies/mapping-files/…

    • Soy estudiante y quiero desarrollar habilidades en geoespacial/ciencias de la computación. ¿Qué proyecto podría crear con esto? ¿Hay algún buen punto de partida que recomienden?
  • He contribuido a este proyecto y también lo usamos en producción en la empresa
    Es realmente muy bueno, Brandon también es muy amable y uno termina agradeciendo todo el trabajo que se le ha dedicado hasta ahora

  • He obtenido resultados bastante buenos desplegando mapas serverless con PMTiles
    Si te interesa desplegar en AWS CloudFront/Lambda@Edge/S3, puedes ver https://github.com/serverlessmaps/serverlessmaps