|
@@ -0,0 +1,117 @@
|
|
|
+"""Test check stability of results from r.terraflow
|
|
|
+@author Stefan Blumentrath, NINA
|
|
|
+"""
|
|
|
+
|
|
|
+import os
|
|
|
+import tempfile
|
|
|
+from grass.gunittest.case import TestCase
|
|
|
+
|
|
|
+class TestTerraflow(TestCase):
|
|
|
+
|
|
|
+ elevation = 'elevation'
|
|
|
+ testdir = os.path.join(tempfile.gettempdir(), 'terraflow_test')
|
|
|
+ teststats = os.path.join(tempfile.gettempdir(), 'terraflow_test_stats.txt')
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def setUpClass(cls):
|
|
|
+ """Use temporary region settings"""
|
|
|
+ cls.use_temp_region()
|
|
|
+ cls.runModule("g.region", flags="p", raster=cls.elevation)
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def tearDownClass(cls):
|
|
|
+ """!Remove the temporary region
|
|
|
+ """
|
|
|
+ cls.del_temp_region()
|
|
|
+
|
|
|
+ def setUp(cls):
|
|
|
+ """Create input data for steady state groundwater flow computation
|
|
|
+ """
|
|
|
+ if not os.path.exists(cls.testdir):
|
|
|
+ os.mkdir(cls.testdir)
|
|
|
+
|
|
|
+ def test_univar_mfd(cls):
|
|
|
+ #compute a steady state groundwater flow
|
|
|
+ cls.assertModule("r.terraflow", overwrite=True, verbose=True,
|
|
|
+ elevation=cls.elevation, filled='terra_flooded',
|
|
|
+ direction='terra_flowdir', swatershed='terra_sink',
|
|
|
+ accumulation='terra_flowaccum', tci='terra_tci',
|
|
|
+ directory=cls.testdir, stats=cls.teststats)
|
|
|
+
|
|
|
+ # Output of r.univar -g
|
|
|
+ terra_flooded_univar="""n=2025000
|
|
|
+null_cells=0
|
|
|
+cells=2025000
|
|
|
+min=55.5787925720215
|
|
|
+max=156.329864501953
|
|
|
+range=100.751071929932
|
|
|
+mean=110.466900511132
|
|
|
+mean_of_abs=110.466900511132
|
|
|
+stddev=20.2568412316924
|
|
|
+variance=410.339616685993
|
|
|
+coeff_var=18.3374758755462
|
|
|
+sum=223695473.535042"""
|
|
|
+
|
|
|
+ terra_flowdir_univar="""n=2025000
|
|
|
+null_cells=0
|
|
|
+cells=2025000
|
|
|
+min=0
|
|
|
+max=255
|
|
|
+range=255
|
|
|
+mean=114.239481481481
|
|
|
+mean_of_abs=114.239481481481
|
|
|
+stddev=84.9304048144913
|
|
|
+variance=7213.17366195336
|
|
|
+coeff_var=74.344179186649
|
|
|
+sum=231334950"""
|
|
|
+
|
|
|
+ terra_sink_univar="""n=2025000
|
|
|
+null_cells=0
|
|
|
+cells=2025000
|
|
|
+min=0
|
|
|
+max=7945
|
|
|
+range=7945
|
|
|
+mean=3716.98878864198
|
|
|
+mean_of_abs=3716.98878864198
|
|
|
+stddev=2352.78190064133
|
|
|
+variance=5535582.67198542
|
|
|
+coeff_var=63.2980628790363
|
|
|
+sum=7526902297"""
|
|
|
+
|
|
|
+ terra_flowaccum_univar="""n=2025000
|
|
|
+null_cells=0
|
|
|
+cells=2025000
|
|
|
+min=1
|
|
|
+max=638570.4375
|
|
|
+range=638569.4375
|
|
|
+mean=644.701550164795
|
|
|
+mean_of_abs=644.701550164795
|
|
|
+stddev=10616.1468932394
|
|
|
+variance=112702574.858836
|
|
|
+coeff_var=1646.67618536449
|
|
|
+sum=1305520639.08371"""
|
|
|
+
|
|
|
+ terra_tci_univar="""n=2025000
|
|
|
+null_cells=0
|
|
|
+cells=2025000
|
|
|
+min=1.07463788986206
|
|
|
+max=16.7091903686523
|
|
|
+range=15.6345524787903
|
|
|
+mean=4.11934358476421
|
|
|
+mean_of_abs=4.11934358476421
|
|
|
+stddev=1.97140337926634
|
|
|
+variance=3.88643128378274
|
|
|
+coeff_var=47.8572213922083
|
|
|
+sum=8341670.75914752"""
|
|
|
+
|
|
|
+ #cls.assertRasterFitsUnivar(raster="terra_flooded", reference=terra_flooded_univar, precision=3)
|
|
|
+ cls.assertRasterFitsUnivar(raster="terra_flowdir", reference=terra_flowdir_univar, precision=3)
|
|
|
+ cls.assertRasterFitsUnivar(raster="terra_sink", reference=terra_sink_univar, precision=3)
|
|
|
+ cls.assertRasterFitsUnivar(raster="terra_flowaccum", reference=terra_flowaccum_univar, precision=3)
|
|
|
+ cls.assertRasterFitsUnivar(raster="terra_tci", reference=terra_tci_univar, precision=3)
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ from grass.gunittest.main import test
|
|
|
+ test()
|
|
|
+
|
|
|
+
|