diff options
| author | Daniel Wiesmann <daniel.wiesmann@gmail.com> | 2016-03-28 19:12:10 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-03-29 08:06:31 -0400 |
| commit | f1db8c36e9178dcfa14a6bfcad48122a3a5ceea3 (patch) | |
| tree | 1721e8d0edd43d63b18787fd583a78bd94334e2b /django | |
| parent | a7c813ba045044ec23bb656ef9a23a0e38e36514 (diff) | |
Fixed #26415 -- Allowed deleting nodata value on GDALBands.
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): |
