|
10 | 10 | __copyright__ = 'Copyright 2023, The QGIS Project'
|
11 | 11 |
|
12 | 12 | import qgis # NOQA
|
| 13 | +import tempfile |
| 14 | +import os |
| 15 | + |
13 | 16 | from qgis.PyQt.QtGui import QColor
|
14 | 17 | from qgis.PyQt.QtTest import QSignalSpy
|
15 | 18 | from qgis.PyQt.QtXml import QDomDocument
|
@@ -55,6 +58,59 @@ def testBasic(self):
|
55 | 58 | self.assertEqual(props2.zScale(), 2)
|
56 | 59 | self.assertEqual(props2.zOffset(), 0.5)
|
57 | 60 |
|
| 61 | + def testCalculateZRange(self): |
| 62 | + with tempfile.TemporaryDirectory() as temp_dir: |
| 63 | + tmp_file = os.path.join(temp_dir, "tileset.json") |
| 64 | + with open(tmp_file, "wt", encoding="utf-8") as f: |
| 65 | + f.write( |
| 66 | + """ |
| 67 | +{ |
| 68 | + "asset": { |
| 69 | + "version": "1.1", |
| 70 | + "tilesetVersion": "e575c6f1" |
| 71 | + }, |
| 72 | + "geometricError": 100, |
| 73 | + "root": { |
| 74 | + "boundingVolume": { |
| 75 | + "region": [ |
| 76 | + -1.3197209591796106, |
| 77 | + 0.6988424218, |
| 78 | + -1.3196390408203893, |
| 79 | + 0.6989055782, |
| 80 | + 1.2, |
| 81 | + 67.00999999999999 |
| 82 | + ] |
| 83 | + }, |
| 84 | + "geometricError": 100, |
| 85 | + "refine": "ADD", |
| 86 | + "children": [] |
| 87 | + } |
| 88 | +}""" |
| 89 | + ) |
| 90 | + |
| 91 | + layer = QgsTiledSceneLayer(tmp_file, "my layer", "cesiumtiles") |
| 92 | + self.assertTrue(layer.dataProvider().isValid()) |
| 93 | + self.assertEqual(layer.dataProvider().zRange().lower(), 1.2) |
| 94 | + self.assertEqual(layer.dataProvider().zRange().upper(), 67.00999999999999) |
| 95 | + |
| 96 | + props = QgsTiledSceneLayerElevationProperties(layer) |
| 97 | + self.assertEqual(props.zScale(), 1.0) |
| 98 | + self.assertEqual(props.zOffset(), 0.0) |
| 99 | + |
| 100 | + z_range = props.calculateZRange(layer) |
| 101 | + self.assertEqual(z_range.lower(), 1.2) |
| 102 | + self.assertEqual(z_range.upper(), 67.00999999999999) |
| 103 | + |
| 104 | + props.setZOffset(10) |
| 105 | + z_range = props.calculateZRange(layer) |
| 106 | + self.assertEqual(z_range.lower(), 11.2) |
| 107 | + self.assertEqual(z_range.upper(), 77.00999999999999) |
| 108 | + |
| 109 | + props.setZScale(2) |
| 110 | + z_range = props.calculateZRange(layer) |
| 111 | + self.assertEqual(z_range.lower(), 12.4) |
| 112 | + self.assertEqual(z_range.upper(), 144.01999999999998) |
| 113 | + |
58 | 114 |
|
59 | 115 | if __name__ == '__main__':
|
60 | 116 | unittest.main()
|
0 commit comments