Skip to content

Wrong minzoom exposed as metadata if write_to is used #935

Description

@Nakaner

Shortbread implementation for Tilemaker uses write_to for the ocean and street layers because streets have more attributes on higher zoom levels. Simplified snippet:

{
    "layers": {
        "streets": {
            "minzoom": 14,
            "maxzoom": 14,
            "combine_below": 15
        },
        "streets_med": {
            "minzoom": 11,
            "maxzoom": 13,
            "simplify_below": 14,
            "simplify_level": 0.0002,
            "combine_below": 14,
            "write_to": "streets"
        },
        "streets_low": {
            "minzoom": 5,
            "maxzoom": 10,
            "simplify_below": 14,
            "simplify_level": 0.0001,
            "combine_below": 11,
            "write_to": "streets"
        }
    },
    "settings": {
        "minzoom": 0,
        "maxzoom": 14,
        "basezoom": 14,
        "include_ids": false,
        "combine_below": 14,
        "name": "Shortbread",
        "version": "1.0",
        "description": "Tile config for a simple vector tiles schema",
        "compress": "gzip",
        "filemetadata": {
            "tilejson": "2.0.0",
            "scheme": "xyz",
            "type": "baselayer",
            "format": "pbf",
            "tiles": [
                "https://example.com/liechtenstein/{z}/{x}/{y}.pbf"
            ]
        },
        "metadata": {
          "author": "OpenStreetMap contributors, Geofabrik GmbH",
          "license": "Open Database License 1.0"
        }
    }
}

If I create vectortiles with Tilemaker using shortbread-tilemaker commit 914f335e485d0368dcda82c59b3a43ec18663431, it generates a streets layer for zoom levels 5 to 14 but the metadata expose it as zoom level 14 to 14 only.

tilemaker --input ~/Downloads/osm/baden-wuerttemberg-latest.osm.pbf --output ~/jobs/vektortiles/shortbread-tilemaker-3.2.mbtiles --bbox 7.51,47.53,10.5,49.8 --config config.json --process process.lua
sqlite3 ~/jobs/vektortiles/shortbread-tilemaker-3.2.mbtiles "SELECT value FROM metadata where name = 'json'" | jq '.vector_layers[]|select(.id == "streets")|.minzoom'

The second command is expected return 5 (smallest minzoom of all layers written to streets) but returns 14 (minzoom of streets) is returned. Some tools like Geoserver seem to rely on the metadata JSON.

This bug can be reproduced with Tilemaker 3.2 and current master (facdf93).

shortbread-tiles/shortbread-tilemaker#52 shortbread-tiles/shortbread-tilemaker#47

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions