versatiles-org / versatiles-rs

VersaTiles - A toolbox for converting, checking and serving map tiles in various formats.
https://versatiles.org
MIT License
57 stars 2 forks source link

Clarify motivation vs. pmtiles #24

Closed rrrnld closed 1 year ago

rrrnld commented 1 year ago

Hey, just found this after watching the introduction at fossgis.

Can you clarify why you defined a new format, and where exactly the differences to https://github.com/protomaps/go-pmtiles lie? I already looked at pmtiles and was quite intrigued by the idea to just put your vector tiles somewhere and query it via range queries. From what I can tell versatiles is pretty similar in that regard?

MichaelKreil commented 1 year ago

The core concept of PMTiles (and COMTiles) is to use a "serverless" architecture to serve map tiles. While the idea is intriguing, it comes with several challenges. In particular, the inability to use HTTP compression and HTTP caching, limited HTTP CORS, and high latency make PMTiles less suitable for scalable infrastructures. To address these issues, we decided to take the opposite approach with VersaTiles.

VersaTiles uses a server-based architecture for tile hosting, as opposed to the serverless approach of PMTiles. This difference in approach may cause long-term tension between these two projects. Therefore, we need a standard that matches our approach and that we can adapt to the needs of our project.

It is worth noting that all three projects, COMTiles, PMTiles and VersaTiles, are based on the new idea of a tile container file format that can be accessed via HTTP range requests. This is a promising concept that deserves further exploration. We should avoid imposing unnecessary restrictions by mandating compatibility between totally different projects.

bdon commented 1 year ago

To echo what @MichaelKreil wrote, the PMTiles format and ecosystem is designed with “serverless” straight-to-the-browser consumption as a first-class use case. Users find this useful for dev environments and small-scale low maintenance projects.

Accessing tiles in this way can be higher latency compared to alternatives, but this is more related to the underlying latency of cloud storage systems like S3 rather than the archive design itself. At scale the recommendation is to configure a CDN integration which is a small bit of open source code to help mitigate the mentioned drawbacks related to HTTP compression, latency, and CORS.

You can use PMTiles in a “serverful” way, accessing archives on disk, using the go-pmtiles command line tool. But this isn’t the focus of development right now (although it might power serverless Azure/Google Cloud integrations). If running a tileserver fits your use case than VersaTiles or mbtileserver may be a better fit.