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

1"""GeoJSON layer""" 

2 

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 

10 

11from . import provider 

12 

13gws.ext.new.layer('geojson') 

14 

15 

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

17 """GeoJson layer""" 

18 

19 provider: provider.Config 

20 """geojson provider""" 

21 

22 

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

24 path: str 

25 serviceProvider: provider.Object 

26 features: list[gws.Feature] 

27 

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 

35 

36 def configure_provider(self): 

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

38 

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 

48 

49 def configure_models(self): 

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

51 

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 )