summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/contrib/gis/gdal/prototypes/raster.py4
-rw-r--r--django/contrib/gis/gdal/raster/band.py11
2 files changed, 12 insertions, 3 deletions
diff --git a/django/contrib/gis/gdal/prototypes/raster.py b/django/contrib/gis/gdal/prototypes/raster.py
index 8b3c3504d4..eb0818e342 100644
--- a/django/contrib/gis/gdal/prototypes/raster.py
+++ b/django/contrib/gis/gdal/prototypes/raster.py
@@ -62,6 +62,10 @@ get_band_ds = voidptr_output(std_call('GDALGetBandDataset'), [c_void_p])
get_band_datatype = int_output(std_call('GDALGetRasterDataType'), [c_void_p])
get_band_nodata_value = double_output(std_call('GDALGetRasterNoDataValue'), [c_void_p, POINTER(c_int)])
set_band_nodata_value = void_output(std_call('GDALSetRasterNoDataValue'), [c_void_p, c_double])
+if GDAL_VERSION >= (2, 1):
+ delete_band_nodata_value = void_output(std_call('GDALDeleteRasterNoDataValue'), [c_void_p])
+else:
+ delete_band_nodata_value = None
get_band_statistics = void_output(
std_call('GDALGetRasterStatistics'),
[
diff --git a/django/contrib/gis/gdal/raster/band.py b/django/contrib/gis/gdal/raster/band.py
index a573ef53c8..6ffa011282 100644
--- a/django/contrib/gis/gdal/raster/band.py
+++ b/django/contrib/gis/gdal/raster/band.py
@@ -151,9 +151,14 @@ class GDALBand(GDALBase):
"""
Sets the nodata value for this band.
"""
- if not isinstance(value, (int, float)):
- raise ValueError('Nodata value must be numeric.')
- capi.set_band_nodata_value(self._ptr, value)
+ if value is None:
+ if not capi.delete_band_nodata_value:
+ raise ValueError('GDAL >= 2.1 required to delete nodata values.')
+ capi.delete_band_nodata_value(self._ptr)
+ elif not isinstance(value, (int, float)):
+ raise ValueError('Nodata value must be numeric or None.')
+ else:
+ capi.set_band_nodata_value(self._ptr, value)
self._flush()
def datatype(self, as_string=False):