Coverage for gws-app/gws/gis/render/_test.py: 100%
83 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 22:59 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 22:59 +0200
1"""Tests for the render module."""
3import gws
4import gws.test.util as u
5import gws.gis.render as render
6import gws.lib.crs
7import gws.lib.image
10def test_map_view_from_center():
11 size = (400.0, 400.0, gws.Uom.px)
12 center = (100.0, 500.0)
13 crs = gws.lib.crs.WGS84
14 dpi = 1000
15 rotation = 0
16 assert render.map_view_from_center(size, center, crs, dpi, rotation).dpi == 1000
17 assert render.map_view_from_center(size, center, crs, dpi, rotation).pxSize == (400.0, 400.0)
18 assert render.map_view_from_center(size, center, crs, dpi, rotation).rotation == 0
19 assert render.map_view_from_center(size, center, crs, dpi, rotation).mmSize == (10.16, 10.16)
20 assert render.map_view_from_center(size, center, crs, dpi, rotation).center == (100.0, 500.0)
21 assert render.map_view_from_center(size, center, crs, dpi, rotation).scale == 0
22 assert render.map_view_from_center(size, center, crs, dpi, rotation).bounds.crs == crs
23 assert render.map_view_from_center(size, center, crs, dpi, rotation).bounds.extent == (100.0, 500.0, 100.0, 500.0)
26def test_map_view_from_bbox():
27 size = (400.0, 400.0, gws.Uom.px)
28 bbox = (100.0, 100.0, 500.0, 500.0)
29 crs = gws.lib.crs.WGS84
30 dpi = 1000
31 rotation = 0
32 assert render.map_view_from_bbox(size, bbox, crs, dpi, rotation).dpi == 1000
33 assert render.map_view_from_bbox(size, bbox, crs, dpi, rotation).rotation == 0
34 assert render.map_view_from_bbox(size, bbox, crs, dpi, rotation).pxSize == (400.0, 400.0)
35 assert render.map_view_from_bbox(size, bbox, crs, dpi, rotation).mmSize == (10.16, 10.16)
36 assert render.map_view_from_bbox(size, bbox, crs, dpi, rotation).center == (300.0, 300.0)
37 assert render.map_view_from_bbox(size, bbox, crs, dpi, rotation).scale == 3571
38 assert render.map_view_from_bbox(size, bbox, crs, dpi, rotation).bounds.crs == crs
39 assert render.map_view_from_bbox(size, bbox, crs, dpi, rotation).bounds.extent == (100.0, 100.0, 500.0, 500.0)
42# is it a mapping from the map to px?
43def test_map_view_transformer():
44 size = (400.0, 400.0, gws.Uom.px)
45 bbox = (100.0, 100.0, 500.0, 500.0)
46 crs = gws.lib.crs.WGS84
47 dpi = 1000
48 rotation = 0
49 mv = render.map_view_from_bbox(size, bbox, crs, dpi, rotation)
50 f = render.map_view_transformer(mv)
51 assert f(1, 2) == (-1091, 5490)
54def test_map_view_transformer_rotated():
55 size = (400.0, 400.0, gws.Uom.px)
56 bbox = (100.0, 100.0, 500.0, 500.0)
57 crs = gws.lib.crs.WGS84
58 dpi = 1000
59 rotation = 45
60 mv = render.map_view_from_bbox(size, bbox, crs, dpi, rotation)
61 f = render.map_view_transformer(mv)
62 assert f(1, 2) == (-2449, 2197)
65def test_render_map_mm_bbox():
66 layer = gws.Layer
67 layer.opacity = 0.5
69 p1 = gws.MapRenderInputPlane(layer=layer)
70 p2 = gws.MapRenderInputPlane(layer=layer)
71 p3 = gws.MapRenderInputPlane(layer=layer)
73 mri = gws.MapRenderInput(
74 backgroundColor=0,
75 bbox=(100, 100, 300, 300),
76 crs=gws.lib.crs.WGS84,
77 dpi=1000,
78 mapSize=(200, 200, gws.Uom.mm),
79 # notify = print('callable'),
80 planes=[p1, p2, p3],
81 rotation=0,
82 scale=100,
83 )
85 assert render.render_map(mri).__str__() == (
86 "{'planes': [], 'view': {'dpi': 96, 'rotation': 0, 'mmSize': (200, 200), "
87 "'pxSize': (755.9055118110236, 755.9055118110236), 'bounds': {'crs': "
88 "<crs:4326>, 'extent': (100, 100, 300, 300)}, 'center': (200.0, 200.0), "
89 "'scale': 944}}"
90 )
93def test_render_map_px_center():
94 layer = gws.Layer
95 layer.opacity = 0.5
97 p1 = gws.MapRenderInputPlane(layer=layer)
98 p2 = gws.MapRenderInputPlane(layer=layer)
99 p3 = gws.MapRenderInputPlane(layer=layer)
101 mri = gws.MapRenderInput(
102 backgroundColor=0,
103 center=(150, 150),
104 crs=gws.lib.crs.WGS84,
105 dpi=1000,
106 mapSize=(200, 200, gws.Uom.px),
107 # notify = print('callable'),
108 planes=[p1, p2, p3],
109 rotation=0,
110 scale=100,
111 )
113 assert render.render_map(mri).__str__() == (
114 "{'planes': [], 'view': {'dpi': 96, 'rotation': 0, 'pxSize': (200, 200), "
115 "'mmSize': (52.916666666666664, 52.916666666666664), 'center': (150, 150), "
116 "'scale': 100, 'bounds': {'crs': <crs:4326>, 'extent': (147.35416666666666, "
117 '147.35416666666666, 152.64583333333334, 152.64583333333334)}}}'
118 )
121def test_output_to_html_element():
122 p1 = gws.MapRenderOutputPlane()
123 p2 = gws.MapRenderOutputPlane()
124 p3 = gws.MapRenderOutputPlane()
126 mv = gws.MapView(mmSize=(200, 200))
127 mro = gws.MapRenderOutput(view=mv, planes=[p1, p2, p3])
128 h = render.output_to_html_element(mro).to_string()
129 assert u.fxml(h) == u.fxml("""
130 <div style="position:relative;overflow:hidden;left:0;top:0;width:200mm;height:200mm">
131 <img/>
132 </div>
133 """)
136def test_output_to_html_string():
137 p1 = gws.MapRenderOutputPlane()
138 p2 = gws.MapRenderOutputPlane()
139 p3 = gws.MapRenderOutputPlane()
141 mv = gws.MapView(mmSize=(200, 200))
142 mro = gws.MapRenderOutput(view=mv, planes=[p1, p2, p3])
143 h = render.output_to_html_string(mro)
144 assert u.fxml(h)== u.fxml("""
145 <div style="position:relative;overflow:hidden;left:0;top:0;width:200mm;height:200mm">
146 <img/>
147 </div>
148 """)