From 024e35a44da026982b5933258e26e65c0349981a Mon Sep 17 00:00:00 2001 From: Daniel Scheffler Date: Wed, 16 Oct 2019 20:24:41 +0200 Subject: [PATCH] Fixed incompatibility of SensorMapGeometryTransformer with 3D input arrays. Updated version info. Signed-off-by: Daniel Scheffler --- py_tools_ds/geo/raster/reproject.py | 12 ++++++++---- py_tools_ds/version.py | 4 ++-- tests/test_geo/test_raster/test_reproject.py | 11 +++++++++++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/py_tools_ds/geo/raster/reproject.py b/py_tools_ds/geo/raster/reproject.py index 4756ee1..0133151 100755 --- a/py_tools_ds/geo/raster/reproject.py +++ b/py_tools_ds/geo/raster/reproject.py @@ -795,7 +795,7 @@ class SensorMapGeometryTransformer(object): % (str((self.area_definition.height, self.area_definition.width)), str(data_mapgeo.shape[:2]))) if data.ndim > 2 and data_mapgeo.ndim == 2: - raise RuntimeError('The computed map geometry output only one band instead of the expected %d bands.' + raise RuntimeError('The computed map geometry output has only one band instead of the expected %d bands.' % data.shape[2]) return data_mapgeo, out_gt, out_prj # type: Tuple[np.ndarray, tuple, str] @@ -818,11 +818,15 @@ class SensorMapGeometryTransformer(object): data_sensorgeo = self._resample(data, self.area_definition, self.swath_definition) # output validation - if not data_sensorgeo.shape == self.lats.shape: - raise RuntimeError('The computed sensor geometry output does not have the same size like the coordinates ' - 'array. Coordinates array: %s; output array: %s.' + if not data_sensorgeo.shape[:2] == self.lats.shape[:2]: + raise RuntimeError('The computed sensor geometry output does not have the same X/Y dimension like the ' + 'coordinates array. Coordinates array: %s; output array: %s.' % (self.lats.shape, data_sensorgeo.shape)) + if data.ndim > 2 and data_sensorgeo.ndim == 2: + raise RuntimeError('The computed sensor geometry output has only one band instead of the expected %d bands.' + % data.shape[2]) + return data_sensorgeo diff --git a/py_tools_ds/version.py b/py_tools_ds/version.py index 66b8ff6..9700656 100644 --- a/py_tools_ds/version.py +++ b/py_tools_ds/version.py @@ -19,5 +19,5 @@ # You should have received a copy of the GNU Lesser General Public License along # with this program. If not, see . -__version__ = '0.14.21' -__versionalias__ = '20190814_01' +__version__ = '0.14.22' +__versionalias__ = '20191016_01' diff --git a/tests/test_geo/test_raster/test_reproject.py b/tests/test_geo/test_raster/test_reproject.py index f86e326..8d7f5c4 100644 --- a/tests/test_geo/test_raster/test_reproject.py +++ b/tests/test_geo/test_raster/test_reproject.py @@ -74,6 +74,17 @@ class Test_SensorMapGeometryTransformer(TestCase): self.assertFalse(np.array_equal(np.unique(dem_sensors_geo), np.array([0]))) self.assertEquals(dem_sensors_geo.shape, (150, 1000)) + def test_to_sensor_geometry_3DInput(self): + SMGT = SensorMapGeometryTransformer(lons=self.lons, + lats=self.lats, + resamp_alg='nearest') + dem_sensors_geo = SMGT.to_sensor_geometry(np.dstack([self.dem_map_geo] * 2), + src_prj=32632, src_extent=self.dem_area_extent_coarse_subset_utm) + self.assertIsInstance(dem_sensors_geo, np.ndarray) + self.assertFalse(np.array_equal(np.unique(dem_sensors_geo), np.array([0]))) + self.assertEquals(dem_sensors_geo.shape, (150, 1000, 2)) + self.assertTrue(np.array_equal(dem_sensors_geo[:, :, 0], dem_sensors_geo[:, :, 1])) + def test_to_map_geometry_lonlat(self): SMGT = SensorMapGeometryTransformer(lons=self.lons, lats=self.lats, -- GitLab