test_raster_region.py 3.1 KB

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