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

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 

7 

8 

9# @TODO check support caps (we need at least BBOX) 

10 

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')) 

20 

21 

22def _feature_type(type_el): 

23 sl = gws.SourceLayer() 

24 

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 

31 

32 return sl