|
47 | 47 | QgsSingleBandPseudoColorRenderer, |
48 | 48 | QgsLimitedRandomColorRamp, |
49 | 49 | QgsGradientColorRamp, |
50 | | - QgsHueSaturationFilter) |
| 50 | + QgsHueSaturationFilter, |
| 51 | + QgsCoordinateTransformContext, |
| 52 | + QgsCoordinateReferenceSystem |
| 53 | + ) |
51 | 54 | from utilities import unitTestDataPath |
52 | 55 | from qgis.testing import start_app, unittest |
53 | 56 | from qgis.testing.mocked import get_iface |
@@ -1030,6 +1033,62 @@ def layerToSld(self, layer, properties={}): |
1030 | 1033 | return dom, root, errorMessage |
1031 | 1034 |
|
1032 | 1035 |
|
| 1036 | +class TestQgsRasterLayerTransformContext(unittest.TestCase): |
| 1037 | + |
| 1038 | + def setUp(self): |
| 1039 | + """Prepare tc""" |
| 1040 | + super(TestQgsRasterLayerTransformContext, self).setUp() |
| 1041 | + self.ctx = QgsCoordinateTransformContext() |
| 1042 | + self.ctx.addSourceDestinationDatumTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857), 1234, 1235) |
| 1043 | + self.rpath = os.path.join(unitTestDataPath(), 'landsat.tif') |
| 1044 | + |
| 1045 | + def testTransformContextIsSetInCtor(self): |
| 1046 | + """Test transform context can be set from ctor""" |
| 1047 | + |
| 1048 | + rl = QgsRasterLayer(self.rpath, 'raster') |
| 1049 | + self.assertFalse(rl.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1050 | + |
| 1051 | + options = QgsRasterLayer.LayerOptions(transformContext=self.ctx) |
| 1052 | + rl = QgsRasterLayer(self.rpath, 'raster', 'gdal', options) |
| 1053 | + self.assertTrue(rl.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1054 | + |
| 1055 | + def testTransformContextInheritsFromProject(self): |
| 1056 | + """Test that when a layer is added to a project it inherits its context""" |
| 1057 | + |
| 1058 | + rl = QgsRasterLayer(self.rpath, 'raster') |
| 1059 | + self.assertFalse(rl.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1060 | + |
| 1061 | + p = QgsProject() |
| 1062 | + self.assertFalse(p.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1063 | + p.setTransformContext(self.ctx) |
| 1064 | + self.assertTrue(p.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1065 | + |
| 1066 | + p.addMapLayers([rl]) |
| 1067 | + self.assertTrue(rl.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1068 | + |
| 1069 | + def testTransformContextIsSyncedFromProject(self): |
| 1070 | + """Test that when a layer is synced when project context changes""" |
| 1071 | + |
| 1072 | + rl = QgsRasterLayer(self.rpath, 'raster') |
| 1073 | + self.assertFalse(rl.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1074 | + |
| 1075 | + p = QgsProject() |
| 1076 | + self.assertFalse(p.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1077 | + p.setTransformContext(self.ctx) |
| 1078 | + self.assertTrue(p.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1079 | + |
| 1080 | + p.addMapLayers([rl]) |
| 1081 | + self.assertTrue(rl.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1082 | + |
| 1083 | + # Now change the project context |
| 1084 | + tc2 = QgsCoordinateTransformContext() |
| 1085 | + p.setTransformContext(tc2) |
| 1086 | + self.assertFalse(p.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1087 | + self.assertFalse(rl.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1088 | + p.setTransformContext(self.ctx) |
| 1089 | + self.assertTrue(p.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1090 | + self.assertTrue(rl.transformContext().hasTransform(QgsCoordinateReferenceSystem(4326), QgsCoordinateReferenceSystem(3857))) |
| 1091 | + |
| 1092 | + |
1033 | 1093 | if __name__ == '__main__': |
1034 | 1094 | unittest.main() |
1035 | | -rule |
|
0 commit comments