Coverage for gws-app/gws/plugin/geojson/layer.py: 0%
38 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
1"""GeoJSON layer"""
3import gws
4import gws.base.layer
5import gws.base.shape
6import gws.config.util
7import gws.gis.bounds
8import gws.gis.crs
9import gws.lib.jsonx
11from . import provider
13gws.ext.new.layer('geojson')
16class Config(gws.base.layer.Config):
17 """GeoJson layer"""
19 provider: provider.Config
20 """geojson provider"""
23class Object(gws.base.layer.vector.Object):
24 path: str
25 serviceProvider: provider.Object
26 features: list[gws.Feature]
28 def configure(self):
29 self.configure_layer()
30 for rec in self.serviceProvider.get_records():
31 if rec.shape:
32 self.geometryType = rec.shape.type
33 self.geometryCrs = rec.shape.crs
34 break
36 def configure_provider(self):
37 return gws.config.util.configure_service_provider_for(self, provider.Object)
39 def configure_bounds(self):
40 if super().configure_bounds():
41 return True
42 recs = self.serviceProvider.get_records()
43 if recs:
44 bs = [rec.shape.bounds() for rec in recs if rec.shape]
45 if bs:
46 self.bounds = gws.gis.bounds.transform(gws.gis.bounds.union(bs), self.mapCrs)
47 return True
49 def configure_models(self):
50 return gws.config.util.configure_models_for(self, with_default=True)
52 def create_model(self, cfg):
53 return self.create_child(
54 gws.ext.object.model,
55 cfg,
56 type=self.extType,
57 _defaultProvider=self.serviceProvider
58 )