Skip to content

Commit

Permalink
Add support for MVT external layers
Browse files Browse the repository at this point in the history
  • Loading branch information
manisandro committed Dec 11, 2023
1 parent 9b3dee7 commit 41f851e
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
19 changes: 18 additions & 1 deletion src/config_generator/external_layer_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,13 @@ def getWmsRequestUrl(WMS_Capabilities, reqType, urlObj):
def resolve_external_layer(resource, logger, crs=None):
cpos = resource.find(':')
hpos = resource.rfind('#')
if hpos == -1:
hpos = len(resource) - 1
urlend = hpos + 1
else:
urlend = hpos
type = resource[0:cpos]
url = resource[cpos+1:hpos]
url = resource[cpos+1:urlend]
layername = resource[hpos+1:]
if type == "wms":
infoFormat = ""
Expand All @@ -65,6 +70,8 @@ def resolve_external_layer(resource, logger, crs=None):
params = dict(urllib.parse.parse_qsl(urlobj.query))
crs = params.get('crs', 'EPSG:3857')
return get_external_wmts_layer(resource, url, layername, crs, logger)
elif type == "mvt":
return get_extermal_mvt_layer(resource, url, layername)
else:
logger.warn("Unknown external layer: %s" % resource)
return None
Expand Down Expand Up @@ -337,3 +344,13 @@ def get_external_wmts_layer(resource, capabilitiesUrl, layerName, crs, logger):
"abstract": abstract,
"attribution": attribution
}

def get_extermal_mvt_layer(resource, urls, tilegridname):
url, styleurl = urls.split("|")
return {
"name": resource,
"type": "mvt",
"url": url,
"style": styleurl,
"tileGridName": tilegridname
}
2 changes: 1 addition & 1 deletion src/config_generator/map_viewer_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -747,7 +747,7 @@ def collect_layers(self, layer, search_layers, level, collapseBelowLevel, extern
# dataUrl
if 'dataUrl' in layer:
item_layer['dataUrl'] = layer.get('dataUrl', '')
if item_layer["dataUrl"].startswith("wms:") or item_layer["dataUrl"].startswith("wmts:"):
if item_layer["dataUrl"].startswith("wms:") or item_layer["dataUrl"].startswith("wmts:") or item_layer["dataUrl"].startswith("mvt:"):
externalLayers.append({"internalLayer": layer['name'], "name": item_layer["dataUrl"]})
item_layer["dataUrl"] = ""

Expand Down

0 comments on commit 41f851e

Please # to comment.