Coverage for gws-app/gws/plugin/ows_client/wfs/caps.py: 0%
19 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1import gws
2import gws.base.ows.client
3import gws.gis.crs
4import gws.base.ows.client.parseutil as u
5import gws.gis.source
6import gws.lib.xmlx as xmlx
9# @TODO check support caps (we need at least BBOX)
11def parse(xml) -> gws.OwsCapabilities:
12 caps_el = xmlx.from_string(xml, compact_whitespace=True, remove_namespaces=True)
13 source_layers = gws.gis.source.check_layers(
14 _feature_type(el) for el in caps_el.findall('FeatureTypeList/FeatureType'))
15 return gws.OwsCapabilities(
16 metadata=u.service_metadata(caps_el),
17 operations=u.service_operations(caps_el),
18 sourceLayers=source_layers,
19 version=caps_el.get('version'))
22def _feature_type(type_el):
23 sl = gws.SourceLayer()
25 sl.name = type_el.textof('Name')
26 sl.title = type_el.textof('Title') or xmlx.namespace.unqualify_name(sl.name)
27 sl.metadata = u.element_metadata(type_el)
28 sl.isQueryable = True
29 sl.supportedCrs = u.supported_crs(type_el) or [gws.gis.crs.WGS84]
30 sl.wgsExtent = u.wgs_extent(type_el) or gws.gis.crs.WGS84.extent
32 return sl