Skip to content

Commit 5ef5354

Browse files
authored
Merge pull request #101 from benoitblanc/fix/external_wmts_get_crs
Support CRS in URL params for external WMTS layers
1 parent 8160d47 commit 5ef5354

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/config_generator/external_layer_utils.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,26 @@ def get_external_wms_layer(resource, url, layerName, infoFormat, logger, timeout
232232
}
233233

234234

235-
def get_external_wmts_layer(resource, capabilitiesUrl, layerName, crs, logger, timeout, use_cached_project_metadata, cache_dir):
235+
def get_external_wmts_layer(resource, url, layerName, crs, logger, timeout, use_cached_project_metadata, cache_dir):
236+
237+
urlobj = urllib.parse.urlparse(url)
238+
params = dict(urllib.parse.parse_qsl(urlobj.query))
239+
240+
version = "1.0.0"
241+
for key in list(params.keys()):
242+
if key.lower() == "version":
243+
version = params[key]
244+
del params[key]
245+
params["VERSION"] = version
246+
# Filter service and request from calledServiceUrl, but keep other parameters
247+
if key.lower() in ["service", "request"]:
248+
del params[key]
249+
250+
urlobj = urlobj._replace(query=urllib.parse.urlencode(params))
251+
252+
params.update({'SERVICE': 'WMTS', 'REQUEST': 'GetCapabilities', 'VERSION': version})
253+
capUrlObj = urlobj._replace(query=urllib.parse.urlencode(params))
254+
capabilitiesUrl = urllib.parse.urlunparse(capUrlObj)
236255

237256
capabilitiesXml = fetch_capabilities(capabilitiesUrl, resource, logger, timeout, use_cached_project_metadata, cache_dir)
238257
if not capabilitiesXml:

src/config_generator/map_viewer_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ def theme_item(self, cfg_item, themes_config, assets_dir, autogenExternalLayers,
523523
if entry["name"].startswith("wmts:"):
524524
urlobj = urllib.parse.urlparse(entry["name"][5:])
525525
params = dict(urllib.parse.parse_qsl(urlobj.query))
526-
params["crs"] = item['mapCrs']
526+
params["crs"] = params.get('crs') or params.get('CRS') or item['mapCrs']
527527
urlobj = urlobj._replace(query=urllib.parse.urlencode(params))
528528
entry["name"] = "wmts:" + urllib.parse.urlunparse(urlobj)
529529

0 commit comments

Comments
 (0)