Today 10/23 is 107GB.
https://maps.protomaps.com/builds/
I'll update the documentation page today.
1,403 karma · joined April 11, 2010
in Taipei, Taiwan
contact info on http://bdon.org https://twitter.com/bdon https://github.com/bdon
Today 10/23 is 107GB.
https://maps.protomaps.com/builds/
I'll update the documentation page today.
The difference from other commercial vendors is the focus on a complete, easily deployable solution - the hosted API is meant for non-commercial and light commercial use, instead of being the main product offering, to avoid the incentive trap of locking-in paying users to the API.
A related concept is the Community Right to Replicate: https://2i2c.org/right-to-replicate/
gpq convert Cairo_Governorate.parquet --to=geojson | tippecanoe Cairo.geojson -o Cairo.pmtiles
* https://cloudnativegeo.org/blog/2023/10/where-is-cog-for-vec...
I've made an even easier path which is to just extract the relevant tiles from a daily build: https://docs.protomaps.com/guide/getting-started
This can take seconds to minutes for small-medium areas and doesn't need a powerful computer at all. The drawbacks are that the build is only daily, and the lower-zoom tiles aren't clipped so include extra information beyond your specified area.
The Protomaps project encompasses the generation of basemap PMTiles and the ecosystem for delivering them to clients. It supplies a standard daily build from OpenStreetMap, and since the generation is open source it can be customized to conform with your specific requirements.
The hosted API is "free" in the sense that there are no tiers. The API costs me money to run, which is why I require a GitHub sponsorship for commercial use. This is ideal for use cases where deploying your own tileset is impractical.
If you are using the hosted API heavily then it makes sense for you to "graduate" to deploying it yourself.
LLCs in this context signal "This company has no outside investors", because almost every venture-backed technology company will be organized as a C Corporation instead.
I am choosing to run this open source project through a commercial company - that enables me to have a bank account, use GitHub Sponsors, pay others for work, and enter in support and development contracts with other companies and the public sector. Non-profit foundations like US 501(c)(3) aren't practical to create for solo developers.
https://protomaps.com/docs/cdn/cloudflare
However, it is an optional acceleration layer on top of the PMTiles access pattern; and it doesn't make a compelling demo, it's just a Z/X/Y layer which is how map tiles have worked for the past 20 years.
OSM is a freeform dataset and not a cartographic product, so most of the basemap work now and in the future is on getting good results of this transformation for 200+ countries. The mismatch vs. existing maps must exist because we need to ensure to downstream commercial users that all end products of the map generation are openly licensed - that's why this is being pursued as an independent, self-funded project with support from GitHub Sponsors: http://github.com/sponsors/protomaps
This is the focus of most development for the next few months - like you said, it's also a matter of aesthetics and context, like if the map is underlying another PMTiles data layer it should be lower contrast then if it's overlaid with pin markers. The end goal is to have a flexible basemap solution adaptable to most apps but you are free to roll your own proprietary style on top of the open source tiles if you'd like (there are already companies doing this)
It's important to me that I showcase the system working as advertised - you are free to download the 110GB file from that static storage with no restrictions. Unfortunately, the demo is slow because I'm hosting it on Cloudflare R2 which has no outgoing bandwidth fees. Before, it was on DigitalOcean Spaces, which is low latency but would cost me $1-2 out of my own pocket each time someone clicked the link.
The Lambda/Workers integration as described in the other comment is the preferred solution to this for developers operating this at planet scale. Of course, the static storage solution is perfect for small to medium-sized areas, even on GitHub Pages.
With 512MB RAM these generally complete in under 100ms so the unit costs of Lambda are within a few multiples of Cloudflare Workers (.5USD / million invocations)
ogr2ogr -f GeoJSONSeq /vsistdout/ dataset.shp | tippecanoe -o dataset.pmtiles
aws s3 cp dataset.pmtiles s3://bucket/output.pmtiles
Protomaps actually has its own vector renderer different from Mapbox GL or MapLibre at https://github.com/protomaps/protomaps.js . It does use a handful of low-level Mapbox JavaScript libraries, but otherwise was consciously developed to be 100% separate from existing Mapbox rendering and styling code, and has an objectively inferior (Leaflet) user experience.
In practice, most serious uses of Protomaps are now using MapLibre GL, so there will be more focus going on that in the project going forward.
Cloudflare R2 latency is tricky to predict and can be anywhere from a few hundred milliseconds to 1s+ in my experience. This is for cache misses, only, of course; cache hits are comparable to AWS. Cloudflare really has every incentive to improve their product so I expect this to be much more competitive in the near future.
Paul Norman has a project called Tilekiln to adapt vector rendering for this use case on OSM.org: https://github.com/pnorman/tilekiln
As most storage systems like S3 aren't free and have per-request fees, the price is pretty comparable to this CDN deployment.
Protomaps is very intentionally built with little in common with Mapbox; the main shared parts are using the same Protocol Buffers vector tile format, because there's no reason to write another one; and compatibility with the fork of Mapbox GL 1 (MapLibre GL). See https://protomaps.com/docs/faq#mapbox
https://protomaps.com/docs/faq#openstreetmap
I also maintain open source tooling for anyone to replicate and extract OSM on-demand, as well as a free download portal:
A small detail: I don't believe this is the absolute cheapest way to deliver map tiles. Renting an unmetered bandwidth server is always going to be the cheapest way to host content, but unmanaged servers don't give you SSL termination, infinite storage, or an edge cache.
Protomaps is designed as the right compromise between self-hosted operational+development costs and SaaS-like delivery.
Most open source efforts have consolidated around MapLibre GL https://maplibre.org which is a maintained fork of Mapbox GL before their switch to a source-available license.
http://github.com/sponsors/protomaps
But being "Google Maps compatible" will never be possible as long as the Google Maps client library and data are proprietary.