test_raster_region.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. # -*- coding: utf-8
  2. import six
  3. from grass.gunittest.case import TestCase
  4. from grass.gunittest.main import test
  5. from grass.pygrass.raster import RasterRow
  6. from grass.pygrass.raster import raster2numpy
  7. from grass.pygrass.gis.region import Region
  8. class RasterRowRegionTestCase(TestCase):
  9. name = "RasterRowRegionTestCase_map"
  10. @classmethod
  11. def setUpClass(cls):
  12. """Create test raster map and region"""
  13. cls.use_temp_region()
  14. cls.runModule("g.region", n=40, s=0, e=40, w=0, res=10)
  15. cls.runModule(
  16. "r.mapcalc",
  17. expression="%s = row() + (10.0 * col())" % (cls.name),
  18. overwrite=True,
  19. )
  20. @classmethod
  21. def tearDownClass(cls):
  22. """Remove the generated vector map, if exist"""
  23. cls.runModule("g.remove", flags="f", type="raster", name=cls.name)
  24. cls.del_temp_region()
  25. def test_resampling_1(self):
  26. region = Region()
  27. region.ewres = 4
  28. region.nsres = 4
  29. region.north = 30
  30. region.south = 10
  31. region.east = 30
  32. region.west = 10
  33. region.adjust(rows=True, cols=True)
  34. rast = RasterRow(self.name)
  35. rast.set_region(region)
  36. rast.open(mode="r")
  37. six.assertCountEqual(
  38. self, rast[0].tolist(), [22, 22, 22, 22, 22, 32, 32, 32, 32, 32]
  39. )
  40. six.assertCountEqual(
  41. self, rast[5].tolist(), [23, 23, 23, 23, 23, 33, 33, 33, 33, 33]
  42. )
  43. rast.close()
  44. def test_resampling_2(self):
  45. region = Region()
  46. region.ewres = 5
  47. region.nsres = 5
  48. region.north = 60
  49. region.south = -20
  50. region.east = 60
  51. region.west = -20
  52. region.adjust(rows=True, cols=True)
  53. rast = RasterRow(self.name)
  54. rast.set_region(region)
  55. rast.open(mode="r")
  56. """
  57. [nan, nan, nan, nan, nan, nan, nan, nan]
  58. [nan, nan, nan, nan, nan, nan, nan, nan]
  59. [nan, nan, 11.0, 21.0, 31.0, 41.0, nan, nan]
  60. [nan, nan, 12.0, 22.0, 32.0, 42.0, nan, nan]
  61. [nan, nan, 13.0, 23.0, 33.0, 43.0, nan, nan]
  62. [nan, nan, 14.0, 24.0, 34.0, 44.0, nan, nan]
  63. [nan, nan, nan, nan, nan, nan, nan, nan]
  64. [nan, nan, nan, nan, nan, nan, nan, nan]
  65. """
  66. six.assertCountEqual(self, rast[2].tolist()[2:6], [11.0, 21.0, 31.0, 41.0])
  67. six.assertCountEqual(self, rast[5].tolist()[2:6], [14.0, 24.0, 34.0, 44.0])
  68. rast.close()
  69. def test_resampling_to_numpy(self):
  70. region = Region()
  71. region.ewres = 0.1
  72. region.nsres = 0.1
  73. region.adjust()
  74. region.set_raster_region()
  75. a = raster2numpy(self.name)
  76. self.assertEqual(len(a), 400)
  77. region.ewres = 1
  78. region.nsres = 1
  79. region.adjust()
  80. region.set_raster_region()
  81. a = raster2numpy(self.name)
  82. self.assertEqual(len(a), 40)
  83. region.ewres = 5
  84. region.nsres = 5
  85. region.adjust()
  86. region.set_raster_region()
  87. a = raster2numpy(self.name)
  88. self.assertEqual(len(a), 8)
  89. if __name__ == "__main__":
  90. test()