test_register_function.py 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  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. :authors: Soeren Gebbert
  8. """
  9. import grass.temporal as tgis
  10. from grass.gunittest.case import TestCase
  11. from grass.gunittest.main import test
  12. import datetime
  13. import os
  14. class TestRasterRegisterFunctions(TestCase):
  15. @classmethod
  16. def setUpClass(cls):
  17. """Initiate the temporal GIS and set the region
  18. """
  19. os.putenv("GRASS_OVERWRITE", "1")
  20. # Use always the current mapset as temporal database
  21. cls.runModule("g.gisenv", set="TGIS_USE_CURRENT_MAPSET=1")
  22. tgis.init()
  23. cls.use_temp_region()
  24. cls.runModule('g.region', n=80.0, s=0.0, e=120.0, w=0.0,
  25. t=1.0, b=0.0, res=10.0)
  26. @classmethod
  27. def tearDownClass(cls):
  28. """Remove the temporary region
  29. """
  30. cls.del_temp_region()
  31. def setUp(self):
  32. """Create the test maps and the space time raster datasets
  33. """
  34. self.runModule("r.mapcalc", overwrite=True, quiet=True,
  35. expression="register_map_1 = 1")
  36. self.runModule("r.mapcalc", overwrite=True, quiet=True,
  37. expression="register_map_2 = 2")
  38. self.runModule("r.mapcalc", overwrite=True, quiet=True,
  39. expression="register_map_null = null()")
  40. self.strds_abs = tgis.open_new_stds(name="register_test_abs", type="strds", temporaltype="absolute",
  41. title="Test strds", descr="Test strds", semantic="field",
  42. overwrite=True)
  43. self.strds_rel = tgis.open_new_stds(name="register_test_rel", type="strds", temporaltype="relative",
  44. title="Test strds", descr="Test strds", semantic="field",
  45. overwrite=True)
  46. def tearDown(self):
  47. """Remove maps from temporal database
  48. """
  49. self.runModule("t.unregister", type="raster", maps="register_map_1,register_map_2",
  50. quiet=True)
  51. self.runModule("g.remove", flags='f', type="raster", name="register_map_1,register_map_2",
  52. quiet=True)
  53. self.strds_abs.delete()
  54. self.strds_rel.delete()
  55. def test_absolute_time_strds_1(self):
  56. """Test the registration of maps with absolute time in a
  57. space time raster dataset
  58. """
  59. tgis.register_maps_in_space_time_dataset(type="raster", name=self.strds_abs.get_name(),
  60. maps="register_map_1,register_map_2",
  61. start="2001-01-01", increment="1 day", interval=True)
  62. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  63. map.select()
  64. start, end = map.get_absolute_time()
  65. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  66. self.assertEqual(end, datetime.datetime(2001, 1, 2))
  67. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  68. map.select()
  69. start, end = map.get_absolute_time()
  70. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  71. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  72. self.strds_abs.select()
  73. start, end = self.strds_abs.get_absolute_time()
  74. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  75. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  76. def test_absolute_time_strds_2(self):
  77. """Test the registration of maps with absolute time in a
  78. space time raster dataset.
  79. The timestamps are set using the C-Interface beforehand, so that the register function needs
  80. to read the timetsamp from the map metadata.
  81. """
  82. ciface = tgis.get_tgis_c_library_interface()
  83. ciface.write_raster_timestamp("register_map_1", tgis.get_current_mapset(), "1 Jan 2001/2 Jan 2001")
  84. ciface.write_raster_timestamp("register_map_2", tgis.get_current_mapset(), "2 Jan 2001/3 Jan 2001")
  85. tgis.register_maps_in_space_time_dataset(type="raster", name=self.strds_abs.get_name(),
  86. maps="register_map_1,register_map_2")
  87. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  88. map.select()
  89. start, end = map.get_absolute_time()
  90. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  91. self.assertEqual(end, datetime.datetime(2001, 1, 2))
  92. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  93. map.select()
  94. start, end = map.get_absolute_time()
  95. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  96. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  97. self.strds_abs.select()
  98. start, end = self.strds_abs.get_absolute_time()
  99. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  100. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  101. def test_absolute_time_strds_3(self):
  102. """Test the registration of maps with absolute time in a
  103. space time raster dataset. The timestamps are set via method arguments and with the
  104. c-interface. The timestamps of the method arguments should overwrite the
  105. time stamps set via the C-interface.
  106. """
  107. ciface = tgis.get_tgis_c_library_interface()
  108. ciface.write_raster_timestamp("register_map_1", tgis.get_current_mapset(), "1 Jan 2001/2 Jan 2001")
  109. tgis.register_maps_in_space_time_dataset(type="raster", name=self.strds_abs.get_name(),
  110. maps="register_map_1",
  111. start="2001-02-01", increment="1 day",
  112. interval=True)
  113. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  114. map.select()
  115. start, end = map.get_absolute_time()
  116. self.assertEqual(start, datetime.datetime(2001, 2, 1))
  117. self.assertEqual(end, datetime.datetime(2001, 2, 2))
  118. self.strds_abs.select()
  119. start, end = self.strds_abs.get_absolute_time()
  120. self.assertEqual(start, datetime.datetime(2001, 2, 1))
  121. self.assertEqual(end, datetime.datetime(2001, 2, 2))
  122. def test_absolute_time_strds_4(self):
  123. """Test the registration of maps with absolute time in a
  124. space time raster dataset. The timestamps are set via method arguments and with the
  125. c-interface. The timestamps of the method arguments should overwrite the
  126. time stamps set via the C-interface. The C-interface sets relative time stamps.
  127. """
  128. ciface = tgis.get_tgis_c_library_interface()
  129. # Set the timestamp as relative time
  130. ciface.write_raster_timestamp("register_map_1", tgis.get_current_mapset(), "1 day")
  131. tgis.register_maps_in_space_time_dataset(type="raster", name=self.strds_abs.get_name(),
  132. maps="register_map_1",
  133. start="2001-02-01", increment="1 day",
  134. interval=True)
  135. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  136. map.select()
  137. start, end = map.get_absolute_time()
  138. self.assertEqual(start, datetime.datetime(2001, 2, 1))
  139. self.assertEqual(end, datetime.datetime(2001, 2, 2))
  140. self.strds_abs.select()
  141. start, end = self.strds_abs.get_absolute_time()
  142. self.assertEqual(start, datetime.datetime(2001, 2, 1))
  143. self.assertEqual(end, datetime.datetime(2001, 2, 2))
  144. def test_absolute_time_1(self):
  145. """Test the registration of maps with absolute time
  146. using register_maps_in_space_time_dataset() and register_map_object_list()
  147. """
  148. tgis.register_maps_in_space_time_dataset(type="raster", name=None,
  149. maps="register_map_1,register_map_2",
  150. start="2001-01-01", increment="1 day", interval=True)
  151. map_1 = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  152. map_1.select()
  153. start, end = map_1.get_absolute_time()
  154. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  155. self.assertEqual(end, datetime.datetime(2001, 1, 2))
  156. map_2 = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  157. map_2.select()
  158. start, end = map_2.get_absolute_time()
  159. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  160. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  161. map_list = [map_1, map_2]
  162. tgis.register_map_object_list(type="raster", map_list=map_list,
  163. output_stds=self.strds_abs,
  164. delete_empty=False)
  165. self.strds_abs.select()
  166. start, end = self.strds_abs.get_absolute_time()
  167. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  168. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  169. def test_absolute_time_2(self):
  170. """Test the registration of maps with absolute time
  171. using register_maps_in_space_time_dataset() and register_map_object_list() with empty map deletion
  172. """
  173. tgis.register_maps_in_space_time_dataset(type="raster", name=None,
  174. maps="register_map_1,register_map_2,register_map_null",
  175. start="2001-01-01 10:30:01", increment="8 hours", interval=False)
  176. map_1 = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  177. map_1.select()
  178. start, end = map_1.get_absolute_time()
  179. self.assertEqual(start, datetime.datetime(2001, 1, 1, 10, 30, 1))
  180. map_2 = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  181. map_2.select()
  182. start, end = map_2.get_absolute_time()
  183. self.assertEqual(start, datetime.datetime(2001, 1, 1, 18, 30, 1))
  184. map_3 = tgis.RasterDataset("register_map_null@" + tgis.get_current_mapset())
  185. map_3.select()
  186. start, end = map_3.get_absolute_time()
  187. self.assertEqual(start, datetime.datetime(2001, 1, 2, 02, 30, 1))
  188. map_list = [map_1, map_2, map_3]
  189. tgis.register_map_object_list(type="raster", map_list=map_list,
  190. output_stds=self.strds_abs,
  191. delete_empty=True)
  192. self.strds_abs.select()
  193. start, end = self.strds_abs.get_absolute_time()
  194. self.assertEqual(start, datetime.datetime(2001, 1, 1, 10, 30, 1))
  195. self.assertEqual(end, datetime.datetime(2001, 1, 1, 18, 30, 1))
  196. map_3 = tgis.VectorDataset("register_map_null@" + tgis.get_current_mapset())
  197. self.assertEqual(map_3.map_exists(), False)
  198. def test_absolute_time_3(self):
  199. """Test the registration of maps with absolute time.
  200. The timestamps are set using the C-Interface beforehand, so that the register function needs
  201. to read the timetsamp from the map metadata.
  202. """
  203. ciface = tgis.get_tgis_c_library_interface()
  204. ciface.write_raster_timestamp("register_map_1", tgis.get_current_mapset(), "1 Jan 2001 10:30:01")
  205. ciface.write_raster_timestamp("register_map_2", tgis.get_current_mapset(), "1 Jan 2001 18:30:01")
  206. tgis.register_maps_in_space_time_dataset(type="raster", name=None,
  207. maps="register_map_1,register_map_2")
  208. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  209. map.select()
  210. start, end = map.get_absolute_time()
  211. self.assertEqual(start, datetime.datetime(2001, 1, 1, 10, 30, 1))
  212. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  213. map.select()
  214. start, end = map.get_absolute_time()
  215. self.assertEqual(start, datetime.datetime(2001, 1, 1, 18, 30, 1))
  216. def test_relative_time_strds_1(self):
  217. """Test the registration of maps with relative time in a
  218. space time raster dataset
  219. """
  220. tgis.register_maps_in_space_time_dataset(type="raster", name=self.strds_rel.get_name(),
  221. maps="register_map_1,register_map_2", start=0,
  222. increment=1, unit="day", interval=True)
  223. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  224. map.select()
  225. start, end, unit = map.get_relative_time()
  226. self.assertEqual(start, 0)
  227. self.assertEqual(end, 1)
  228. self.assertEqual(unit, "day")
  229. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  230. map.select()
  231. start, end, unit = map.get_relative_time()
  232. self.assertEqual(start, 1)
  233. self.assertEqual(end, 2)
  234. self.assertEqual(unit, "day")
  235. self.strds_rel.select()
  236. start, end, unit = self.strds_rel.get_relative_time()
  237. self.assertEqual(start, 0)
  238. self.assertEqual(end, 2)
  239. self.assertEqual(unit, "day")
  240. def test_relative_time_strds_2(self):
  241. """Test the registration of maps with relative time in a
  242. space time raster dataset. The timetsamps are set for the maps using the
  243. C-interface before registration.
  244. """
  245. ciface = tgis.get_tgis_c_library_interface()
  246. ciface.write_raster_timestamp("register_map_1", tgis.get_current_mapset(), "1000000 seconds/1500000 seconds")
  247. ciface.write_raster_timestamp("register_map_2", tgis.get_current_mapset(), "1500000 seconds/2000000 seconds")
  248. tgis.register_maps_in_space_time_dataset(type="raster", name=self.strds_rel.get_name(),
  249. maps="register_map_1,register_map_2")
  250. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  251. map.select()
  252. start, end, unit = map.get_relative_time()
  253. self.assertEqual(start, 1000000)
  254. self.assertEqual(end, 1500000)
  255. self.assertEqual(unit, "seconds")
  256. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  257. map.select()
  258. start, end, unit = map.get_relative_time()
  259. self.assertEqual(start, 1500000)
  260. self.assertEqual(end, 2000000)
  261. self.assertEqual(unit, "seconds")
  262. self.strds_rel.select()
  263. start, end, unit = self.strds_rel.get_relative_time()
  264. self.assertEqual(start, 1000000)
  265. self.assertEqual(end, 2000000)
  266. self.assertEqual(unit, "seconds")
  267. def test_relative_time_1(self):
  268. """Test the registration of maps with relative time
  269. """
  270. tgis.register_maps_in_space_time_dataset(type="raster", name=None,
  271. maps="register_map_1,register_map_2",
  272. start=0, increment=1, unit="day", interval=True)
  273. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  274. map.select()
  275. start, end, unit = map.get_relative_time()
  276. self.assertEqual(start, 0)
  277. self.assertEqual(end, 1)
  278. self.assertEqual(unit, "day")
  279. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  280. map.select()
  281. start, end, unit = map.get_relative_time()
  282. self.assertEqual(start, 1)
  283. self.assertEqual(end, 2)
  284. self.assertEqual(unit, "day")
  285. def test_relative_time_2(self):
  286. """Test the registration of maps with relative time
  287. """
  288. tgis.register_maps_in_space_time_dataset(type="raster", name=None,
  289. maps="register_map_1,register_map_2",
  290. start=1000000, increment=500000, unit="seconds", interval=True)
  291. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  292. map.select()
  293. start, end, unit = map.get_relative_time()
  294. self.assertEqual(start, 1000000)
  295. self.assertEqual(end, 1500000)
  296. self.assertEqual(unit, "seconds")
  297. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  298. map.select()
  299. start, end, unit = map.get_relative_time()
  300. self.assertEqual(start, 1500000)
  301. self.assertEqual(end, 2000000)
  302. self.assertEqual(unit, "seconds")
  303. def test_relative_time_3(self):
  304. """Test the registration of maps with relative time. The timetsamps are set beforehand using
  305. the C-interface.
  306. """
  307. ciface = tgis.get_tgis_c_library_interface()
  308. ciface.write_raster_timestamp("register_map_1", tgis.get_current_mapset(), "1000000 seconds/1500000 seconds")
  309. ciface.write_raster_timestamp("register_map_2", tgis.get_current_mapset(), "1500000 seconds/2000000 seconds")
  310. tgis.register_maps_in_space_time_dataset(type="raster", name=None,
  311. maps="register_map_1,register_map_2")
  312. map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
  313. map.select()
  314. start, end, unit = map.get_relative_time()
  315. self.assertEqual(start, 1000000)
  316. self.assertEqual(end, 1500000)
  317. self.assertEqual(unit, "seconds")
  318. map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
  319. map.select()
  320. start, end, unit = map.get_relative_time()
  321. self.assertEqual(start, 1500000)
  322. self.assertEqual(end, 2000000)
  323. self.assertEqual(unit, "seconds")
  324. class TestVectorRegisterFunctions(TestCase):
  325. @classmethod
  326. def setUpClass(cls):
  327. """Initiate the temporal GIS and set the region
  328. """
  329. os.putenv("GRASS_OVERWRITE", "1")
  330. # Use always the current mapset as temporal database
  331. cls.runModule("g.gisenv", set="TGIS_USE_CURRENT_MAPSET=1")
  332. tgis.init()
  333. cls.use_temp_region()
  334. cls.runModule('g.region', n=80.0, s=0.0, e=120.0, w=0.0,
  335. t=1.0, b=0.0, res=10.0)
  336. @classmethod
  337. def tearDownClass(cls):
  338. """Remove the temporary region
  339. """
  340. cls.del_temp_region()
  341. def setUp(self):
  342. """Create the test maps and the space time raster datasets
  343. """
  344. self.runModule("v.random", overwrite=True, quiet=True,
  345. output="register_map_1", npoints=5, seed=1)
  346. self.runModule("v.random", overwrite=True, quiet=True,
  347. output="register_map_2", npoints=5, seed=1)
  348. self.runModule("r.mapcalc", overwrite=True, quiet=True,
  349. expression="register_map_null = null()")
  350. self.runModule("r.to.vect", overwrite=True, quiet=True,
  351. input="register_map_null", type="point",
  352. output="register_map_empty")
  353. self.stvds_abs = tgis.open_new_stds(name="register_test_abs", type="stvds", temporaltype="absolute",
  354. title="Test stvds", descr="Test stvds", semantic="field",
  355. overwrite=True)
  356. self.stvds_rel = tgis.open_new_stds(name="register_test_rel", type="stvds", temporaltype="relative",
  357. title="Test stvds", descr="Test stvds", semantic="field",
  358. overwrite=True)
  359. def tearDown(self):
  360. """Remove maps from temporal database
  361. """
  362. self.runModule("t.unregister", type="vector", maps="register_map_1,register_map_2", quiet=True)
  363. self.runModule("g.remove", flags='f', type="vector", name="register_map_1,register_map_2", quiet=True)
  364. self.stvds_abs.delete()
  365. self.stvds_rel.delete()
  366. def test_absolute_time_stvds_1(self):
  367. """Test the registration of maps with absolute time in a
  368. space time raster dataset
  369. """
  370. tgis.register_maps_in_space_time_dataset(type="vector", name=self.stvds_abs.get_name(),
  371. maps="register_map_1,register_map_2",
  372. start="2001-01-01", increment="1 day", interval=True)
  373. map = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
  374. map.select()
  375. start, end = map.get_absolute_time()
  376. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  377. self.assertEqual(end, datetime.datetime(2001, 1, 2))
  378. map = tgis.VectorDataset("register_map_2@" + tgis.get_current_mapset())
  379. map.select()
  380. start, end = map.get_absolute_time()
  381. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  382. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  383. self.stvds_abs.select()
  384. start, end = self.stvds_abs.get_absolute_time()
  385. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  386. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  387. def test_absolute_time_stvds_2(self):
  388. """Test the registration of maps with absolute time in a
  389. space time raster dataset.
  390. The timestamps are set using the C-Interface beforehand, so that the register function needs
  391. to read the timetsamp from the map metadata.
  392. """
  393. ciface = tgis.get_tgis_c_library_interface()
  394. ciface.write_vector_timestamp("register_map_1", tgis.get_current_mapset(), "1 Jan 2001/2 Jan 2001")
  395. ciface.write_vector_timestamp("register_map_2", tgis.get_current_mapset(), "2 Jan 2001/3 Jan 2001")
  396. tgis.register_maps_in_space_time_dataset(type="vector", name=self.stvds_abs.get_name(),
  397. maps="register_map_1,register_map_2")
  398. map = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
  399. map.select()
  400. start, end = map.get_absolute_time()
  401. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  402. self.assertEqual(end, datetime.datetime(2001, 1, 2))
  403. map = tgis.VectorDataset("register_map_2@" + tgis.get_current_mapset())
  404. map.select()
  405. start, end = map.get_absolute_time()
  406. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  407. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  408. self.stvds_abs.select()
  409. start, end = self.stvds_abs.get_absolute_time()
  410. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  411. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  412. def test_absolute_time_stvds_3(self):
  413. """Test the registration of maps with absolute time in a
  414. space time raster dataset. The timestamps are set via method arguments and with the
  415. c-interface. The timestamps of the method arguments should overwrite the
  416. time stamps set via the C-interface.
  417. """
  418. ciface = tgis.get_tgis_c_library_interface()
  419. ciface.write_vector_timestamp("register_map_1", tgis.get_current_mapset(), "1 Jan 2001/2 Jan 2001")
  420. tgis.register_maps_in_space_time_dataset(type="vector", name=self.stvds_abs.get_name(),
  421. maps="register_map_1",
  422. start="2001-02-01", increment="1 day",
  423. interval=True)
  424. map = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
  425. map.select()
  426. start, end = map.get_absolute_time()
  427. self.assertEqual(start, datetime.datetime(2001, 2, 1))
  428. self.assertEqual(end, datetime.datetime(2001, 2, 2))
  429. self.stvds_abs.select()
  430. start, end = self.stvds_abs.get_absolute_time()
  431. self.assertEqual(start, datetime.datetime(2001, 2, 1))
  432. self.assertEqual(end, datetime.datetime(2001, 2, 2))
  433. def test_absolute_time_1(self):
  434. """Register vector maps in the temporal database and in addition in a stvds using the object method
  435. :return:
  436. """
  437. tgis.register_maps_in_space_time_dataset(type="vector", name=None,
  438. maps="register_map_1,register_map_2",
  439. start="2001-01-01", increment="1 day", interval=True)
  440. map_1 = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
  441. map_1.select()
  442. start, end = map_1.get_absolute_time()
  443. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  444. self.assertEqual(end, datetime.datetime(2001, 1, 2))
  445. map_2 = tgis.VectorDataset("register_map_2@" + tgis.get_current_mapset())
  446. map_2.select()
  447. start, end = map_2.get_absolute_time()
  448. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  449. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  450. map_list = [map_1, map_2]
  451. tgis.register_map_object_list(type="vector", map_list=map_list,
  452. output_stds=self.stvds_abs,
  453. delete_empty=False)
  454. self.stvds_abs.select()
  455. start, end = self.stvds_abs.get_absolute_time()
  456. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  457. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  458. def test_absolute_time_2(self):
  459. """Register vector maps in the temporal database and in addition
  460. in a stvds using the object method deleting empty maps
  461. :return:
  462. """
  463. tgis.register_maps_in_space_time_dataset(type="vector", name=None,
  464. maps="register_map_1,register_map_2,register_map_empty",
  465. start="2001-01-01", increment="1 day", interval=True)
  466. map_1 = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
  467. map_1.select()
  468. start, end = map_1.get_absolute_time()
  469. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  470. self.assertEqual(end, datetime.datetime(2001, 1, 2))
  471. map_2 = tgis.VectorDataset("register_map_2@" + tgis.get_current_mapset())
  472. map_2.select()
  473. start, end = map_2.get_absolute_time()
  474. self.assertEqual(start, datetime.datetime(2001, 1, 2))
  475. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  476. map_3 = tgis.VectorDataset("register_map_empty@" + tgis.get_current_mapset())
  477. map_3.select()
  478. start, end = map_3.get_absolute_time()
  479. self.assertEqual(start, datetime.datetime(2001, 1, 3))
  480. self.assertEqual(end, datetime.datetime(2001, 1, 4))
  481. map_list = [map_1, map_2, map_3]
  482. tgis.register_map_object_list(type="vector", map_list=map_list,
  483. output_stds=self.stvds_abs,
  484. delete_empty=True)
  485. self.stvds_abs.select()
  486. start, end = self.stvds_abs.get_absolute_time()
  487. self.assertEqual(start, datetime.datetime(2001, 1, 1))
  488. self.assertEqual(end, datetime.datetime(2001, 1, 3))
  489. map_3 = tgis.VectorDataset("register_map_empty@" + tgis.get_current_mapset())
  490. self.assertEqual(map_3.map_exists(), False)
  491. class TestRegisterFails(TestCase):
  492. def test_error_handling_1(self):
  493. # start option is missing
  494. self.assertModuleFail("t.register", input="test", end='2001-01-01', maps=("a", "b"))
  495. def test_error_handling_2(self):
  496. # No input definition
  497. self.assertModuleFail("t.register", input="test", start='2001-01-01')
  498. def test_error_handling_3(self):
  499. # File and maps are mutually exclusive
  500. self.assertModuleFail("t.register", input="test", start='2001-01-01', maps=("a", "b"), file="maps.txt")
  501. def test_error_handling_4(self):
  502. # Increment needs start
  503. self.assertModuleFail("t.register", input="test", increment="1 day", maps=("a", "b"))
  504. def test_error_handling_5(self):
  505. # Interval needs start
  506. self.assertModuleFail("t.register", flags="i", input="test", maps=("a", "b"))
  507. def test_error_handling_6(self):
  508. # Increment and end are mutually exclusive
  509. self.assertModuleFail("t.register", input="test", start='2001-01-01', end='2001-01-01',
  510. increment="1 day", maps=("a", "b"))
  511. def test_error_handling_7(self):
  512. # Interval and end are mutually exclusive
  513. self.assertModuleFail("t.register", flags="i", input="test", start='2001-01-01', end='2001-01-01',
  514. maps=("a", "b"))
  515. if __name__ == '__main__':
  516. test()