Source code for gws.ext.ows.provider.wfs.search

import gws.common.search.provider
import gws.gis.shape
import gws.gis.ows
import gws.gis.source

import gws.types as t

from . import provider, util


[docs]class Config(gws.common.search.provider.Config, util.WfsServiceConfig): pass
[docs]class Object(gws.common.search.provider.Object):
[docs] def configure(self): super().configure() # @TODO support filters self.capabilties = gws.common.search.provider.CAPS_GEOMETRY layer = self.var('layer') if layer: self.provider: provider.Object = layer.provider self.source_layers = layer.source_layers self.url = layer.url else: self.provider: provider.Object = gws.gis.ows.shared_provider(provider.Object, self, self.config) self.source_layers = gws.gis.source.filter_layers( self.provider.source_layers, self.var('sourceLayers')) if not self.source_layers: raise gws.Error(f'no source layers found for {self.uid!r}') self.url = self.var('url')
[docs] def can_run(self, args): return super().can_run(args) and self.provider.operation('GetFeature')
[docs] def run(self, layer: t.ILayer, args: t.SearchArgs) -> t.List[t.IFeature]: args.source_layer_names = [sl.name for sl in self.source_layers] args.tolerance = args.tolerance or self.tolerance return self.provider.find_features(args)