From 9f7007e3847978db4e4d70a38ded85e1077fc57f Mon Sep 17 00:00:00 2001 From: Florence Haudin Date: Thu, 5 Feb 2026 22:09:05 +0100 Subject: [PATCH 1/2] Add symbologyState in the VectorTileLayer schema. Update layer_gallery_generator.py accordingly. --- packages/base/layer_gallery.json | 52 +++++++++---------- packages/base/layer_gallery_generator.py | 28 +++++++--- .../project/layers/vectorTileLayer.json | 38 ++++++++++++++ 3 files changed, 86 insertions(+), 32 deletions(-) diff --git a/packages/base/layer_gallery.json b/packages/base/layer_gallery.json index 20f9a62e8..34a673ae4 100644 --- a/packages/base/layer_gallery.json +++ b/packages/base/layer_gallery.json @@ -118,11 +118,11 @@ "maxZoom": 9, "minZoom": 1, "urlParameters": { - "maxZoom": 9, "variant": "MODIS_Terra_CorrectedReflectance_TrueColor", - "time": "2026-02-02", + "time": "2026-02-04", + "tilematrixset": "GoogleMapsCompatible_Level", "format": "jpg", - "tilematrixset": "GoogleMapsCompatible_Level" + "maxZoom": 9 } }, "layerParameters": { "opacity": 1 }, @@ -139,11 +139,11 @@ "maxZoom": 9, "minZoom": 1, "urlParameters": { - "maxZoom": 9, "variant": "MODIS_Terra_CorrectedReflectance_Bands367", - "time": "2026-02-02", + "time": "2026-02-04", + "tilematrixset": "GoogleMapsCompatible_Level", "format": "jpg", - "tilematrixset": "GoogleMapsCompatible_Level" + "maxZoom": 9 } }, "layerParameters": { "opacity": 1 }, @@ -160,11 +160,11 @@ "maxZoom": 8, "minZoom": 1, "urlParameters": { - "maxZoom": 8, "variant": "VIIRS_CityLights_2012", - "time": "2026-02-02", + "time": "2026-02-04", + "tilematrixset": "GoogleMapsCompatible_Level", "format": "jpg", - "tilematrixset": "GoogleMapsCompatible_Level" + "maxZoom": 8 } }, "layerParameters": { "opacity": 1 }, @@ -181,11 +181,11 @@ "maxZoom": 7, "minZoom": 1, "urlParameters": { - "maxZoom": 7, "variant": "MODIS_Terra_Land_Surface_Temp_Day", - "time": "2026-02-02", + "time": "2026-02-04", + "tilematrixset": "GoogleMapsCompatible_Level", "format": "png", - "tilematrixset": "GoogleMapsCompatible_Level" + "maxZoom": 7 } }, "layerParameters": { "opacity": 1 }, @@ -202,11 +202,11 @@ "maxZoom": 8, "minZoom": 1, "urlParameters": { - "maxZoom": 8, "variant": "MODIS_Terra_NDSI_Snow_Cover", - "time": "2026-02-02", + "time": "2026-02-04", + "tilematrixset": "GoogleMapsCompatible_Level", "format": "png", - "tilematrixset": "GoogleMapsCompatible_Level" + "maxZoom": 8 } }, "layerParameters": { "opacity": 1 }, @@ -223,11 +223,11 @@ "maxZoom": 6, "minZoom": 1, "urlParameters": { - "maxZoom": 6, "variant": "MODIS_Terra_Aerosol", - "time": "2026-02-02", + "time": "2026-02-04", + "tilematrixset": "GoogleMapsCompatible_Level", "format": "png", - "tilematrixset": "GoogleMapsCompatible_Level" + "maxZoom": 6 } }, "layerParameters": { "opacity": 1 }, @@ -244,11 +244,11 @@ "maxZoom": 7, "minZoom": 1, "urlParameters": { - "maxZoom": 7, "variant": "MODIS_Terra_L2_Chlorophyll_A", - "time": "2026-02-02", + "time": "2026-02-04", + "tilematrixset": "GoogleMapsCompatible_Level", "format": "png", - "tilematrixset": "GoogleMapsCompatible_Level" + "maxZoom": 7 } }, "layerParameters": { "opacity": 1 }, @@ -264,7 +264,7 @@ "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "maxZoom": 9, "minZoom": 0, - "urlParameters": { "time": "2026-02-02" } + "urlParameters": { "time": "2026-02-04" } }, "layerParameters": { "opacity": 1 }, "description": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ." @@ -279,7 +279,7 @@ "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "maxZoom": 9, "minZoom": 0, - "urlParameters": { "time": "2026-02-02" } + "urlParameters": { "time": "2026-02-04" } }, "layerParameters": { "opacity": 1 }, "description": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ." @@ -294,7 +294,7 @@ "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "maxZoom": 9, "minZoom": 0, - "urlParameters": { "time": "2026-02-02" } + "urlParameters": { "time": "2026-02-04" } }, "layerParameters": { "opacity": 1 }, "description": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ." @@ -309,7 +309,7 @@ "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "maxZoom": 9, "minZoom": 0, - "urlParameters": { "time": "2026-02-02" } + "urlParameters": { "time": "2026-02-04" } }, "layerParameters": { "opacity": 1 }, "description": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ." @@ -785,7 +785,7 @@ "minZoom": 0, "urlParameters": {} }, - "layerParameters": { "opacity": 1 }, + "layerParameters": { "opacity": 1, "symbologyState": {} }, "description": "\u00a9 Geologic data \u00a9 Macrostrat vector layer (CC\u2011BY 4.0)" } } diff --git a/packages/base/layer_gallery_generator.py b/packages/base/layer_gallery_generator.py index 2aaef235d..42640f3e2 100644 --- a/packages/base/layer_gallery_generator.py +++ b/packages/base/layer_gallery_generator.py @@ -219,7 +219,11 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters file_path = download_thumbnail( url_template, provider_key, position, tile_size, **url_parameters ) - + if provider_value["layerType"] == "VectorTileLayer": + layerParameters = {"opacity": 1, "symbologyState": {}} + else: + layerParameters = {"opacity": 1 + } provider_gallery[provider_key] = { "thumbnailPath": file_path, "name": provider_key, @@ -232,9 +236,10 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters "minZoom": xyzprovider.get("min_zoom") or 0, "urlParameters": dict_keys_to_camel(url_template), }, - "layerParameters": {"opacity": 1}, + "layerParameters": layerParameters, } + elif config_is_flat and not xyz_is_flat: providers_maps = {} @@ -253,7 +258,12 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters file_path = download_thumbnail( url_template, name, position, tile_size, **url_parameters ) - + + if provider_value["layerType"] == "VectorTileLayer": + layerParameters = {"opacity": 1, "symbologyState": {}} + else: + layerParameters = {"opacity": 1} + providers_maps[map_name] = { "thumbnailPath": file_path, "name": provider_key + "." + map_name, @@ -266,10 +276,10 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters "minZoom": tile_provider.get("min_zoom") or 0, "urlParameters": dict_keys_to_camel(url_parameters), }, - "layerParameters": {"opacity": 1}, + "layerParameters": layerParameters, "description": tile_provider.get("attribution"), } - + provider_gallery[provider_key] = providers_maps elif not config_is_flat and not xyz_is_flat: @@ -290,6 +300,11 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters file_path = download_thumbnail( url_template, name, position, tile_size, **url_parameters ) + + if map_config["layerType"] == "VectorTileLayer": + layerParameters = {"opacity": 1, "symbologyState": {}} + else: + layerParameters = {"opacity": 1} providers_maps[map_name] = { "thumbnailPath": file_path, @@ -303,9 +318,10 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters "minZoom": tile_provider.get("min_zoom") or 0, "urlParameters": dict_keys_to_camel(url_parameters), }, - "layerParameters": {"opacity": 1}, + "layerParameters": layerParameters, "description": tile_provider.get("attribution"), } + provider_gallery[provider_key] = providers_maps diff --git a/packages/schema/src/schema/project/layers/vectorTileLayer.json b/packages/schema/src/schema/project/layers/vectorTileLayer.json index 1fd9cc6fb..61b463706 100644 --- a/packages/schema/src/schema/project/layers/vectorTileLayer.json +++ b/packages/schema/src/schema/project/layers/vectorTileLayer.json @@ -20,6 +20,44 @@ "multipleOf": 0.1, "minimum": 0, "maximum": 1 + }, + "symbologyState": { + "type": "object", + "description": "The state of the symbology panel options", + "required": ["renderType"], + "properties": { + "renderType": { + "type": "string", + "enum": ["Single Symbol", "Graduated", "Categorized"] + }, + "value": { + "type": "string" + }, + "method": { + "type": "string", + "enum": ["color", "radius"] + }, + "colorRamp": { + "type": "string", + "default": "viridis" + }, + "nClasses": { + "type": "string", + "default": "9" + }, + "mode": { + "type": "string", + "default": "equal interval", + "enum": [ + "quantile", + "equal interval", + "jenks", + "pretty", + "logarithmic" + ] + } + }, + "additionalProperties": false } } } From 93b6bc02e47884e1c92ae316f0b76f38d77f6e54 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 22:18:50 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- packages/base/layer_gallery_generator.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/base/layer_gallery_generator.py b/packages/base/layer_gallery_generator.py index 42640f3e2..8eec3f42b 100644 --- a/packages/base/layer_gallery_generator.py +++ b/packages/base/layer_gallery_generator.py @@ -222,8 +222,7 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters if provider_value["layerType"] == "VectorTileLayer": layerParameters = {"opacity": 1, "symbologyState": {}} else: - layerParameters = {"opacity": 1 - } + layerParameters = {"opacity": 1} provider_gallery[provider_key] = { "thumbnailPath": file_path, "name": provider_key, @@ -239,7 +238,6 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters "layerParameters": layerParameters, } - elif config_is_flat and not xyz_is_flat: providers_maps = {} @@ -258,12 +256,12 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters file_path = download_thumbnail( url_template, name, position, tile_size, **url_parameters ) - + if provider_value["layerType"] == "VectorTileLayer": layerParameters = {"opacity": 1, "symbologyState": {}} else: - layerParameters = {"opacity": 1} - + layerParameters = {"opacity": 1} + providers_maps[map_name] = { "thumbnailPath": file_path, "name": provider_key + "." + map_name, @@ -279,7 +277,7 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters "layerParameters": layerParameters, "description": tile_provider.get("attribution"), } - + provider_gallery[provider_key] = providers_maps elif not config_is_flat and not xyz_is_flat: @@ -300,11 +298,11 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters file_path = download_thumbnail( url_template, name, position, tile_size, **url_parameters ) - + if map_config["layerType"] == "VectorTileLayer": layerParameters = {"opacity": 1, "symbologyState": {}} else: - layerParameters = {"opacity": 1} + layerParameters = {"opacity": 1} providers_maps[map_name] = { "thumbnailPath": file_path, @@ -321,7 +319,6 @@ def download_thumbnail(url_template, name, position, tile_size, **url_parameters "layerParameters": layerParameters, "description": tile_provider.get("attribution"), } - provider_gallery[provider_key] = providers_maps