unittests_register.py 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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 as grass
  10. import grass.temporal as tgis
  11. import unittest
  12. import datetime
  13. class TestRegisterFunctions(unittest.TestCase):
  14. @classmethod
  15. def setUpClass(cls):
  16. """!Initiate the temporal GIS and set the region
  17. """
  18. tgis.init()
  19. grass.overwrite = True
  20. grass.use_temp_region()
  21. ret = grass.run_command("g.region", n=80.0, s=0.0, e=120.0,
  22. w=0.0, t=1.0, b=0.0, res=10.0)
  23. def setUp(self):
  24. """!Create the test maps
  25. """
  26. ret = 0
  27. ret += grass.run_command("r.mapcalc", overwrite=True, quiet=True,
  28. expression="register_map_1 = 1")
  29. ret += grass.run_command("r.mapcalc", overwrite=True, quiet=True,
  30. expression="register_map_2 = 2")
  31. self.assertEqual(ret, 0)
  32. def test_absolute_time_strds(self):
  33. """!Test the registration of maps with absolute time in a
  34. space time raster dataset
  35. """
  36. ret = grass.run_command("t.create", output="register_test",
  37. title="Test strds", description="Test strds",
  38. temporaltype="absolute")
  39. self.assertEqual(ret, 0)
  40. tgis.register_maps_in_space_time_dataset(type="rast", name="register_test",
  41. maps="register_map_1,register_map_2",
  42. start="2001-01-01", increment="1 day", interval=True)
  43. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  44. map.select()
  45. start, end = map.get_absolute_time()
  46. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  47. self.assertEqual(end, datetime.datetime(2001, 1, 2))
  48. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  49. map.select()
  50. start, end = map.get_absolute_time()
  51. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  52. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  53. strds = tgis.SpaceTimeRasterDataset("register_test@" + tgis.get_current_mapset())
  54. strds.select()
  55. start, end = strds.get_absolute_time()
  56. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  57. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  58. ret = grass.run_command("t.remove", input="register_test")
  59. self.assertEqual(ret, 0)
  60. def test_absolute_time_1(self):
  61. """!Test the registration of maps with absolute time
  62. """
  63. tgis.register_maps_in_space_time_dataset(type="rast", name=None,
  64. maps="register_map_1,register_map_2",
  65. start="2001-01-01", increment="1 day", interval=True)
  66. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  67. map.select()
  68. start, end = map.get_absolute_time()
  69. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  70. self.assertEqual(end, datetime.datetime(2001, 1, 2))
  71. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  72. map.select()
  73. start, end = map.get_absolute_time()
  74. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  75. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  76. def test_absolute_time_2(self):
  77. """!Test the registration of maps with absolute time
  78. """
  79. tgis.register_maps_in_space_time_dataset(type="rast", name=None,
  80. maps="register_map_1,register_map_2",
  81. start="2001-01-01 10:30:01", increment="8 hours", interval=False)
  82. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  83. map.select()
  84. start, end = map.get_absolute_time()
  85. self.assertEqual(start, datetime.datetime(2001, 1, 1, 10, 30, 1))
  86. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  87. map.select()
  88. start, end = map.get_absolute_time()
  89. self.assertEqual(start, datetime.datetime(2001, 1, 1, 18, 30, 1))
  90. def test_relative_time_strds(self):
  91. """!Test the registration of maps with relative time in a
  92. space time raster dataset
  93. """
  94. ret = grass.run_command("t.create", output="register_test",
  95. title="Test strds", description="Test strds",
  96. temporaltype="relative")
  97. self.assertEqual(ret, 0)
  98. tgis.register_maps_in_space_time_dataset(type="rast", name="register_test",
  99. maps="register_map_1,register_map_2",
  100. start=0, increment=1, unit="day", interval=True)
  101. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  102. map.select()
  103. start, end, unit = map.get_relative_time()
  104. self.assertEqual(start, 0)
  105. self.assertEqual(end, 1)
  106. self.assertEqual(unit, "day")
  107. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  108. map.select()
  109. start, end, unit = map.get_relative_time()
  110. self.assertEqual(start, 1)
  111. self.assertEqual(end, 2)
  112. self.assertEqual(unit, "day")
  113. strds = tgis.SpaceTimeRasterDataset("register_test@" + tgis.get_current_mapset())
  114. strds.select()
  115. start, end, unit = strds.get_relative_time()
  116. self.assertEqual(start, 0)
  117. self.assertEqual(end, 2)
  118. self.assertEqual(unit, "day")
  119. strds.print_info()
  120. ret = grass.run_command("t.remove", input="register_test")
  121. self.assertEqual(ret, 0)
  122. def test_relative_time_1(self):
  123. """!Test the registration of maps with relative time
  124. """
  125. tgis.register_maps_in_space_time_dataset(type="rast", name=None,
  126. maps="register_map_1,register_map_2",
  127. start=0, increment=1, unit="day", interval=True)
  128. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  129. map.select()
  130. start, end, unit = map.get_relative_time()
  131. self.assertEqual(start, 0)
  132. self.assertEqual(end, 1)
  133. self.assertEqual(unit, "day")
  134. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  135. map.select()
  136. start, end, unit = map.get_relative_time()
  137. self.assertEqual(start, 1)
  138. self.assertEqual(end, 2)
  139. self.assertEqual(unit, "day")
  140. def test_relative_time_2(self):
  141. """!Test the registration of maps with relative time
  142. """
  143. tgis.register_maps_in_space_time_dataset(type="rast", name=None,
  144. maps="register_map_1,register_map_2",
  145. start=1000000, increment=500000, unit="second", interval=True)
  146. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  147. map.select()
  148. start, end, unit = map.get_relative_time()
  149. self.assertEqual(start, 1000000)
  150. self.assertEqual(end, 1500000)
  151. self.assertEqual(unit, "second")
  152. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  153. map.select()
  154. start, end, unit = map.get_relative_time()
  155. self.assertEqual(start, 1500000)
  156. self.assertEqual(end, 2000000)
  157. self.assertEqual(unit, "second")
  158. def tearDown(self):
  159. """!Remove maps from temporal database
  160. """
  161. ret = grass.run_command("t.unregister", maps="register_map_1,register_map_2")
  162. self.assertEqual(ret, 0)
  163. @classmethod
  164. def tearDownClass(cls):
  165. """!Remove the temporary region
  166. """
  167. grass.del_temp_region()
  168. if __name__ == '__main__':
  169. unittest.main()