Skip to content

☔ Add mask zoom support #7

Open
@nvkelso

Description

@nvkelso

tl;dr Using mask zooms (er, zoom masks) will reduce global tile tiles by >30%.

Our existing architecture assumes a max zoom of 16, and that all tiles between 0 and 16 are generated. With a goal of a global tile build, that's 5,726,623,061 tiles. But if we evaluated if, say, a zoom 10 tile had any interesting content and if it didn't, we didn't generate any child tiles (at zooms 11, 12, 13, 14, 15, 16 say over the ocean with only repetitive ocean child tiles), then we'd end up with more around 4,009,055,573 tiles (a 30% reduction).

When combined with 512px tiles and max zoom of 15 or 14 we could see up to 83% total tile reduction.

There are two ways we could implement this:

  1. Constant max zoom (say zoom 8 or zoom 10). We believe this is the approach MapBox takes.
  2. Variable max zoom (based on content, would require a server manifest file, and client logic to parse the manifest file). We believe this is the approach Esri takes (and generally works better for clustered data – e.g. works better for thematic data versus a reference map).

Areas of investigation:

  1. Investigate how Tangram and other renderers support max zoom currently.
    • For instance, the Tangram sources block can specify a generic max_zoom, could it also take a function that reads from a manifest file?
    • What about Unity?
    • What about Python scrapers?
    • Mapzen terrain service has a max zoom of 15 now, which resulted in tons of wasted pre-rendered tiles, and makes going to zoom 16 prohibitive.
    • How would this interface with future Mapzen (satellite) imagery service?
  2. Investigate if Esri has published their max zoom manifest spec, and how they mod MapboxGL to support same.
    • Would a variable max_zoom make it difficult for MapBox-based rendering stacks to use our vector tiles?
  3. Investigate engineering approach in Tilezen stack to accomplish either implementation approach.
    • vector-datasource
    • tilequeue
    • tileserver

After the approach is settled on, this umbrella issue also tracks engineering to implement our max zoom solution.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions