From e9dc408eb521e0471d636efd7e5348661717be2d Mon Sep 17 00:00:00 2001 From: Luis Veci Date: Thu, 1 Jun 2023 20:58:25 -0400 Subject: [PATCH 1/3] SNAP-3518 clone Datum when transfering GcpGeoCoding --- .../main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java | 1 + .../java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/snap-core/src/main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java b/snap-core/src/main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java index 35f67ac74b1..b616a23c796 100644 --- a/snap-core/src/main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java +++ b/snap-core/src/main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java @@ -204,6 +204,7 @@ public GeoCoding clone() { clone.inverseMap = inverseMap; clone.rotator = rotator; clone.method = method; + clone.datum = datum; return clone; } diff --git a/snap-core/src/test/java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java b/snap-core/src/test/java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java index ea4fc06059d..4f1e60a5048 100644 --- a/snap-core/src/test/java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java +++ b/snap-core/src/test/java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java @@ -1,5 +1,6 @@ package org.esa.snap.core.datamodel; +import com.bc.ceres.core.Assert; import org.esa.snap.core.dataop.maptransf.Datum; import org.junit.Before; import org.junit.Test; @@ -7,6 +8,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertNotNull; /** * @author Marco Peters @@ -39,6 +41,7 @@ public void testTransferGeoCoding() { PixelPos pixelPos = gcpGeoCoding.getPixelPos(new GeoPos(4.0, 2.0), null); assertEquals(5.9, pixelPos.x, 1e-8); assertEquals(3.2, pixelPos.y, 1e-8); + assertNotNull("getDatum()", gcpGeoCoding.getDatum()); boolean transferred = gcpGeoCoding.transferGeoCoding(source, target, null); @@ -48,6 +51,7 @@ public void testTransferGeoCoding() { pixelPos = geoCoding.getPixelPos(new GeoPos(4.0, 2.0), null); assertEquals(5.9, pixelPos.x, 1e-8); assertEquals(3.2, pixelPos.y, 1e-8); + assertNotNull("getDatum()", geoCoding.getDatum()); } @@ -150,12 +154,14 @@ public void testClone() { GeoPos geoPos = gcpGeoCoding.getGeoPos(pixelPos, null); assertEquals(3.3333333333333326, geoPos.lon, 1e-8); assertEquals(5.555555555555558, geoPos.lat, 1e-8); + assertNotNull("getDatum()", gcpGeoCoding.getDatum()); final GeoCoding clone = gcpGeoCoding.clone(); geoPos = clone.getGeoPos(pixelPos, null); assertEquals(3.3333333333333326, geoPos.lon, 1e-8); assertEquals(5.555555555555558, geoPos.lat, 1e-8); + assertNotNull("getDatum()", clone.getDatum()); } @Test From 6abfba179724fd56425521d3ebeb67878c492718 Mon Sep 17 00:00:00 2001 From: Luis Veci Date: Fri, 2 Jun 2023 07:53:19 -0400 Subject: [PATCH 2/3] SNAP-3518 clone Datum and Ellipsoid --- .../main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java | 2 +- .../main/java/org/esa/snap/core/dataop/maptransf/Datum.java | 4 ++-- .../java/org/esa/snap/core/dataop/maptransf/Ellipsoid.java | 6 +++--- .../java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java | 3 +++ 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/snap-core/src/main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java b/snap-core/src/main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java index b616a23c796..57f4dae1ed1 100644 --- a/snap-core/src/main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java +++ b/snap-core/src/main/java/org/esa/snap/core/datamodel/GcpGeoCoding.java @@ -204,7 +204,7 @@ public GeoCoding clone() { clone.inverseMap = inverseMap; clone.rotator = rotator; clone.method = method; - clone.datum = datum; + clone.datum = datum.clone(); return clone; } diff --git a/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Datum.java b/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Datum.java index 29756721fe5..702cd91b8e2 100644 --- a/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Datum.java +++ b/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Datum.java @@ -76,9 +76,9 @@ public double getDZ() { } @Override - public Object clone() { + public Datum clone() { try { - return super.clone(); + return (Datum) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalStateException(e); } diff --git a/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Ellipsoid.java b/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Ellipsoid.java index d3098f2e2ba..83d2ec6337e 100644 --- a/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Ellipsoid.java +++ b/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Ellipsoid.java @@ -21,7 +21,7 @@ * @deprecated since BEAM 4.7, use {@link org.opengis.referencing.datum.Ellipsoid} instead. */ @Deprecated -public class Ellipsoid { +public class Ellipsoid implements Cloneable { /** * The standard WGS-72 ellipsoid. @@ -66,9 +66,9 @@ public double getSemiMajor() { } @Override - public Object clone() { + public Ellipsoid clone() { try { - return super.clone(); + return (Ellipsoid) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalStateException(e); } diff --git a/snap-core/src/test/java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java b/snap-core/src/test/java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java index 4f1e60a5048..2b0c81ad7bf 100644 --- a/snap-core/src/test/java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java +++ b/snap-core/src/test/java/org/esa/snap/core/datamodel/GcpGeoCodingTest.java @@ -1,5 +1,6 @@ package org.esa.snap.core.datamodel; +import com.bc.ceres.annotation.STTM; import com.bc.ceres.core.Assert; import org.esa.snap.core.dataop.maptransf.Datum; import org.junit.Before; @@ -34,6 +35,7 @@ public void setUp() throws Exception { @SuppressWarnings("ConstantConditions") @Test + @STTM("SNAP-3518") public void testTransferGeoCoding() { Scene source = SceneFactory.createScene(new Band("source", ProductData.TYPE_INT8, 10, 10)); Scene target = SceneFactory.createScene(new Band("target", ProductData.TYPE_INT8, 10, 10)); @@ -148,6 +150,7 @@ public void testCanClone() { } @Test + @STTM("SNAP-3518") public void testClone() { final PixelPos pixelPos = new PixelPos(6.5, 2.5); From 7819c747c6fad4e5baeba07797a1bb4c53fd7390 Mon Sep 17 00:00:00 2001 From: Luis Veci Date: Fri, 2 Jun 2023 07:59:11 -0400 Subject: [PATCH 3/3] include cloned ellipsoid --- .../main/java/org/esa/snap/core/dataop/maptransf/Datum.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Datum.java b/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Datum.java index 702cd91b8e2..2c52912d86b 100644 --- a/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Datum.java +++ b/snap-core/src/main/java/org/esa/snap/core/dataop/maptransf/Datum.java @@ -77,11 +77,7 @@ public double getDZ() { @Override public Datum clone() { - try { - return (Datum) super.clone(); - } catch (CloneNotSupportedException e) { - throw new IllegalStateException(e); - } + return new Datum(name, ellipsoid.clone(), dx, dy, dz); } @Override