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 unittest import skip
  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. self.assertItemsEqual(rast[0].tolist(), [22,22,22,22,22,32,32,32,32,32])
  36. self.assertItemsEqual(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. self.assertItemsEqual(rast[2].tolist()[2:6], [11.,21.,31.,41.])
  61. self.assertItemsEqual(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()