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:
| M | test/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)})