unittests_temporal_raster3d_algebra.py 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. """!Unit test to register raster maps with absolute and relative
  2. time using tgis.register_maps_in_space_time_dataset()
  3. (C) 2013 by the GRASS Development Team
  4. This program is free software under the GNU General Public
  5. License (>=v2). Read the file COPYING that comes with GRASS
  6. for details.
  7. @author Soeren Gebbert
  8. """
  9. import grass.script
  10. import grass.temporal as tgis
  11. import unittest
  12. import datetime
  13. import os
  14. class TestRegisterFunctions(unittest.TestCase):
  15. @classmethod
  16. def setUpClass(cls):
  17. """!Initiate the temporal GIS and set the region
  18. """
  19. tgis.init(True) # Raise on error instead of exit(1)
  20. grass.script.use_temp_region()
  21. ret = grass.script.run_command("g.region", n=80.0, s=0.0, e=120.0,
  22. w=0.0, t=100.0, b=0.0, res=10.0)
  23. ret += grass.script.run_command("r3.mapcalc", overwrite=True, quiet=True, expression="a1 = 1")
  24. ret += grass.script.run_command("r3.mapcalc", overwrite=True, quiet=True, expression="a2 = 2")
  25. ret += grass.script.run_command("r3.mapcalc", overwrite=True, quiet=True, expression="a3 = 3")
  26. ret += grass.script.run_command("r3.mapcalc", overwrite=True, quiet=True, expression="a4 = 4")
  27. tgis.open_new_space_time_dataset(name="A", type="str3ds", temporaltype="absolute",
  28. title="A", descr="A", semantic="field", overwrite=True)
  29. tgis.register_maps_in_space_time_dataset(type="rast3d", name="A", maps="a1,a2,a3,a4",
  30. start="2001-01-01", increment="1 day", interval=True)
  31. def test_temporal_neighbors_1(self):
  32. """Simple temporal neighborhood computation test"""
  33. tra = tgis.TemporalRaster3DAlgebraParser(run = True, debug = True)
  34. tra.parse(expression='D = A[-1] + A[1]',
  35. basename="d", overwrite=True)
  36. D = tgis.open_old_space_time_dataset("D", type="str3ds")
  37. D.select()
  38. self.assertEqual(D.metadata.get_number_of_maps(), 2)
  39. self.assertEqual(D.metadata.get_min_min(), 4) # 1 + 3
  40. self.assertEqual(D.metadata.get_max_max(), 6) # 2 + 4
  41. start, end = D.get_absolute_time()
  42. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  43. self.assertEqual(end, datetime.datetime(2001, 1, 4))
  44. def test_temporal_neighbors_2(self):
  45. """Simple temporal neighborhood computation test"""
  46. tra = tgis.TemporalRaster3DAlgebraParser(run = True, debug = True)
  47. tra.parse(expression='D = A[0,0,0,-1] + A[0,0,0,1]',
  48. basename="d", overwrite=True)
  49. D = tgis.open_old_space_time_dataset("D", type="str3ds")
  50. D.select()
  51. self.assertEqual(D.metadata.get_number_of_maps(), 2)
  52. self.assertEqual(D.metadata.get_min_min(), 4) # 1 + 3
  53. self.assertEqual(D.metadata.get_max_max(), 6) # 2 + 4
  54. start, end = D.get_absolute_time()
  55. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  56. self.assertEqual(end, datetime.datetime(2001, 1, 4))
  57. def tearDown(self):
  58. ret = grass.script.run_command("t.remove", type="str3ds", flags="rf", input="D", quiet=True)
  59. @classmethod
  60. def tearDownClass(cls):
  61. """!Remove the temporary region
  62. """
  63. ret = grass.script.run_command("t.remove", type="str3ds", flags="rf", input="A", quiet=True)
  64. grass.script.del_temp_region()
  65. if __name__ == '__main__':
  66. unittest.main()