Coverage for gws-app/gws/gis/render/_test.py: 0%

81 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-17 01:37 +0200

1"""Tests for the render module.""" 

2 

3import gws 

4import gws.test.util as u 

5import gws.gis.render as render 

6import gws.gis.crs 

7import gws.lib.image 

8 

9 

10def test_map_view_from_center(): 

11 size = (400.0, 400.0, gws.Uom.px) 

12 center = (100.0, 500.0) 

13 crs = gws.gis.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) 

24 

25 

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.gis.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) 

40 

41 

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.gis.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) 

52 

53 

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.gis.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) 

63 

64 

65def test_render_map_mm_bbox(): 

66 layer = gws.Layer 

67 layer.opacity = 0.5 

68 

69 p1 = gws.MapRenderInputPlane(layer=layer) 

70 p2 = gws.MapRenderInputPlane(layer=layer) 

71 p3 = gws.MapRenderInputPlane(layer=layer) 

72 

73 mri = gws.MapRenderInput( 

74 backgroundColor=0, 

75 bbox=(100, 100, 300, 300), 

76 crs=gws.gis.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 

84 assert render.render_map(mri).__str__() == ( 

85 "{'planes': [], 'view': {'dpi': 96, 'rotation': 0, 'mmSize': (200, 200), " 

86 "'pxSize': (755.9055118110236, 755.9055118110236), 'bounds': {'crs': " 

87 "<crs:4326>, 'extent': (100, 100, 300, 300)}, 'center': (200.0, 200.0), " 

88 "'scale': 944}}") 

89 

90 

91def test_render_map_px_center(): 

92 layer = gws.Layer 

93 layer.opacity = 0.5 

94 

95 p1 = gws.MapRenderInputPlane(layer=layer) 

96 p2 = gws.MapRenderInputPlane(layer=layer) 

97 p3 = gws.MapRenderInputPlane(layer=layer) 

98 

99 mri = gws.MapRenderInput( 

100 backgroundColor=0, 

101 center=(150, 150), 

102 crs=gws.gis.crs.WGS84, 

103 dpi=1000, 

104 mapSize=(200, 200, gws.Uom.px), 

105 # notify = print('callable'), 

106 planes=[p1, p2, p3], 

107 rotation=0, 

108 scale=100) 

109 

110 assert render.render_map(mri).__str__() == ( 

111 "{'planes': [], 'view': {'dpi': 96, 'rotation': 0, 'pxSize': (200, 200), " 

112 "'mmSize': (52.916666666666664, 52.916666666666664), 'center': (150, 150), " 

113 "'scale': 100, 'bounds': {'crs': <crs:4326>, 'extent': (147.35416666666666, " 

114 '147.35416666666666, 152.64583333333334, 152.64583333333334)}}}') 

115 

116 

117def test_output_to_html_element(): 

118 p1 = gws.MapRenderOutputPlane() 

119 p2 = gws.MapRenderOutputPlane() 

120 p3 = gws.MapRenderOutputPlane() 

121 

122 mv = gws.MapView(mmSize=(200, 200)) 

123 mro = gws.MapRenderOutput(view=mv, planes=[p1, p2, p3]) 

124 

125 assert render.output_to_html_element(mro).to_string() == u.fxml('<div ' 

126 'style="position:relative;overflow:hidden;left:0;top:0;width:200mm;height:200mm">' 

127 '<img/></div>') 

128 

129 

130def test_output_to_html_string(): 

131 p1 = gws.MapRenderOutputPlane() 

132 p2 = gws.MapRenderOutputPlane() 

133 p3 = gws.MapRenderOutputPlane() 

134 

135 mv = gws.MapView(mmSize=(200, 200)) 

136 mro = gws.MapRenderOutput(view=mv, planes=[p1, p2, p3]) 

137 

138 assert render.output_to_html_string(mro) == u.fxml('<div ' 

139 'style="position:relative;overflow:hidden;left:0;top:0;width:200mm;height:200mm">' 

140 '<img/></div>')