Coverage for gws-app/gws/plugin/ows_client/wfs/flatlayer.py: 0%
61 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 12:46 +0200
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 12:46 +0200
1from typing import Optional
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.base.metadata
11import gws.lib.crs
12import gws.gis.source
13import gws.gis.zoom
14import gws.lib.bounds
15import gws.lib.extent
18from . import provider
20gws.ext.new.layer('wfsflat')
23class Config(gws.base.layer.Config):
24 """Flat WFS layer."""
26 provider: Optional[provider.Config]
27 """WFS provider."""
28 sourceLayers: Optional[gws.gis.source.LayerFilter]
29 """Source layers to use."""
32class Object(gws.base.layer.vector.Object):
33 serviceProvider: provider.Object
34 sourceLayers: list[gws.SourceLayer]
35 sourceCrs: gws.Crs
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')
42 def configure_provider(self):
43 return gws.config.util.configure_service_provider_for(self, provider.Object)
45 def configure_sources(self):
46 if super().configure_sources():
47 return True
49 gws.u.require(self.serviceProvider, 'failed to configure service provider')
51 self.configure_source_layers()
52 return True
54 def configure_source_layers(self):
55 return gws.config.util.configure_source_layers_for(self, self.serviceProvider.sourceLayers)
57 def configure_models(self):
58 return gws.config.util.configure_models_for(self, with_default=True)
60 def create_model(self, cfg):
61 return self.create_child(
62 gws.ext.object.model,
63 cfg,
64 type='wfs',
65 _defaultProvider=self.serviceProvider,
66 _defaultSourceLayers=self.sourceLayers
67 )
69 def configure_bounds(self):
70 if super().configure_bounds():
71 return True
72 self.bounds = gws.gis.source.combined_bounds(self.sourceLayers, self.mapCrs) or self.mapCrs.bounds
73 return True
75 def configure_metadata(self):
76 if super().configure_metadata():
77 return True
78 if len(self.sourceLayers) == 1:
79 self.metadata = self.sourceLayers[0].metadata
80 return True
82 def configure_search(self):
83 if super().configure_search():
84 return True
85 self.finders.append(self.create_finder(None))
86 return True
88 def create_finder(self, cfg):
89 return self.create_child(
90 gws.ext.object.finder,
91 cfg,
92 type='wfs',
93 _defaultProvider=self.serviceProvider,
94 _defaultSourceLayers=self.sourceLayers
95 )