diff --git a/geoarray/baseclasses.py b/geoarray/baseclasses.py index 69f3ca130e4bfc79c4737aea4e297305d07eb1c3..f4f12afcd6abb3a0968b371945df25a165e6ad91 100644 --- a/geoarray/baseclasses.py +++ b/geoarray/baseclasses.py @@ -1530,9 +1530,9 @@ class GeoArray(object): bNs_out = list(self.bandnames) _meta_out = self.meta - sub_gA._gt = sub_gt - sub_gA._metadata = _meta_out - sub_gA._bandnames = bNs_out + sub_gA.gt = sub_gt + sub_gA.metadata = _meta_out + sub_gA.bandnames = bNs_out sub_gA.filePath = self.filePath if xslicing or yslicing: sub_gA._footprint_poly = None # reset footprint_poly -> has to be updated diff --git a/tests/test_geoarray.py b/tests/test_geoarray.py index 5a022306d5c9738507b08938f4e4496eb67c1873..b5c83bef40dcae9579fc5935b0a18d2328f8a2d0 100644 --- a/tests/test_geoarray.py +++ b/tests/test_geoarray.py @@ -489,6 +489,24 @@ class Test_GeoarrayFunctions(unittest.TestCase): reset_bandnames=True) self.assertTrue(list(sub_gA.bandnames), ['B1']) + # test arrays are equal + sub_gA = self.testtiff.get_subset(xslice=slice(2, 5), yslice=slice(None, 3), zslice=slice(1, 2)) + sub_testtiff_arr = self.testtiff[:3, 2:5, 1:2] + self.assertTrue(np.array_equal(sub_gA[:], sub_testtiff_arr)) + + # test deepcopied arrays (modification of sub_gA.arr must not affect self.testtiff.arr) + sub_gA[:2, :2] = 99 + self.assertTrue(np.array_equal(sub_gA[:2, :2], np.full((2, 2, 1), 99, self.testtiff.dtype))) + self.assertNotEqual(np.mean(sub_testtiff_arr[:2, :2]), 99) + self.assertNotEqual(np.std(sub_testtiff_arr[:2, :2]), 0) + + # test metadata + self.assertEqual(sub_gA.meta.bands, 1) + self.assertEqual(len(list(sub_gA.meta.band_meta.values())[0]), 1) + self.assertEqual(len(list(sub_gA.bandnames.keys())), 1) + self.assertNotEqual(sub_gA.gt, self.testtiff.gt) + self.assertEqual(sub_gA.prj, self.testtiff.prj) + # test not to return GeoArray out = self.testtiff.get_subset(xslice=slice(2, 5), yslice=slice(None, 3), zslice=slice(1, 2), return_GeoArray=False)