Coverage for gws-app/gws/plugin/ows_client/wfs/flatlayer.py: 0%

60 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-17 01:37 +0200

1from typing import Optional 

2 

3import gws 

4import gws.base.layer 

5import gws.base.legend 

6import gws.base.model 

7import gws.base.search 

8import gws.base.template 

9import gws.config.util 

10import gws.lib.metadata 

11import gws.gis.crs 

12import gws.gis.source 

13import gws.gis.zoom 

14import gws.gis.bounds 

15import gws.gis.extent 

16 

17 

18from . import provider 

19 

20gws.ext.new.layer('wfsflat') 

21 

22 

23class Config(gws.base.layer.Config): 

24 """Flat WFS layer.""" 

25 

26 provider: Optional[provider.Config] 

27 """WFS provider""" 

28 sourceLayers: Optional[gws.gis.source.LayerFilter] 

29 """source layers to use""" 

30 

31 

32class Object(gws.base.layer.vector.Object): 

33 serviceProvider: provider.Object 

34 sourceLayers: list[gws.SourceLayer] 

35 sourceCrs: gws.Crs 

36 

37 def configure(self): 

38 self.configure_layer() 

39 if len(self.sourceLayers) != 1: 

40 raise gws.Error(f'wfsflat requires a single source layer') 

41 

42 def configure_provider(self): 

43 return gws.config.util.configure_service_provider_for(self, provider.Object) 

44 

45 def configure_sources(self): 

46 if super().configure_sources(): 

47 return True 

48 self.configure_source_layers() 

49 return True 

50 

51 def configure_source_layers(self): 

52 return gws.config.util.configure_source_layers_for(self, self.serviceProvider.sourceLayers) 

53 

54 def configure_models(self): 

55 return gws.config.util.configure_models_for(self, with_default=True) 

56 

57 def create_model(self, cfg): 

58 return self.create_child( 

59 gws.ext.object.model, 

60 cfg, 

61 type='wfs', 

62 _defaultProvider=self.serviceProvider, 

63 _defaultSourceLayers=self.sourceLayers 

64 ) 

65 

66 def configure_bounds(self): 

67 if super().configure_bounds(): 

68 return True 

69 self.bounds = gws.gis.source.combined_bounds(self.sourceLayers, self.mapCrs) or self.mapCrs.bounds 

70 return True 

71 

72 def configure_metadata(self): 

73 if super().configure_metadata(): 

74 return True 

75 if len(self.sourceLayers) == 1: 

76 self.metadata = self.sourceLayers[0].metadata 

77 return True 

78 

79 def configure_search(self): 

80 if super().configure_search(): 

81 return True 

82 self.finders.append(self.create_finder(None)) 

83 return True 

84 

85 def create_finder(self, cfg): 

86 return self.create_child( 

87 gws.ext.object.finder, 

88 cfg, 

89 type='wfs', 

90 _defaultProvider=self.serviceProvider, 

91 _defaultSourceLayers=self.sourceLayers 

92 )