This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-4.0 in repository https://gitbox.apache.org/repos/asf/sis.git
commit 32b875d621abb41775ca7a200bb087c175402b7c Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Wed Sep 21 16:26:53 2022 +0200 Rename `GridGeometry.translate(…)` as `shiftGrid(…)` for making clearer that this method changes grid coordinates without changing real world coordinates. --- .../java/org/apache/sis/gui/map/StatusBar.java | 2 +- .../sis/coverage/grid/GridCoverageProcessor.java | 8 ++++---- .../org/apache/sis/coverage/grid/GridExtent.java | 2 +- .../org/apache/sis/coverage/grid/GridGeometry.java | 24 +++++++++++++++++++--- .../sis/coverage/grid/TranslatedGridCoverage.java | 2 +- .../internal/coverage/j2d/DeferredProperty.java | 2 +- .../apache/sis/coverage/grid/GridGeometryTest.java | 6 +++--- .../coverage/grid/ResampledGridCoverageTest.java | 2 +- .../coverage/grid/TranslatedGridCoverageTest.java | 2 +- .../sis/internal/storage/image/WritableStore.java | 2 +- 10 files changed, 35 insertions(+), 17 deletions(-) diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/StatusBar.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/StatusBar.java index 33049342e8..6823ef709c 100644 --- a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/StatusBar.java +++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/StatusBar.java @@ -728,7 +728,7 @@ public class StatusBar extends Widget implements EventHandler<MouseEvent> { offset[i] = Math.negateExact(sliceExtent.getLow(i)); } sliceExtent = sliceExtent.translate(offset); - geometry = geometry.translate(offset); // Does not change the "real world" envelope. + geometry = geometry.shiftGrid(offset); // Does not change the "real world" envelope. try { geometry = geometry.relocate(sliceExtent); // Changes the "real world" envelope. } catch (TransformException e) { diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java index 67a458a3d0..db6cc2652b 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java +++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java @@ -183,7 +183,7 @@ public class GridCoverageProcessor implements Cloneable { * <div class="note"><b>Example:</b> * if the {@link #resample(GridCoverage, GridGeometry) resample(…)} method is invoked with parameter values * that cause the resampling to be a translation of the grid by an integer amount of cells, then by default - * {@link GridCoverageProcessor} will use the {@link #translateGrid(GridCoverage, long...) translateGrid(…)} + * {@link GridCoverageProcessor} will use the {@link #shiftGrid(GridCoverage, long[]) shiftGrid(…)} * algorithm instead. This option can be cleared for forcing a full resampling operation in all cases.</div> */ REPLACE_OPERATION, @@ -345,7 +345,7 @@ public class GridCoverageProcessor implements Cloneable { } /** - * Returns a coverage with a grid translated by the given amount of cells compared to the source. + * Translates grid coordinates by the given amount of cells without changing "real world" coordinates. * The translated grid has the same {@linkplain GridExtent#getSize(int) size} than the source, * i.e. both low and high grid coordinates are displaced by the same amount of cells. * The "grid to CRS" transforms are adjusted accordingly in order to map to the same @@ -371,11 +371,11 @@ public class GridCoverageProcessor implements Cloneable { * @throws ArithmeticException if the translation results in coordinates that overflow 64-bits integer. * * @see GridExtent#translate(long...) - * @see GridGeometry#translate(long...) + * @see GridGeometry#shiftGrid(long...) * * @since 1.3 */ - public GridCoverage translateGrid(final GridCoverage source, long... translation) { + public GridCoverage shiftGrid(final GridCoverage source, long... translation) { ArgumentChecks.ensureNonNull("source", source); ArgumentChecks.ensureNonNull("translation", translation); final boolean allowSourceReplacement; diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridExtent.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridExtent.java index 7e75053252..9d0f41cfba 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridExtent.java +++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridExtent.java @@ -1697,7 +1697,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable * @throws ArithmeticException if the translation results in coordinates that overflow 64-bits integer. * * @see #startsAtZero() - * @see GridGeometry#translate(long...) + * @see GridGeometry#shiftGrid(long...) * * @since 1.1 */ diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridGeometry.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridGeometry.java index 5bc761668d..7261071b29 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridGeometry.java +++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridGeometry.java @@ -233,6 +233,7 @@ public class GridGeometry implements LenientComparable, Serializable { * @see #getGridToCRS(PixelInCell) * @see PixelInCell#CELL_CENTER */ + @SuppressWarnings("serial") // Not statically typed as Serializable. protected final MathTransform gridToCRS; /** @@ -242,6 +243,7 @@ public class GridGeometry implements LenientComparable, Serializable { * @serial This field is serialized because it may be a value specified explicitly at construction time, * in which case it can be more accurate than a computed value. */ + @SuppressWarnings("serial") // Not statically typed as Serializable. final MathTransform cornerToCRS; /** @@ -1444,7 +1446,7 @@ public class GridGeometry implements LenientComparable, Serializable { } /** - * Returns a grid geometry translated by the given amount of cells compared to this grid. + * Translates grid coordinates by the given amount of cells without changing "real world" coordinates. * The returned grid has the same {@linkplain GridExtent#getSize(int) size} than this grid, * i.e. both low and high grid coordinates are displaced by the same amount of cells. * The "grid to CRS" transforms are adjusted accordingly in order to map to the same @@ -1463,9 +1465,9 @@ public class GridGeometry implements LenientComparable, Serializable { * * @see GridExtent#translate(long...) * - * @since 1.1 + * @since 1.3 */ - public GridGeometry translate(final long... translation) { + public GridGeometry shiftGrid(final long... translation) { ArgumentChecks.ensureNonNull("translation", translation); GridExtent newExtent = extent; if (newExtent != null) { @@ -1489,6 +1491,22 @@ public class GridGeometry implements LenientComparable, Serializable { return new GridGeometry(newExtent, t1, t2, envelope, resolution, nonLinears); } + /** + * Returns a grid geometry translated by the given amount of cells compared to this grid. + * + * @param translation translation to apply on each grid axis in order. + * @return a grid geometry whose coordinates and the "grid to CRS" transforms have been translated by given amounts. + * + * @since 1.1 + * + * @deprecated Renamed {@link #shiftGrid(long...)} for making clearer that this method changes + * grid coordinates without changing "real world" coordinates. + */ + @Deprecated + public GridGeometry translate(final long... translation) { + return shiftGrid(translation); + } + /** * Returns a grid geometry with the given grid extent, which implies a new "real world" computation. * The "grid to CRS" transforms and the resolution stay the same than this {@code GridGeometry}. diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/TranslatedGridCoverage.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/TranslatedGridCoverage.java index 51cd5969bf..577c887ddc 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/TranslatedGridCoverage.java +++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/TranslatedGridCoverage.java @@ -85,7 +85,7 @@ final class TranslatedGridCoverage extends DerivedGridCoverage { } final GridGeometry gridGeometry = source.getGridGeometry(); if (domain == null) { - domain = gridGeometry.translate(translation); + domain = gridGeometry.shiftGrid(translation); } else if (!domain.extent.isSameSize(gridGeometry.extent)) { return null; } diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/DeferredProperty.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/DeferredProperty.java index 18743cdb45..25f9bcb55f 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/DeferredProperty.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/DeferredProperty.java @@ -121,7 +121,7 @@ public final class DeferredProperty { @Override public GridGeometry apply(final RenderedImage image) { final GridExtent extent = grid.getExtent(); - return grid.selectDimensions(dimX, dimY).translate( + return grid.selectDimensions(dimX, dimY).shiftGrid( Math.subtractExact(image.getMinX(), extent.getLow(dimX)), Math.subtractExact(image.getMinY(), extent.getLow(dimY))); } diff --git a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridGeometryTest.java b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridGeometryTest.java index 86fcf19682..5a4b41c690 100644 --- a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridGeometryTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridGeometryTest.java @@ -500,10 +500,10 @@ public final strictfp class GridGeometryTest extends TestCase { } /** - * Tests {@link GridGeometry#translate(long...)}. + * Tests {@link GridGeometry#shiftGrid(long[])}. */ @Test - public void testTranslate() { + public void testShiftGrid() { GridGeometry grid = new GridGeometry( new GridExtent(17, 10), PixelInCell.CELL_CENTER, @@ -516,7 +516,7 @@ public final strictfp class GridGeometryTest extends TestCase { * The "real world" envelope should be unchanged by grid translation. */ final Envelope envelope = grid.getEnvelope(); - grid = grid.translate(12, 15); + grid = grid.shiftGrid(12, 15); assertExtentEquals(new long[] {12, 15}, new long[] {12 + 16, 15 + 9}, grid.getExtent()); assertEquals(envelope, grid.getEnvelope()); } diff --git a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java index 98f5783b5e..0dc02ef9bf 100644 --- a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java @@ -303,7 +303,7 @@ public final strictfp class ResampledGridCoverageTest extends TestCase { final GridCoverageProcessor processor = new GridCoverageProcessor(); // With all optimization enabled. final GridCoverage source = createCoverage2D(); final GridGeometry sourceGG = source.getGridGeometry(); - final GridGeometry targetGG = sourceGG.translate(-10, 15); + final GridGeometry targetGG = sourceGG.shiftGrid(-10, 15); final GridCoverage target = processor.resample(source, targetGG); assertInstanceOf("Expected fast path.", TranslatedGridCoverage.class, target); assertSame(targetGG, target.getGridGeometry()); diff --git a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/TranslatedGridCoverageTest.java b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/TranslatedGridCoverageTest.java index 7fcb43fd01..ea1216eb26 100644 --- a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/TranslatedGridCoverageTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/TranslatedGridCoverageTest.java @@ -72,7 +72,7 @@ public final strictfp class TranslatedGridCoverageTest extends TestCase { public void testUsingProcessor() { final GridCoverageProcessor processor = new GridCoverageProcessor(); final GridCoverage source = createCoverage(); - final GridCoverage target = processor.translateGrid(source, 30, -5); + final GridCoverage target = processor.shiftGrid(source, 30, -5); assertExtentStarts(source.getGridGeometry().getExtent(), -20, -10); assertExtentStarts(target.getGridGeometry().getExtent(), 10, -15); /* diff --git a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/image/WritableStore.java b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/image/WritableStore.java index cb7956c0eb..3fe15bd0fa 100644 --- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/image/WritableStore.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/image/WritableStore.java @@ -216,7 +216,7 @@ class WritableStore extends WorldFileStore { for (int i=0; i<translation.length; i++) { translation[i] = Math.negateExact(extent.getLow(i)); } - gg = gg.translate(translation); + gg = gg.shiftGrid(translation); /* * If the data store already contains a coverage, then the given grid geometry * must be identical to the existing one, in which case there is nothing to do.