PMTiles Version 3 Introduces New Addressing Schema
PMTiles version 3 introduces a new tile-addressing schema. Instead of using Z,X,Y tile coordinates, the new schema uses tile IDs based on the tile’s position within a series of Hilbert curves:
36052corresponds to the
8,40,87. The calculation of ID uses a pyramid of Hilbert curves starting at
TileId=0for zoom level 0. The next zoom level, a 2x2 square, occupies the next four IDs in the ID space
TileId=(1,2,3,4), the next level being the next 16 IDs, and so on.
And to not duplicate tiles that contain virtually no information (for example, tiles just showing water) the
RunLength indicates how many times a tile will be repeated within the Hilbert curve, so vast areas of the ocean can be represented with just one tile.
Ocean tiles are not only repetitive, but sparse and often contiguous in Hilbert space. This entry:
means that the 44 byte vector tile with a single square in the layer
oceanis repeated over 100,000 times, starting at
Z,X,Y=11,285,1311and ending at
Update: A new post outlines the disk layout and compression approach of PMTiles version 3. (15 August 2022)