Protomaps — mapa-múndi open source gratuito
(protomaps.com)- Oferece a equipes para as quais operar servidores e pagar custos de APIs de mapas na distribuição de mapas web é um peso uma alternativa de self-hosting com um único arquivo estático
- Desenvolvedores frontend podem fornecer tiles vetoriais de mapa de forma simples e barata usando apenas armazenamento em nuvem e HTTP range requests
- PMTiles é um formato aberto que comporta basemaps raster e vetoriais e camadas customizadas, com suporte a plugin do MapLibre, CLI e integração com CDNs
- O Protomaps mantém tilesets de basemap baseados no OpenStreetMap e em outros dados abertos, facilitando o uso do OSM em mapas web interativos
- O uso não comercial é gratuito; para uso comercial ou para uma API gerenciada de tiles de basemap, é necessário participar via GitHub Sponsor
Mapas com self-hosting em um único arquivo
- Protomaps é um mapa gratuito e personalizável que permite distribuir mapas do mundo inteiro como um único arquivo estático
- Pode ser usado ao ser enviado para armazenamento em nuvem; se você tem experiência com S3, consegue publicar mapas interativos em escala planetária
- Foi projetado para que desenvolvedores frontend façam self-hosting de mapas sem configuração separada de servidor
- Os tiles vetoriais de mapa são fornecidos de forma simples e barata usando HTTP range requests
- Como materiais iniciais, oferece Get Started e um quick start tutorial
PMTiles e como os mapas são compostos
- Os exemplos mostram uma configuração mínima para criar um basemap e overlays de dados apenas com HTML + JS
- PMTiles é uma especificação de arquivo de pirâmide de tiles em ordem de Hilbert e pode conter dados geoespaciais como basemaps raster e vetoriais e camadas customizadas
- Oferece plugin do MapLibre, interface de linha de comando e integrações com CDN
- Os detalhes do formato podem ser conferidos na documentação do PMTiles
Basemaps baseados no OpenStreetMap
- O Protomaps mantém tilesets de basemap criados a partir do OpenStreetMap e de outras fontes de dados abertos
- Podem ser usados como um caminho fácil para adotar OSM em mapas web interativos
- É possível baixar gratuitamente o arquivo planet completo ou extrair apenas a região desejada pela CLI
- Em Download your area, é possível iniciar a extração de uma região
- Usuários que não queiram gerenciar arquivos grandes diretamente podem usar uma API de tiles de basemap baseada em cache de CDN
- O uso não comercial é gratuito
- O uso comercial exige GitHub Sponsor
- A Maps API pode ser usada no código
Cenários de uso
- Empresas podem usar armazenamento em nuvem já existente para obter controle full-stack sobre mapas incorporados em sites e reduzir custos mensais de mapas de centenas de dólares para centavos
- Redações podem criar histórias interativas com mapas customizados e duradouros, sem depender de APIs de terceiros
- Na área científica, é possível visualizar dados climáticos e ambientais em escala planetária com PMTiles e criar exploradores de dados com ferramentas open source e frontends de mapas
- Órgãos governamentais podem reduzir a dependência de Big Tech, preservando a privacidade dos cidadãos e a conformidade com GDPR, e usar uma alternativa gratuita a GIS proprietários
2 comentários
Protomaps - Crie seu próprio sistema de mapas com OpenStreetMap
Protomaps - Tornando mapas serverless open source
Opiniões no Hacker News
Testei criar um mapa recortado só da área ao redor de Half Moon Bay, ao sul de San Francisco, com a ferramenta pmtiles do Protomaps
Baixei o binário Go mais recente para macOS em https://github.com/protomaps/go-pmtiles/releases, e encontrei a bounding box aproximada em http://bboxfinder.com/#37.373977,-122.593346,37.570977,-122....
O comando que executei foi
pmtiles extract https://build.protomaps.com/20231023.pmtiles hmb.pmtiles \ --bbox=-122.593346,37.373977,-122.400055,37.570977, e, ao arrastar o hmb.pmtiles de 2 MB resultante para a “drop zone” em https://maps.protomaps.com/, apareceu um mapa detalhado, com zoom até o nível de metadados do OpenStreetMap e contornos de edifíciosÉ realmente impressionante ter isso em 2 MB, e o arquivo está aqui: https://gist.githubusercontent.com/simonw/3c1a5358ca8f782f13...
Normalmente se incorpora o Google Maps, mas muitas vezes basta ter um mapa do entorno local, e isso deve sair mais barato
O usuário nem vai precisar baixar o arquivo inteiro, então é bem interessante, e estou animado para experimentar colocar mapas em um site estático
O arquivo pmtile linkado funciona, mas o arquivo menor que eu criei não funciona. Mesmo assim, o conceito de obter um mapa para um projeto é excelente
Uso bastante o Mapbox desde que recebi acesso ao alfa do Tilemill, e, na minha visão, esta é a contribuição mais importante para mapas abertos desde os vector tiles e o Mapbox GL / Map GL
A Mapbox até deixou a porta aberta ao abordar a geração de tiles com o MTS, mas, embora fosse poderoso, era complexo e caro demais. Dava para gerar tiles com o Tippecanoe, mas a hospedagem de vector tiles ainda era uma dor de cabeça; com PMTiles, hospedar vector tiles pode ser mais fácil e conveniente que no Mapbox, além de custar mais de uma ordem de grandeza a menos
Isso vale especialmente se você não precisa de projeções sofisticadas nem suporte a 3D, e o MapLibre é suficiente. O Felt também parece ser um dos principais serviços que usam internamente a abordagem com PMTile, e é ótimo que continuem investindo no Tippecanoe. Num momento em que o foco do Mapbox parece estar se deslocando para navegação automotiva, é bom ver inovação disruptiva surgindo de outro lugar; e o mais impressionante é que isso veio de uma equipe de uma pessoa só
O surgimento do PMTiles, combinado ao suporte a consultas espaciais do DuckDB, deve abrir caminho para muita inovação. Se for possível consultar e processar grandes arquivos GeoParquet e transmiti-los como PMTiles gerados rapidamente, surgem casos de uso bastante poderosos
gpq convert Cairo_Governorate.parquet --to=geojson | tippecanoe Cairo.geojson -o Cairo.pmtileshttps://cloudnativegeo.org/blog/2023/10/where-is-cog-for-vec...
https://github.com/planetlabs/gpq
Acompanho de longe uma comunidade online de jornalistas desenvolvedores, e lá há pessoas vendo o PMTiles como uma forma de reduzir custos ao hospedar por conta própria map tiles com estilo customizado
Por exemplo, vale ver “How The Post is replacing Mapbox with open source solutions” https://www.kschaul.com/post/2023/02/16/how-the-post-is-repl...
Para quem tiver curiosidade, o tamanho do arquivo PMTile de exemplo derivado do OSM,
protomaps-basemap-opensource-20230408.pmtiles, é de 103 GBhttps://docs.protomaps.com/basemaps/downloads
Seria bom se desse para baixar e aplicar apenas os deltas para arquivos diários, semanais e mensais
“A API do Google Maps tem uma faixa gratuita generosa, mas, depois de ultrapassar 30.000 carregamentos de mapa, o preço fica alto. O Protomaps foi projetado desde o início como um sistema para operar por conta própria e funciona com um backend 100% estático sobre armazenamento em nuvem, então você paga apenas pelos custos de armazenamento e transferência. Em um volume de uso médio, isso pode ficar na casa de alguns centavos” — esse ponto é interessante
Gostaria de ver uma comparação de custos entre a configuração de hospedagem recomendada e o Google Maps, e em que ponto as linhas de custo se cruzam
Se você não precisa que esteja 100% atualizado e vai usar o mapa apenas em uma região específica, parece um modelo realmente atraente para hospedagem própria. Recompilar o arquivo uma vez por ano e enviá-lo para hospedagem de arquivos estáticos parece um processo simples, com quase nenhuma dependência externa
Edit: encontrei o link oficial de download do mundo inteiro[1], e ele passa um pouco de 100 GB. Então a resposta à minha pergunta deve ser algo como “centenas de MB a alguns GB”, e isso parece totalmente aceitável
[1] https://docs.protomaps.com/basemaps/downloads
Lendo a documentação do Protomaps, ela explica como armazenar as requisições em cache na CDN da Cloudflare, então você só paga uma vez por cada requisição de tile a cada período de cache. É bem barato
O título de uma submissão antiga sobre o Protomaps era “Serverless maps at 1/700 the cost of Google Maps API”
Brandon, fundador do Protomaps, participou há alguns meses do podcast Geomob: https://thegeomob.com/podcast/episode-176
Para mim, a parte mais interessante é o PMTiles
“PMTiles é um formato de arquivo único para pirâmides de dados de tiles. Arquivos PMTiles podem ser hospedados em plataformas de armazenamento como S3, permitindo aplicações de mapas de baixo custo e sem administração”
“PMTiles é um formato universal para dados de tiles endereçados por coordenadas Z/X/Y. Ele pode conter vários tipos de dados, como tiles vetoriais de mapa base, observações de sensoriamento remoto e imagens JPEG”
“Leitores de PMTiles usam requisições HTTP de intervalo para buscar sob demanda apenas os tiles ou metadados necessários dentro de um arquivo PMTiles”
“A disposição dos tiles e diretórios é projetada para minimizar o número de requisições adicionais ao mover e aplicar zoom”
https://docs.protomaps.com/pmtiles/
Eu recebia um CSV diariamente, transformava em tiles vetoriais, sincronizava com o S3 e exibia em um mapa mapbox-gl, mas o maior custo eram as operações de arquivo no S3. Para reduzir o custo, agrupei os dados agressivamente e reduzi o número de tiles para cerca de 75.000, mas, na frequência de atualização que eu queria, só o custo de operações no S3 chegava a US$ 500 por mês
Agora processo os arquivos em um único arquivo PMTiles e distribuo apenas esse arquivo; o custo caiu para alguns centavos
Isso abriu muito as possibilidades para criar mapas públicos e, se tiver curiosidade, dá para ver aqui todos os dados de hotspots do Canadá de 2023: https://lens.pathandfocus.com
A abordagem anterior no lado vetorial era ter uma enorme quantidade de arquivos pequenos, ou um arquivo grande que exigia um frontend para fornecer tiles individuais
Agora é possível, em uma máquina robusta, converter um dump do OSM em um mapa base por país em poucos minutos, ou por continente em algumas horas, e então hospedá-lo por conta própria em um servidor web comum junto com uma stylesheet personalizada
A combinação Maplibre[1] + PMTiles + tippecanoe[2] da Felt é excelente para mapas web auto-hospedados, se você não se importar de ficar preso à projeção Web Mercator
Quase toda fonte geoespacial pode ser convertida para
.pmtilescom GDAL[3] e tippecanoe:(.shp .gpkg ...) | ogr2ogr -> .geojson | tippecanoe -> .pmtilesPara dados do OpenStreetMap, existe o planetiler[4], e também há estilos openmaptiles[5] que podem ser usados com o Maplibre
Com essa combinação, você tem um bom ponto de partida para hospedar, com um pipeline de dados open source, no AWS S3+CloudFront ou no Cloudflare R2 por alguns 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/
Além disso, acho a documentação do GDAL/ogr2ogr bem difícil de ler; como exemplo inicial, você pode ver um comando assim
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.ziphttps://census.gov/geographies/mapping-files/…
Já contribuí para este projeto e também o usamos em produção na empresa
É realmente muito bom, e o Brandon também é muito gentil; fico grato por todo o trabalho feito até agora
Tive resultados bem bons distribuindo mapas serverless usando PMTiles
Se você tem interesse em implantar em AWS CloudFront/Lambda@Edge/S3, veja https://github.com/serverlessmaps/serverlessmaps