Coverage for gws-app/gws/plugin/qgis/grabber.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-05 13:35 +0200

1"""Raster grabber for QGIS Server.""" 

2 

3import gws 

4import gws.base.grabber.box 

5 

6from . import provider 

7 

8 

9class Object(gws.base.grabber.box.Object): 

10 """Grabber that renders boxes with GetMap requests to QGIS Server.""" 

11 

12 provider: provider.Object 

13 """QGIS provider.""" 

14 params: dict 

15 """Fixed GetMap parameters, e.g. ``LAYERS`` and ``FILTER``.""" 

16 

17 def __init__(self, opts: gws.base.grabber.Options, provider: provider.Object, params: dict): 

18 """Create the grabber. 

19 

20 Args: 

21 opts: Grabber options. 

22 provider: QGIS provider. 

23 params: Fixed GetMap parameters, merged with per-request parameters. 

24 """ 

25 super().__init__(opts) 

26 self.provider = provider 

27 self.params = params 

28 self.sourceCrs = self.targetCrs 

29 

30 def fetch_box_as_bytes(self, bounds, w, h, params=None): 

31 return self.provider.get_map( 

32 bounds, 

33 w, 

34 h, 

35 gws.u.merge(self.params, params), 

36 ) 

37 

38 def fetch_box_as_image(self, bounds, w, h, params=None): 

39 return self.to_image(self.fetch_box_as_bytes(bounds, w, h, params))