diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/gis/gdal/prototypes/raster.py | 4 | ||||
| -rw-r--r-- | django/contrib/gis/gdal/raster/band.py | 11 |
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): |
