11
11
__copyright__ = 'Copyright 2020, The QGIS Project'
12
12
13
13
import qgis # NOQA
14
-
14
+ from qgis .PyQt .QtCore import QDir , QSize
15
+ from qgis .PyQt .QtGui import QPainter
16
+ from qgis .PyQt .QtXml import QDomDocument
15
17
from qgis .core import (
16
18
QgsProviderRegistry ,
17
19
QgsPointCloudLayer ,
28
30
QgsMapUnitScale ,
29
31
QgsCoordinateReferenceSystem ,
30
32
QgsDoubleRange ,
31
- QgsPointCloudRenderer
33
+ QgsPointCloudRenderer ,
34
+ QgsMapClippingRegion ,
35
+ QgsGeometry
32
36
)
33
-
34
- from qgis .PyQt .QtCore import QDir , QSize
35
- from qgis .PyQt .QtGui import QPainter
36
- from qgis .PyQt .QtXml import QDomDocument
37
-
38
37
from qgis .testing import start_app , unittest
38
+
39
39
from utilities import unitTestDataPath
40
40
41
41
start_app ()
@@ -77,13 +77,16 @@ def testSetLayer16(self):
77
77
# for this point cloud, we should default to 0-65024 ranges with contrast enhancement
78
78
self .assertEqual (layer .renderer ().redContrastEnhancement ().minimumValue (), 0 )
79
79
self .assertEqual (layer .renderer ().redContrastEnhancement ().maximumValue (), 65535.0 )
80
- self .assertEqual (layer .renderer ().redContrastEnhancement ().contrastEnhancementAlgorithm (), QgsContrastEnhancement .StretchToMinimumMaximum )
80
+ self .assertEqual (layer .renderer ().redContrastEnhancement ().contrastEnhancementAlgorithm (),
81
+ QgsContrastEnhancement .StretchToMinimumMaximum )
81
82
self .assertEqual (layer .renderer ().greenContrastEnhancement ().minimumValue (), 0 )
82
83
self .assertEqual (layer .renderer ().greenContrastEnhancement ().maximumValue (), 65535.0 )
83
- self .assertEqual (layer .renderer ().greenContrastEnhancement ().contrastEnhancementAlgorithm (), QgsContrastEnhancement .StretchToMinimumMaximum )
84
+ self .assertEqual (layer .renderer ().greenContrastEnhancement ().contrastEnhancementAlgorithm (),
85
+ QgsContrastEnhancement .StretchToMinimumMaximum )
84
86
self .assertEqual (layer .renderer ().blueContrastEnhancement ().minimumValue (), 0 )
85
87
self .assertEqual (layer .renderer ().blueContrastEnhancement ().maximumValue (), 65535.0 )
86
- self .assertEqual (layer .renderer ().blueContrastEnhancement ().contrastEnhancementAlgorithm (), QgsContrastEnhancement .StretchToMinimumMaximum )
88
+ self .assertEqual (layer .renderer ().blueContrastEnhancement ().contrastEnhancementAlgorithm (),
89
+ QgsContrastEnhancement .StretchToMinimumMaximum )
87
90
88
91
def testBasic (self ):
89
92
renderer = QgsPointCloudRgbRenderer ()
@@ -131,13 +134,16 @@ def testBasic(self):
131
134
self .assertEqual (rr .redAttribute (), 'r' )
132
135
self .assertEqual (rr .redContrastEnhancement ().minimumValue (), 100 )
133
136
self .assertEqual (rr .redContrastEnhancement ().maximumValue (), 120 )
134
- self .assertEqual (rr .redContrastEnhancement ().contrastEnhancementAlgorithm (), QgsContrastEnhancement .StretchAndClipToMinimumMaximum )
137
+ self .assertEqual (rr .redContrastEnhancement ().contrastEnhancementAlgorithm (),
138
+ QgsContrastEnhancement .StretchAndClipToMinimumMaximum )
135
139
self .assertEqual (rr .greenContrastEnhancement ().minimumValue (), 130 )
136
140
self .assertEqual (rr .greenContrastEnhancement ().maximumValue (), 150 )
137
- self .assertEqual (rr .greenContrastEnhancement ().contrastEnhancementAlgorithm (), QgsContrastEnhancement .StretchToMinimumMaximum )
141
+ self .assertEqual (rr .greenContrastEnhancement ().contrastEnhancementAlgorithm (),
142
+ QgsContrastEnhancement .StretchToMinimumMaximum )
138
143
self .assertEqual (rr .blueContrastEnhancement ().minimumValue (), 170 )
139
144
self .assertEqual (rr .blueContrastEnhancement ().maximumValue (), 190 )
140
- self .assertEqual (rr .blueContrastEnhancement ().contrastEnhancementAlgorithm (), QgsContrastEnhancement .ClipToMinimumMaximum )
145
+ self .assertEqual (rr .blueContrastEnhancement ().contrastEnhancementAlgorithm (),
146
+ QgsContrastEnhancement .ClipToMinimumMaximum )
141
147
142
148
doc = QDomDocument ("testdoc" )
143
149
elem = renderer .save (doc , QgsReadWriteContext ())
@@ -155,13 +161,16 @@ def testBasic(self):
155
161
self .assertEqual (r2 .redAttribute (), 'r' )
156
162
self .assertEqual (r2 .redContrastEnhancement ().minimumValue (), 100 )
157
163
self .assertEqual (r2 .redContrastEnhancement ().maximumValue (), 120 )
158
- self .assertEqual (r2 .redContrastEnhancement ().contrastEnhancementAlgorithm (), QgsContrastEnhancement .StretchAndClipToMinimumMaximum )
164
+ self .assertEqual (r2 .redContrastEnhancement ().contrastEnhancementAlgorithm (),
165
+ QgsContrastEnhancement .StretchAndClipToMinimumMaximum )
159
166
self .assertEqual (r2 .greenContrastEnhancement ().minimumValue (), 130 )
160
167
self .assertEqual (r2 .greenContrastEnhancement ().maximumValue (), 150 )
161
- self .assertEqual (r2 .greenContrastEnhancement ().contrastEnhancementAlgorithm (), QgsContrastEnhancement .StretchToMinimumMaximum )
168
+ self .assertEqual (r2 .greenContrastEnhancement ().contrastEnhancementAlgorithm (),
169
+ QgsContrastEnhancement .StretchToMinimumMaximum )
162
170
self .assertEqual (r2 .blueContrastEnhancement ().minimumValue (), 170 )
163
171
self .assertEqual (r2 .blueContrastEnhancement ().maximumValue (), 190 )
164
- self .assertEqual (r2 .blueContrastEnhancement ().contrastEnhancementAlgorithm (), QgsContrastEnhancement .ClipToMinimumMaximum )
172
+ self .assertEqual (r2 .blueContrastEnhancement ().contrastEnhancementAlgorithm (),
173
+ QgsContrastEnhancement .ClipToMinimumMaximum )
165
174
166
175
def testUsedAttributes (self ):
167
176
renderer = QgsPointCloudRgbRenderer ()
@@ -381,6 +390,38 @@ def testRenderZRange(self):
381
390
TestQgsPointCloudRgbRenderer .report += renderchecker .report ()
382
391
self .assertTrue (result )
383
392
393
+ @unittest .skipIf ('ept' not in QgsProviderRegistry .instance ().providerList (), 'EPT provider not available' )
394
+ def testRenderClipRegion (self ):
395
+ layer = QgsPointCloudLayer (unitTestDataPath () + '/point_clouds/ept/rgb/ept.json' , 'test' , 'ept' )
396
+ self .assertTrue (layer .isValid ())
397
+
398
+ layer .renderer ().setPointSize (2 )
399
+ layer .renderer ().setPointSizeUnit (QgsUnitTypes .RenderMillimeters )
400
+
401
+ mapsettings = QgsMapSettings ()
402
+ mapsettings .setOutputSize (QSize (400 , 400 ))
403
+ mapsettings .setOutputDpi (96 )
404
+ mapsettings .setDestinationCrs (QgsCoordinateReferenceSystem ('EPSG:4326' ))
405
+ mapsettings .setExtent (QgsRectangle (152.977434544 , - 26.663017454 , 152.977424882 , - 26.663009624 ))
406
+ mapsettings .setLayers ([layer ])
407
+
408
+ region = QgsMapClippingRegion (QgsGeometry .fromWkt (
409
+ 'Polygon ((152.97742833685992991 -26.66301088198133584, 152.97742694456141521 -26.66301085776744983, 152.97742676295726483 -26.66301358182974468, 152.97742895431403554 -26.66301349708113833, 152.97742833685992991 -26.66301088198133584))' ))
410
+ region .setFeatureClip (QgsMapClippingRegion .FeatureClippingType .ClipPainterOnly )
411
+ region2 = QgsMapClippingRegion (QgsGeometry .fromWkt (
412
+ 'Polygon ((152.97743215054714483 -26.66301111201326535, 152.97742715037946937 -26.66301116044103736, 152.97742754990858316 -26.66301436878107367, 152.97743264693181686 -26.66301491359353193, 152.97743215054714483 -26.66301111201326535))' ))
413
+ region2 .setFeatureClip (QgsMapClippingRegion .FeatureClippingType .ClipToIntersection )
414
+ mapsettings .addClippingRegion (region )
415
+ mapsettings .addClippingRegion (region2 )
416
+
417
+ renderchecker = QgsMultiRenderChecker ()
418
+ renderchecker .setMapSettings (mapsettings )
419
+ renderchecker .setControlPathPrefix ('pointcloudrenderer' )
420
+ renderchecker .setControlName ('expected_clip_region' )
421
+ result = renderchecker .runTest ('expected_clip_region' )
422
+ TestQgsPointCloudRgbRenderer .report += renderchecker .report ()
423
+ self .assertTrue (result )
424
+
384
425
385
426
if __name__ == '__main__' :
386
427
unittest .main ()
0 commit comments