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
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +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.lib.metadata
11import gws.gis.crs
12import gws.gis.source
13import gws.gis.zoom
14import gws.gis.bounds
15import gws.gis.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
48 self.configure_source_layers()
49 return True
51 def configure_source_layers(self):
52 return gws.config.util.configure_source_layers_for(self, self.serviceProvider.sourceLayers)
54 def configure_models(self):
55 return gws.config.util.configure_models_for(self, with_default=True)
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 )
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
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
79 def configure_search(self):
80 if super().configure_search():
81 return True
82 self.finders.append(self.create_finder(None))
83 return True
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 )