qgis-tem-loader

qgis plugin for loading TEM geophysical inversion XYZ files as 3D objects
git clone git://src.adamsgaard.dk/qgis-tem-loader # fast
git clone https://src.adamsgaard.dk/qgis-tem-loader.git # slow
Log | Files | Refs | README | LICENSE Back to index

commit 27dbde844047f48088ac209a5f9523d9937e38e3
parent 4400f1c45f3fa9997493b4f212cfc5bed5cb2aa8
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Fri, 15 May 2026 23:48:52 +0200

test(qgis): cover per-sounding dem adjustment

Diffstat:
Mtest/test_core.py | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 104 insertions(+), 0 deletions(-)

diff --git a/test/test_core.py b/test/test_core.py @@ -1268,6 +1268,110 @@ class PluginTests(unittest.TestCase): "LINESTRING Z (1.0 2.0 123.0, 1.0 2.0 118.0)", ) + def test_adjust_rows_to_dem_uses_each_sounding_dem_sample(self): + module, _, _ = self._import_plugin_module() + raster_layer = module.FakeRasterLayer( + { + (1.0, 2.0, 1): (123.0, True), + (3.0, 4.0, 1): (200.0, True), + } + ) + points = [ + { + "X": 1.0, + "Y": 2.0, + "Z": 100.0, + "Geometry": "POINT Z (1.0 2.0 100.0)", + }, + { + "X": 3.0, + "Y": 4.0, + "Z": 190.0, + "Geometry": "POINT Z (3.0 4.0 190.0)", + }, + ] + doi_points = [ + { + "X": 1.0, + "Y": 2.0, + "Z": 90.0, + "DOI": 10.0, + "ZDOI": 90.0, + "Geometry": "POINT Z (1.0 2.0 90.0)", + }, + { + "X": 3.0, + "Y": 4.0, + "Z": 182.0, + "DOI": 8.0, + "ZDOI": 182.0, + "Geometry": "POINT Z (3.0 4.0 182.0)", + }, + ] + layers = [ + { + "X": 1.0, + "Y": 2.0, + "Z": 100.0, + "DepthTop": 0.0, + "DepthBottom": 5.0, + "ZTop": 100.0, + "ZMid": 97.5, + "ZBottom": 95.0, + "Geometry": "LINESTRING Z (1.0 2.0 100.0, 1.0 2.0 95.0)", + }, + { + "X": 3.0, + "Y": 4.0, + "Z": 190.0, + "DepthTop": 1.5, + "DepthBottom": 5.0, + "ZTop": 188.5, + "ZMid": 186.75, + "ZBottom": 185.0, + "Geometry": "LINESTRING Z (3.0 4.0 188.5, 3.0 4.0 185.0)", + }, + ] + + module._adjust_rows_to_dem( + points, + doi_points, + layers, + raster_layer, + module.QgsCoordinateReferenceSystem("EPSG:25832"), + module.QgsProject.instance(), + ) + + self.assertEqual([point["Z"] for point in points], [123.0, 200.0]) + self.assertEqual( + [point["Geometry"] for point in points], + ["POINT Z (1.0 2.0 123.0)", "POINT Z (3.0 4.0 200.0)"], + ) + self.assertEqual( + [doi_point["ZDOI"] for doi_point in doi_points], + [113.0, 192.0], + ) + self.assertEqual( + [layer["ZTop"] for layer in layers], + [123.0, 198.5], + ) + self.assertEqual( + [layer["ZMid"] for layer in layers], + [120.5, 196.75], + ) + self.assertEqual( + [layer["ZBottom"] for layer in layers], + [118.0, 195.0], + ) + self.assertEqual( + [layer["Geometry"] for layer in layers], + [ + "LINESTRING Z (1.0 2.0 123.0, 1.0 2.0 118.0)", + "LINESTRING Z (3.0 4.0 198.5, 3.0 4.0 195.0)", + ], + ) + self.assertEqual(len(raster_layer.dataProvider().calls), 2) + def test_adjust_rows_to_dem_warns_and_keeps_original_z_outside_dem(self): module, _, _ = self._import_plugin_module() raster_layer = module.FakeRasterLayer({(1.0, 2.0, 1): (math.nan, False)})