test_to_vect.py 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. """Test t.rast.to.vect
  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 subprocess
  9. from grass.gunittest.case import TestCase
  10. from grass.gunittest.gmodules import SimpleModule
  11. class TestRasterToVector(TestCase):
  12. @classmethod
  13. def setUpClass(cls):
  14. """Initiate the temporal GIS and set the region"""
  15. cls.use_temp_region()
  16. cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, t=50, res=10, res3=10)
  17. cls.runModule("r.mapcalc", expression="a_1 = 100", overwrite=True)
  18. cls.runModule("r.mapcalc", expression="a_2 = 200", overwrite=True)
  19. cls.runModule("r.mapcalc", expression="a_3 = 300", overwrite=True)
  20. cls.runModule("r.mapcalc", expression="a_4 = 400", overwrite=True)
  21. cls.runModule("r.mapcalc", expression="a_5 = null()", overwrite=True)
  22. cls.runModule(
  23. "t.create",
  24. type="strds",
  25. temporaltype="absolute",
  26. output="A",
  27. title="A test",
  28. description="A test",
  29. overwrite=True,
  30. )
  31. cls.runModule(
  32. "t.register",
  33. flags="i",
  34. type="raster",
  35. input="A",
  36. maps="a_1,a_2,a_3,a_4,a_5",
  37. start="2001-01-01",
  38. increment="3 months",
  39. overwrite=True,
  40. )
  41. @classmethod
  42. def tearDownClass(cls):
  43. """Remove the temporary region"""
  44. cls.runModule("t.remove", flags="rf", type="strds", inputs="A")
  45. cls.del_temp_region()
  46. def tearDown(self):
  47. """Remove generated data"""
  48. self.runModule("t.remove", flags="rf", type="stvds", inputs="result")
  49. def test_simple_points(self):
  50. self.assertModule(
  51. "t.rast.to.vect",
  52. input="A",
  53. output="result",
  54. type="point",
  55. flags="n",
  56. column="values",
  57. basename="test",
  58. nprocs=1,
  59. overwrite=True,
  60. verbose=True,
  61. )
  62. # self.assertModule("t.info", type="stvds", flags="g", input="result")
  63. tinfo_string = """start_time='2001-01-01 00:00:00'
  64. end_time='2002-04-01 00:00:00'
  65. granularity='3 months'
  66. map_time=interval
  67. number_of_maps=5
  68. points=384
  69. primitives=384"""
  70. info = SimpleModule("t.info", flags="g", type="stvds", input="result")
  71. self.assertModuleKeyValue(
  72. module=info, reference=tinfo_string, precision=2, sep="="
  73. )
  74. def test_simple_area(self):
  75. self.assertModule(
  76. "t.rast.to.vect",
  77. input="A",
  78. output="result",
  79. type="area",
  80. flags="n",
  81. column="values",
  82. basename="test",
  83. nprocs=1,
  84. overwrite=True,
  85. verbose=True,
  86. )
  87. # self.assertModule("t.info", type="stvds", flags="g", input="result")
  88. tinfo_string = """start_time='2001-01-01 00:00:00'
  89. end_time='2002-04-01 00:00:00'
  90. granularity='3 months'
  91. map_time=interval
  92. number_of_maps=5
  93. boundaries=4
  94. centroids=4
  95. primitives=8
  96. nodes=4
  97. areas=4
  98. islands=4"""
  99. info = SimpleModule("t.info", flags="g", type="stvds", input="result")
  100. self.assertModuleKeyValue(
  101. module=info, reference=tinfo_string, precision=2, sep="="
  102. )
  103. def test_simple_area_smooth(self):
  104. """Test areas with smooth corners"""
  105. self.assertModule(
  106. "t.rast.to.vect",
  107. input="A",
  108. output="result",
  109. type="area",
  110. flags="s",
  111. column="values",
  112. basename="test",
  113. nprocs=1,
  114. overwrite=True,
  115. verbose=True,
  116. )
  117. # self.assertModule("t.info", type="stvds", flags="g", input="result")
  118. tinfo_string = """start_time='2001-01-01 00:00:00'
  119. end_time='2002-01-01 00:00:00'
  120. granularity='3 months'
  121. map_time=interval
  122. number_of_maps=4
  123. boundaries=4
  124. centroids=4
  125. primitives=8
  126. nodes=4
  127. areas=4
  128. islands=4"""
  129. info = SimpleModule("t.info", flags="g", type="stvds", input="result")
  130. self.assertModuleKeyValue(
  131. module=info, reference=tinfo_string, precision=2, sep="="
  132. )
  133. def test_parallel(self):
  134. self.assertModule(
  135. "t.rast.to.vect",
  136. input="A",
  137. output="result",
  138. type="point",
  139. flags="t",
  140. column="values",
  141. basename="test",
  142. nprocs=4,
  143. overwrite=True,
  144. verbose=True,
  145. )
  146. # self.assertModule("t.info", type="stvds", flags="g", input="result")
  147. tinfo_string = """start_time='2001-01-01 00:00:00'
  148. end_time='2002-01-01 00:00:00'
  149. granularity='3 months'
  150. number_of_maps=4
  151. points=384
  152. primitives=384"""
  153. info = SimpleModule("t.info", flags="g", type="stvds", input="result")
  154. self.assertModuleKeyValue(
  155. module=info, reference=tinfo_string, precision=2, sep="="
  156. )
  157. def test_num_suffix(self):
  158. self.assertModule(
  159. "t.rast.to.vect",
  160. input="A",
  161. output="result",
  162. type="point",
  163. flags="t",
  164. column="values",
  165. basename="test",
  166. suffix="num%03",
  167. nprocs=4,
  168. overwrite=True,
  169. verbose=True,
  170. )
  171. self.assertVectorExists("test_001")
  172. def test_time_suffix(self):
  173. self.assertModule(
  174. "t.rast.to.vect",
  175. input="A",
  176. output="result",
  177. type="point",
  178. flags="t",
  179. column="values",
  180. basename="test",
  181. suffix="time",
  182. nprocs=4,
  183. overwrite=True,
  184. verbose=True,
  185. )
  186. self.assertVectorExists("test_2001_01_01T00_00_00")
  187. class TestRasterToVectorFails(TestCase):
  188. @classmethod
  189. def setUpClass(cls):
  190. """Initiate the temporal GIS and set the region"""
  191. cls.use_temp_region()
  192. cls.runModule("g.region", s=0, n=80, w=0, e=120, b=0, t=50, res=10, res3=10)
  193. cls.runModule("r.mapcalc", expression="a_1 = 100", overwrite=True)
  194. cls.runModule(
  195. "t.create",
  196. type="strds",
  197. temporaltype="absolute",
  198. output="A",
  199. title="A test",
  200. description="A test",
  201. overwrite=True,
  202. )
  203. cls.runModule(
  204. "t.register",
  205. flags="i",
  206. type="raster",
  207. input="A",
  208. maps="a_1",
  209. start="2001-01-01",
  210. increment="3 months",
  211. overwrite=True,
  212. )
  213. @classmethod
  214. def tearDownClass(cls):
  215. """Remove the temporary region"""
  216. cls.runModule("t.remove", flags="rf", type="strds", inputs="A")
  217. cls.del_temp_region()
  218. def test_error_handling(self):
  219. # No basename, no type
  220. self.assertModuleFail("t.rast.to.vect", input="A", output="result")
  221. def test_empty_strds(self):
  222. """Test for empty strds"""
  223. self.assertModule(
  224. "t.rast.to.vect",
  225. input="A",
  226. output="result",
  227. type="point",
  228. flags="n",
  229. column="values",
  230. basename="test",
  231. where="start_time > '2010-01-01'",
  232. nprocs=1,
  233. overwrite=True,
  234. verbose=True,
  235. )
  236. if __name__ == "__main__":
  237. from grass.gunittest.main import test
  238. test()