test_raster.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. """
  2. gdalinfo django/contrib/gis/gdal/tests/data/raster.tif:
  3. Driver: GTiff/GeoTIFF
  4. Files: django/contrib/gis/gdal/tests/data/raster.tif
  5. Size is 163, 174
  6. Coordinate System is:
  7. PROJCS["NAD83 / Florida GDL Albers",
  8. GEOGCS["NAD83",
  9. DATUM["North_American_Datum_1983",
  10. SPHEROID["GRS 1980",6378137,298.2572221010002,
  11. AUTHORITY["EPSG","7019"]],
  12. TOWGS84[0,0,0,0,0,0,0],
  13. AUTHORITY["EPSG","6269"]],
  14. PRIMEM["Greenwich",0],
  15. UNIT["degree",0.0174532925199433],
  16. AUTHORITY["EPSG","4269"]],
  17. PROJECTION["Albers_Conic_Equal_Area"],
  18. PARAMETER["standard_parallel_1",24],
  19. PARAMETER["standard_parallel_2",31.5],
  20. PARAMETER["latitude_of_center",24],
  21. PARAMETER["longitude_of_center",-84],
  22. PARAMETER["false_easting",400000],
  23. PARAMETER["false_northing",0],
  24. UNIT["metre",1,
  25. AUTHORITY["EPSG","9001"]],
  26. AUTHORITY["EPSG","3086"]]
  27. Origin = (511700.468070655711927,435103.377123198588379)
  28. Pixel Size = (100.000000000000000,-100.000000000000000)
  29. Metadata:
  30. AREA_OR_POINT=Area
  31. Image Structure Metadata:
  32. INTERLEAVE=BAND
  33. Corner Coordinates:
  34. Upper Left ( 511700.468, 435103.377) ( 82d51'46.16"W, 27d55' 1.53"N)
  35. Lower Left ( 511700.468, 417703.377) ( 82d51'52.04"W, 27d45'37.50"N)
  36. Upper Right ( 528000.468, 435103.377) ( 82d41'48.81"W, 27d54'56.30"N)
  37. Lower Right ( 528000.468, 417703.377) ( 82d41'55.54"W, 27d45'32.28"N)
  38. Center ( 519850.468, 426403.377) ( 82d46'50.64"W, 27d50'16.99"N)
  39. Band 1 Block=163x50 Type=Byte, ColorInterp=Gray
  40. NoData Value=15
  41. """
  42. import os
  43. import unittest
  44. from django.contrib.gis.gdal import HAS_GDAL
  45. from django.utils import six
  46. from django.utils._os import upath
  47. if HAS_GDAL:
  48. from django.contrib.gis.gdal import GDALRaster
  49. from django.contrib.gis.gdal.raster.band import GDALBand
  50. @unittest.skipUnless(HAS_GDAL, "GDAL is required")
  51. class GDALRasterTests(unittest.TestCase):
  52. """
  53. Test a GDALRaster instance created from a file (GeoTiff).
  54. """
  55. def setUp(self):
  56. self.rs_path = os.path.join(os.path.dirname(upath(__file__)),
  57. 'data/raster.tif')
  58. self.rs = GDALRaster(self.rs_path)
  59. def test_rs_name_repr(self):
  60. self.assertEqual(self.rs_path, self.rs.name)
  61. six.assertRegex(self, repr(self.rs), "<Raster object at 0x\w+>")
  62. def test_rs_driver(self):
  63. self.assertEqual(self.rs.driver.name, 'GTiff')
  64. def test_rs_size(self):
  65. self.assertEqual(self.rs.width, 163)
  66. self.assertEqual(self.rs.height, 174)
  67. def test_rs_srs(self):
  68. self.assertEqual(self.rs.srs.srid, 3086)
  69. self.assertEqual(self.rs.srs.units, (1.0, 'metre'))
  70. def test_geotransform_and_friends(self):
  71. self.assertEqual(self.rs.geotransform,
  72. (511700.4680706557, 100.0, 0.0, 435103.3771231986, 0.0, -100.0))
  73. self.assertEqual(self.rs.origin, [511700.4680706557, 435103.3771231986])
  74. self.assertEqual(self.rs.origin.x, 511700.4680706557)
  75. self.assertEqual(self.rs.origin.y, 435103.3771231986)
  76. self.assertEqual(self.rs.scale, [100.0, -100.0])
  77. self.assertEqual(self.rs.scale.x, 100.0)
  78. self.assertEqual(self.rs.scale.y, -100.0)
  79. self.assertEqual(self.rs.skew, [0, 0])
  80. self.assertEqual(self.rs.skew.x, 0)
  81. self.assertEqual(self.rs.skew.y, 0)
  82. def test_rs_extent(self):
  83. self.assertEqual(self.rs.extent,
  84. (511700.4680706557, 417703.3771231986, 528000.4680706557, 435103.3771231986))
  85. def test_rs_bands(self):
  86. self.assertEqual(len(self.rs.bands), 1)
  87. self.assertIsInstance(self.rs.bands[0], GDALBand)
  88. @unittest.skipUnless(HAS_GDAL, "GDAL is required")
  89. class GDALBandTests(unittest.TestCase):
  90. def setUp(self):
  91. rs_path = os.path.join(os.path.dirname(upath(__file__)),
  92. 'data/raster.tif')
  93. rs = GDALRaster(rs_path)
  94. self.band = rs.bands[0]
  95. def test_band_data(self):
  96. self.assertEqual(self.band.width, 163)
  97. self.assertEqual(self.band.height, 174)
  98. self.assertEqual(self.band.description, '')
  99. self.assertEqual(self.band.datatype(), 1)
  100. self.assertEqual(self.band.datatype(as_string=True), 'GDT_Byte')
  101. self.assertEqual(self.band.min, 0)
  102. self.assertEqual(self.band.max, 255)
  103. self.assertEqual(self.band.nodata_value, 15)