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 d93024a366f1e1220826c9dd93be3af367273963
parent 6d63fb4fb8e6febe8a0344507b82e91bd72889c9
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Fri, 15 May 2026 23:45:05 +0200

test(qgis): cover outside dem elevation samples

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

diff --git a/test/test_core.py b/test/test_core.py @@ -1268,6 +1268,68 @@ class PluginTests(unittest.TestCase): "LINESTRING Z (1.0 2.0 123.0, 1.0 2.0 118.0)", ) + 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)}) + points = [ + { + "X": 1.0, + "Y": 2.0, + "Z": 100.0, + "Geometry": "POINT Z (1.0 2.0 100.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)", + } + ] + 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)", + } + ] + + with patch("builtins.print") as print_mock: + module._adjust_rows_to_dem( + points, + doi_points, + layers, + raster_layer, + module.QgsCoordinateReferenceSystem("EPSG:25832"), + module.QgsProject.instance(), + ) + + self.assertEqual(points[0]["Z"], 100.0) + self.assertEqual(points[0]["Geometry"], "POINT Z (1.0 2.0 100.0)") + self.assertEqual(doi_points[0]["Z"], 90.0) + self.assertEqual(doi_points[0]["ZDOI"], 90.0) + self.assertEqual(doi_points[0]["Geometry"], "POINT Z (1.0 2.0 90.0)") + self.assertEqual(layers[0]["Z"], 100.0) + self.assertEqual(layers[0]["ZTop"], 100.0) + self.assertEqual(layers[0]["ZMid"], 97.5) + self.assertEqual(layers[0]["ZBottom"], 95.0) + self.assertEqual( + layers[0]["Geometry"], + "LINESTRING Z (1.0 2.0 100.0, 1.0 2.0 95.0)", + ) + print_mock.assert_called_once_with( + "TEM Loader warning: point (1.0, 2.0) is outside DEM raster DEM" + ) + def test_exec_dialog_supports_exec_and_exec_apis(self): module, _, _ = self._import_plugin_module() exec_dialog = Mock()