test_raster_region.py 3.1 KB

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