test_accumulation.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. """Test t.rast.accumulate
  2. (C) 2014 by the GRASS Development Team
  3. This program is free software under the GNU General Public
  4. License (>=v2). Read the file COPYING that comes with GRASS
  5. for details.
  6. @author Soeren Gebbert
  7. """
  8. import grass.temporal as tgis
  9. import datetime
  10. from grass.gunittest.case import TestCase
  11. from grass.gunittest.gmodules import SimpleModule
  12. class TestAccumulate(TestCase):
  13. @classmethod
  14. def setUpClass(cls):
  15. """Initiate the temporal GIS and set the region
  16. """
  17. tgis.init(True) # Raise on error instead of exit(1)
  18. cls.use_temp_region()
  19. cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, t=50, res=10, res3=10)
  20. cls.runModule("r.mapcalc", expression="a_1 = 5", overwrite=True)
  21. cls.runModule("r.mapcalc", expression="a_2 = 10", overwrite=True)
  22. cls.runModule("r.mapcalc", expression="a_3 = 20", overwrite=True)
  23. cls.runModule("r.mapcalc", expression="a_4 = 35", overwrite=True)
  24. cls.runModule("r.mapcalc", expression="a_5 = 20", overwrite=True)
  25. cls.runModule("r.mapcalc", expression="a_6 = 10", overwrite=True)
  26. cls.runModule("r.mapcalc", expression="a_7 = 5", overwrite=True)
  27. cls.runModule("r.mapcalc", expression="lower = 10", overwrite=True)
  28. cls.runModule("r.mapcalc", expression="upper = 30", overwrite=True)
  29. cls.runModule("t.create", type="strds", temporaltype="absolute",
  30. output="A", title="A test",
  31. description="A test", overwrite=True)
  32. cls.runModule("t.register", flags="i", type="raster", input="A",
  33. maps="a_1,a_2,a_3,a_4,a_5,a_6,a_7",
  34. start="2001-01-01",
  35. increment="1 day", overwrite=True)
  36. cls.runModule("t.create", type="strds", temporaltype="absolute",
  37. output="Lower", title="Lower",
  38. description="Lower", overwrite=True)
  39. cls.runModule("t.register", type="raster", input="Lower",
  40. maps="lower",
  41. start="2001-01-01",
  42. end="2001-01-10",
  43. overwrite=True)
  44. cls.runModule("t.create", type="strds", temporaltype="absolute",
  45. output="Upper", title="Upper",
  46. description="Upper", overwrite=True)
  47. cls.runModule("t.register", type="raster", input="Upper",
  48. maps="upper",
  49. start="2001-01-01",
  50. end="2001-01-10",
  51. overwrite=True)
  52. @classmethod
  53. def tearDownClass(cls):
  54. """Remove the temporary region
  55. """
  56. cls.runModule("t.remove", flags="rf", type="strds",
  57. inputs="A")
  58. cls.runModule("t.remove", flags="rf", type="strds",
  59. inputs="Lower")
  60. cls.runModule("t.remove", flags="rf", type="strds",
  61. inputs="Upper")
  62. cls.del_temp_region()
  63. def tearDown(self):
  64. """Remove generated data"""
  65. self.runModule("t.remove", flags="rf", type="strds", inputs="B")
  66. def test_1(self):
  67. self.assertModule("t.rast.accumulate", input="A", output="B",
  68. limits=[0,40], method="gdd",
  69. start="2001-01-01", cycle="7 days",
  70. basename="b",
  71. overwrite=True, verbose=True)
  72. D = tgis.open_old_stds("B", type="strds")
  73. self.assertEqual(D.metadata.get_number_of_maps(), 7)
  74. self.assertEqual(D.metadata.get_min_min(), 5)
  75. self.assertEqual(D.metadata.get_max_max(), 105)
  76. start, end = D.get_absolute_time()
  77. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  78. self.assertEqual(end, datetime.datetime(2001, 1, 8))
  79. self.assertEqual( D.check_temporal_topology(), True)
  80. self.assertEqual(D.get_granularity(), u'1 day')
  81. def test_2(self):
  82. self.assertModule("t.rast.accumulate", input="A", output="B",
  83. limits=[10,40], method="gdd",
  84. start="2001-01-01", cycle="7 days",
  85. basename="b",
  86. overwrite=True, verbose=True)
  87. D = tgis.open_old_stds("B", type="strds")
  88. self.assertEqual(D.metadata.get_number_of_maps(), 7)
  89. self.assertEqual(D.metadata.get_min_min(), 0.0)
  90. self.assertEqual(D.metadata.get_max_max(), 45.0)
  91. start, end = D.get_absolute_time()
  92. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  93. self.assertEqual(end, datetime.datetime(2001, 1, 8))
  94. self.assertEqual( D.check_temporal_topology(), True)
  95. self.assertEqual(D.get_granularity(), u'1 day')
  96. def test_3(self):
  97. self.assertModule("t.rast.accumulate", input="A", output="B",
  98. limits=[10,30], method="bedd",
  99. start="2001-01-01", cycle="7 days",
  100. basename="b",
  101. overwrite=True, verbose=True)
  102. D = tgis.open_old_stds("B", type="strds")
  103. self.assertEqual(D.metadata.get_number_of_maps(), 7)
  104. self.assertEqual(D.metadata.get_min_min(), 0.0)
  105. self.assertEqual(D.metadata.get_max_max(), 40.0)
  106. start, end = D.get_absolute_time()
  107. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  108. self.assertEqual(end, datetime.datetime(2001, 1, 8))
  109. self.assertEqual( D.check_temporal_topology(), True)
  110. self.assertEqual(D.get_granularity(), u'1 day')
  111. def test_3_a(self):
  112. self.assertModule("t.rast.accumulate", input="A", output="B",
  113. lower="Lower",
  114. upper="Upper",
  115. limits=[0,40],
  116. method="bedd",
  117. start="2001-01-01", cycle="7 days",
  118. basename="b",
  119. overwrite=True, verbose=True)
  120. D = tgis.open_old_stds("B", type="strds")
  121. self.assertEqual(D.metadata.get_number_of_maps(), 7)
  122. self.assertEqual(D.metadata.get_min_min(), 0.0)
  123. self.assertEqual(D.metadata.get_max_max(), 40.0)
  124. start, end = D.get_absolute_time()
  125. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  126. self.assertEqual(end, datetime.datetime(2001, 1, 8))
  127. self.assertEqual( D.check_temporal_topology(), True)
  128. self.assertEqual(D.get_granularity(), u'1 day')
  129. def test_4(self):
  130. self.assertModule("t.rast.accumulate", input="A", output="B",
  131. limits=[10,30], method="bedd",
  132. start="2001-01-01", cycle="7 days",
  133. basename="b", granularity="2 days",
  134. overwrite=True, verbose=True)
  135. D = tgis.open_old_stds("B", type="strds")
  136. self.assertEqual(D.metadata.get_number_of_maps(), 4)
  137. self.assertEqual(D.metadata.get_min_min(), 0.0)
  138. self.assertEqual(D.metadata.get_max_max(), 22.5)
  139. start, end = D.get_absolute_time()
  140. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  141. self.assertEqual(end, datetime.datetime(2001, 1, 9))
  142. self.assertEqual( D.check_temporal_topology(), True)
  143. self.assertEqual(D.get_granularity(), u'2 days')
  144. def test_4_a(self):
  145. self.assertModule("t.rast.accumulate", input="A", output="B",
  146. lower="Lower",
  147. upper="Upper",
  148. limits=[0,40],
  149. method="bedd",
  150. start="2001-01-01", cycle="7 days",
  151. basename="b", granularity="2 days",
  152. overwrite=True, verbose=True)
  153. D = tgis.open_old_stds("B", type="strds")
  154. self.assertEqual(D.metadata.get_number_of_maps(), 4)
  155. self.assertEqual(D.metadata.get_min_min(), 0.0)
  156. self.assertEqual(D.metadata.get_max_max(), 22.5)
  157. start, end = D.get_absolute_time()
  158. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  159. self.assertEqual(end, datetime.datetime(2001, 1, 9))
  160. self.assertEqual( D.check_temporal_topology(), True)
  161. self.assertEqual(D.get_granularity(), u'2 days')
  162. def test_5(self):
  163. self.assertModule("t.rast.accumulate", input="A", output="B",
  164. limits=[0,40], method="gdd",
  165. start="2001-01-01", cycle="7 days",
  166. basename="b", stop="2001-01-05",
  167. overwrite=True, verbose=True)
  168. D = tgis.open_old_stds("B", type="strds")
  169. self.assertEqual(D.metadata.get_number_of_maps(), 4)
  170. self.assertEqual(D.metadata.get_min_min(), 5)
  171. self.assertEqual(D.metadata.get_max_max(), 70)
  172. start, end = D.get_absolute_time()
  173. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  174. self.assertEqual(end, datetime.datetime(2001, 1, 5))
  175. self.assertEqual( D.check_temporal_topology(), True)
  176. self.assertEqual(D.get_granularity(), u'1 day')
  177. def test_count_suffix(self):
  178. self.assertModule("t.rast.accumulate", input="A", output="B",
  179. limits=[0,40], method="gdd",
  180. start="2001-01-01", cycle="7 days",
  181. basename="b", stop="2001-01-05", suffix="num",
  182. overwrite=True, verbose=True)
  183. self.assertRasterExists('b_00001')
  184. self.assertRasterDoesNotExist('b_2001_01_07')
  185. def test_count3_suffix(self):
  186. self.assertModule("t.rast.accumulate", input="A", output="B",
  187. limits=[0,40], method="gdd",
  188. start="2001-01-01", cycle="7 days",
  189. basename="b", stop="2001-01-05", suffix="num%03",
  190. overwrite=True, verbose=True)
  191. self.assertRasterExists('b_001')
  192. self.assertRasterDoesNotExist('b_2001_01_07')
  193. def test_time_suffix(self):
  194. self.assertModule("t.rast.accumulate", input="A", output="B",
  195. limits=[0,40], method="gdd",
  196. start="2001-01-01", cycle="7 days",
  197. basename="b", stop="2001-01-05", suffix="time",
  198. overwrite=True, verbose=True)
  199. self.assertRasterExists('b_2001_01_01T00_00_00')
  200. if __name__ == '__main__':
  201. from grass.gunittest.main import test
  202. test()