diff --git a/CHANGELOG.md b/CHANGELOG.md index 654bdaf20..48847ebdd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,8 @@ release. --> ## [Unreleased] +### Fixed +- Fixed a bug where scale and offset were not being read or applied to GeoDataset objects. ## [1.5.5]() ### Fixed diff --git a/plio/io/io_gdal.py b/plio/io/io_gdal.py index 749fa405a..f67ca5bdc 100644 --- a/plio/io/io_gdal.py +++ b/plio/io/io_gdal.py @@ -506,14 +506,18 @@ def read_array(self, band=1, pixels=None, dtype=None): """ band = self.dataset.GetRasterBand(band) - + offset = band.GetOffset() + offset = 0 if offset is None else offset + scale = band.GetScale() + scale = 1 if scale is None else scale + if dtype is None: dtype = GDAL2NP_CONVERSION[band.DataType] dtype = getattr(np, dtype) if not pixels: - array = band.ReadAsArray().astype(dtype) + array = (band.ReadAsArray().astype(dtype) + offset) * scale #if self.north_up == False: # array = np.flipud(array) else: @@ -534,7 +538,7 @@ def read_array(self, band=1, pixels=None, dtype=None): if ystart + ycount > ymax: ycount = ymax - ystart - array = band.ReadAsArray(xstart, ystart, xcount, ycount).astype(dtype) + array = (band.ReadAsArray(xstart, ystart, xcount, ycount).astype(dtype) + offset) * scale return array