25
25
QgsVectorLayer ,
26
26
QgsLayout ,
27
27
QgsProject ,
28
- QgsMultiBandColorRenderer )
28
+ QgsMultiBandColorRenderer ,
29
+ QgsFillSymbol ,
30
+ QgsSingleSymbolRenderer ,
31
+ QgsCoordinateReferenceSystem )
29
32
30
33
from qgis .testing import start_app , unittest
31
34
from utilities import unitTestDataPath
@@ -95,7 +98,7 @@ def testOverviewMap(self):
95
98
myTestResult , myMessage = checker .testLayout ()
96
99
self .report += checker .report ()
97
100
self .layout .removeLayoutItem (overviewMap )
98
- assert myTestResult , myMessage
101
+ self . assertTrue ( myTestResult , myMessage )
99
102
100
103
def testOverviewMapBlend (self ):
101
104
overviewMap = QgsLayoutItemMap (self .layout )
@@ -115,7 +118,7 @@ def testOverviewMapBlend(self):
115
118
myTestResult , myMessage = checker .testLayout ()
116
119
self .report += checker .report ()
117
120
self .layout .removeLayoutItem (overviewMap )
118
- assert myTestResult , myMessage
121
+ self . assertTrue ( myTestResult , myMessage )
119
122
120
123
def testOverviewMapInvert (self ):
121
124
overviewMap = QgsLayoutItemMap (self .layout )
@@ -135,7 +138,7 @@ def testOverviewMapInvert(self):
135
138
myTestResult , myMessage = checker .testLayout ()
136
139
self .report += checker .report ()
137
140
self .layout .removeLayoutItem (overviewMap )
138
- assert myTestResult , myMessage
141
+ self . assertTrue ( myTestResult , myMessage )
139
142
140
143
def testOverviewMapCenter (self ):
141
144
overviewMap = QgsLayoutItemMap (self .layout )
@@ -156,7 +159,63 @@ def testOverviewMapCenter(self):
156
159
myTestResult , myMessage = checker .testLayout ()
157
160
self .report += checker .report ()
158
161
self .layout .removeLayoutItem (overviewMap )
159
- assert myTestResult , myMessage
162
+ self .assertTrue (myTestResult , myMessage )
163
+
164
+ def testAsMapLayer (self ):
165
+ l = QgsLayout (QgsProject .instance ())
166
+ l .initializeDefaults ()
167
+ map = QgsLayoutItemMap (l )
168
+ map .attemptSetSceneRect (QRectF (20 , 20 , 200 , 100 ))
169
+ l .addLayoutItem (map )
170
+
171
+ overviewMap = QgsLayoutItemMap (l )
172
+ overviewMap .attemptSetSceneRect (QRectF (20 , 130 , 70 , 70 ))
173
+ l .addLayoutItem (overviewMap )
174
+ # zoom in
175
+ myRectangle = QgsRectangle (96 , - 152 , 160 , - 120 )
176
+ map .setExtent (myRectangle )
177
+ myRectangle2 = QgsRectangle (0 , - 256 , 256 , 0 )
178
+ overviewMap .setExtent (myRectangle2 )
179
+ overviewMap .overview ().setLinkedMap (map )
180
+
181
+ layer = overviewMap .overview ().asMapLayer ()
182
+ self .assertIsNotNone (layer )
183
+ self .assertTrue (layer .isValid ())
184
+ self .assertEqual ([f .geometry ().asWkt () for f in layer .getFeatures ()], ['Polygon ((96 -120, 160 -120, 160 -152, 96 -152, 96 -120))' ])
185
+
186
+ # check that layer has correct renderer
187
+ fill_symbol = QgsFillSymbol .createSimple ({'color' : '#00ff00' , 'outline_color' : '#ff0000' , 'outline_width' : '10' })
188
+ overviewMap .overview ().setFrameSymbol (fill_symbol )
189
+ layer = overviewMap .overview ().asMapLayer ()
190
+ self .assertIsInstance (layer .renderer (), QgsSingleSymbolRenderer )
191
+ self .assertEqual (layer .renderer ().symbol ().symbolLayer (0 ).properties ()['color' ], '0,255,0,255' )
192
+ self .assertEqual (layer .renderer ().symbol ().symbolLayer (0 ).properties ()['outline_color' ], '255,0,0,255' )
193
+
194
+ # test layer blend mode
195
+ self .assertEqual (layer .blendMode (), QPainter .CompositionMode_SourceOver )
196
+ overviewMap .overview ().setBlendMode (QPainter .CompositionMode_Clear )
197
+ layer = overviewMap .overview ().asMapLayer ()
198
+ self .assertEqual (layer .blendMode (), QPainter .CompositionMode_Clear )
199
+
200
+ # should have no effect
201
+ overviewMap .setMapRotation (45 )
202
+ layer = overviewMap .overview ().asMapLayer ()
203
+ self .assertEqual ([f .geometry ().asWkt () for f in layer .getFeatures ()], ['Polygon ((96 -120, 160 -120, 160 -152, 96 -152, 96 -120))' ])
204
+
205
+ map .setMapRotation (15 )
206
+ layer = overviewMap .overview ().asMapLayer ()
207
+ self .assertEqual ([f .geometry ().asWkt (0 ) for f in layer .getFeatures ()], ['Polygon ((93 -129, 155 -112, 163 -143, 101 -160, 93 -129))' ])
208
+
209
+ # with reprojection
210
+ map .setCrs (QgsCoordinateReferenceSystem ('EPSG:3875' ))
211
+ layer = overviewMap .overview ().asMapLayer ()
212
+ self .assertEqual ([f .geometry ().asWkt (0 ) for f in layer .getFeatures ()], ['Polygon ((93 -129, 96 -128, 99 -127, 102 -126, 105 -126, 108 -125, 111 -124, 114 -123, 116 -123, 119 -122, 122 -121, 125 -120, 128 -119, 131 -119, 134 -118, 137 -117, 140 -116, 143 -115, 146 -115, 149 -114, 152 -113, 155 -112, 155 -114, 156 -115, 156 -117, 156 -118, 157 -120, 157 -121, 158 -123, 158 -124, 158 -126, 159 -127, 159 -128, 160 -130, 160 -131, 160 -133, 161 -134, 161 -136, 161 -137, 162 -139, 162 -140, 163 -142, 163 -143, 160 -144, 157 -145, 154 -146, 151 -146, 148 -147, 145 -148, 142 -149, 140 -149, 137 -150, 134 -151, 131 -152, 128 -153, 125 -153, 122 -154, 119 -155, 116 -156, 113 -157, 110 -157, 107 -158, 104 -159, 101 -160, 101 -158, 100 -157, 100 -155, 100 -154, 99 -152, 99 -151, 98 -149, 98 -148, 98 -146, 97 -145, 97 -144, 96 -142, 96 -141, 96 -139, 95 -138, 95 -136, 95 -135, 94 -133, 94 -132, 93 -130, 93 -129))' ])
213
+
214
+ map .setCrs (overviewMap .crs ())
215
+ # with invert
216
+ overviewMap .overview ().setInverted (True )
217
+ layer = overviewMap .overview ().asMapLayer ()
218
+ self .assertEqual ([f .geometry ().asWkt (0 ) for f in layer .getFeatures ()], ['Polygon ((-53 -128, 128 53, 309 -128, 128 -309, -53 -128),(93 -129, 101 -160, 163 -143, 155 -112, 93 -129))' ])
160
219
161
220
162
221
if __name__ == '__main__' :
0 commit comments