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
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new 24d7b6901d `PixelInCell` code list has been removed from ISO
19111:2019. Replaced by an enumeration in `org.opengis.coverage.grid`.
24d7b6901d is described below
commit 24d7b6901de765e54cbfa96bc9c466fbba37c8c9
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Mon May 20 11:44:07 2024 +0200
`PixelInCell` code list has been removed from ISO 19111:2019.
Replaced by an enumeration in `org.opengis.coverage.grid`.
---
.../org/apache/sis/coverage/CoverageCombiner.java | 2 +-
.../org/apache/sis/coverage/RegionOfInterest.java | 2 +-
.../coverage/grid/CoordinateOperationFinder.java | 1 -
.../apache/sis/coverage/grid/DefaultEvaluator.java | 1 -
.../sis/coverage/grid/DimensionalityReduction.java | 11 +-
.../apache/sis/coverage/grid/DomainLinearizer.java | 1 -
.../coverage/grid/FractionalGridCoordinates.java | 1 -
.../apache/sis/coverage/grid/GridCoverage2D.java | 1 -
.../sis/coverage/grid/GridCoverageProcessor.java | 1 -
.../apache/sis/coverage/grid/GridDerivation.java | 1 -
.../org/apache/sis/coverage/grid/GridExtent.java | 3 +-
.../apache/sis/coverage/grid/GridExtentCRS.java | 1 -
.../org/apache/sis/coverage/grid/GridGeometry.java | 11 +-
.../apache/sis/coverage/grid/GridOrientation.java | 1 -
.../org/apache/sis/coverage/grid/PixelInCell.java | 129 +++++++++++++++++++++
.../apache/sis/coverage/grid/PixelTranslation.java | 29 +----
.../sis/coverage/grid/ResampledGridCoverage.java | 1 -
.../apache/sis/coverage/grid/SliceGeometry.java | 1 -
.../sis/coverage/privy/CommonDomainFinder.java | 2 +-
.../sis/coverage/privy/MultiSourceArgument.java | 2 +-
.../main/org/apache/sis/image/ImageCombiner.java | 2 +-
.../main/org/apache/sis/image/ImageProcessor.java | 2 +-
.../main/org/apache/sis/image/ResampledImage.java | 4 +-
.../grid/BandAggregateGridCoverageTest.java | 1 -
.../coverage/grid/BufferedGridCoverageTest.java | 1 -
.../coverage/grid/ConvertedGridCoverageTest.java | 1 -
.../sis/coverage/grid/DimensionAppenderTest.java | 1 -
.../coverage/grid/DimensionalityReductionTest.java | 1 -
.../sis/coverage/grid/GridCoverage2DTest.java | 1 -
.../sis/coverage/grid/GridCoverageBuilderTest.java | 1 -
.../sis/coverage/grid/GridDerivationTest.java | 1 -
.../apache/sis/coverage/grid/GridGeometryTest.java | 1 -
.../sis/coverage/grid/PixelTranslationTest.java | 1 -
.../coverage/grid/ResampledGridCoverageTest.java | 2 +-
.../coverage/grid/TranslatedGridCoverageTest.java | 1 -
.../test/org/apache/sis/util/iso/TypesTest.java | 10 +-
.../coverage/MultiResolutionCoverageLoader.java | 2 +-
.../org/apache/sis/map/coverage/RenderingData.java | 2 +-
.../main/org/apache/sis/portrayal/Canvas.java | 2 +-
.../org/apache/sis/portrayal/CanvasExtent.java | 2 +-
.../MultiResolutionCoverageLoaderTest.java | 2 +-
.../apache/sis/io/wkt/GeodeticObjectParser.java | 5 +-
.../apache/sis/referencing/cs/DefaultAffineCS.java | 3 -
.../sis/referencing/cs/DefaultCartesianCS.java | 3 -
.../sis/referencing/datum/DatumShiftGrid.java | 2 +-
.../sis/referencing/datum/DefaultImageDatum.java | 15 ++-
.../apache/sis/referencing/datum/package-info.java | 1 -
.../referencing/operation/SubOperationInfo.java | 2 +-
.../operation/builder/LinearTransformBuilder.java | 2 +-
.../operation/builder/LocalizationGridBuilder.java | 4 +-
.../sis/referencing/operation/gridded/Tile.java | 13 +--
.../sis/xml/bind/referencing/CD_PixelInCell.java | 44 -------
.../sis/referencing/crs/DefaultImageCRSTest.java | 3 +-
.../apache/sis/referencing/crs/HardCodedCRS.java | 5 +-
.../sis/referencing/datum/HardCodedDatum.java | 5 +-
.../sis/storage/geotiff/MultiResolutionImage.java | 2 +-
.../geotiff/reader/GridGeometryBuilder.java | 2 +-
.../sis/storage/geotiff/writer/GeoEncoder.java | 2 +-
.../org/apache/sis/storage/netcdf/base/Grid.java | 2 +-
.../sis/storage/netcdf/base/GridAdjustment.java | 2 +-
.../sis/storage/netcdf/base/GridMapping.java | 2 +-
.../sis/storage/sql/postgis/RasterFormat.java | 2 +-
.../sis/storage/aggregate/CoverageAggregator.java | 2 +-
.../sis/storage/aggregate/DimensionAppender.java | 2 +-
.../apache/sis/storage/aggregate/GridSlice.java | 2 +-
.../sis/storage/base/MemoryGridResource.java | 2 +-
.../apache/sis/storage/base/TiledGridCoverage.java | 2 +-
.../apache/sis/storage/esri/AsciiGridStore.java | 2 +-
.../apache/sis/storage/esri/RawRasterStore.java | 2 +-
.../org/apache/sis/storage/esri/WritableStore.java | 2 +-
.../apache/sis/storage/image/WorldFileStore.java | 2 +-
.../org/apache/sis/storage/tiling/TileMatrix.java | 2 +-
.../org/apache/sis/storage/CoverageQueryTest.java | 2 +-
.../aggregate/BandAggregateGridResourceTest.java | 2 +-
.../sis/storage/base/MemoryGridResourceTest.java | 2 +-
geoapi/snapshot | 2 +-
.../main/org/apache/sis/map/SEPortrayer.java | 2 +-
.../apache/sis/map/service/se1/LineToScene2D.java | 2 +-
.../sis/storage/coveragejson/CoverageResource.java | 2 +-
.../apache/sis/gui/coverage/CoverageCanvas.java | 2 +-
.../apache/sis/gui/coverage/GridSliceSelector.java | 2 +-
.../sis/gui/coverage/StyledRenderingData.java | 2 +-
.../main/org/apache/sis/gui/map/MapCanvas.java | 2 +-
.../org/apache/sis/gui/map/OperationFinder.java | 2 +-
.../main/org/apache/sis/gui/map/StatusBar.java | 2 +-
.../gui/referencing/RecentReferenceSystems.java | 2 +-
.../apache/sis/gui/coverage/CoverageCanvasApp.java | 2 +-
87 files changed, 220 insertions(+), 194 deletions(-)
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java
index 1834312069..33c7c8eb8a 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java
@@ -24,7 +24,7 @@ import static java.lang.Math.round;
import javax.measure.IncommensurableException;
import javax.measure.Unit;
import org.opengis.geometry.Envelope;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.MathTransform1D;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/RegionOfInterest.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/RegionOfInterest.java
index c237dcbe80..82ca8faf9b 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/RegionOfInterest.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/RegionOfInterest.java
@@ -20,7 +20,7 @@ import java.awt.Shape;
import java.util.Objects;
import java.io.Serializable;
import org.opengis.util.FactoryException;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.CoordinateOperation;
import org.opengis.referencing.operation.MathTransform;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/CoordinateOperationFinder.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/CoordinateOperationFinder.java
index fc5f865e08..14147de8df 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/CoordinateOperationFinder.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/CoordinateOperationFinder.java
@@ -23,7 +23,6 @@ import javax.measure.quantity.Length;
import org.opengis.geometry.Envelope;
import org.opengis.geometry.DirectPosition;
import org.opengis.util.FactoryException;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.CoordinateOperation;
import org.opengis.referencing.operation.MathTransform;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java
index c8e2744201..599b188665 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java
@@ -24,7 +24,6 @@ import java.awt.image.RenderedImage;
import org.opengis.util.FactoryException;
import org.opengis.geometry.DirectPosition;
import org.opengis.metadata.extent.GeographicBoundingBox;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java
index cf62d7a246..51fe89be0c 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java
@@ -28,7 +28,6 @@ import org.opengis.geometry.DirectPosition;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransformFactory;
import org.opengis.referencing.operation.MathTransform;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.util.Utilities;
import org.apache.sis.util.ArraysExt;
import org.apache.sis.util.ArgumentChecks;
@@ -508,12 +507,10 @@ public class DimensionalityReduction implements
UnaryOperator<GridCoverage>, Ser
* @return removed part of the conversion from grid coordinates to "real
world" coordinates.
*/
private MathTransform getRemovedGridToCRS(final PixelInCell anchor) {
- if (anchor == PixelInCell.CELL_CENTER) {
- return removedGridToCRS;
- } else if (anchor == PixelInCell.CELL_CORNER) {
- return removedCornerToCRS;
- } else {
- return PixelTranslation.translate(removedGridToCRS,
PixelInCell.CELL_CENTER, anchor);
+ switch (anchor) {
+ case CELL_CENTER: return removedGridToCRS;
+ case CELL_CORNER: return removedCornerToCRS;
+ default: return PixelTranslation.translate(removedGridToCRS,
PixelInCell.CELL_CENTER, anchor);
}
}
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java
index 4448e73763..fc4990ecd6 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java
@@ -18,7 +18,6 @@ package org.apache.sis.coverage.grid;
import java.util.Arrays;
import org.opengis.util.FactoryException;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import org.apache.sis.referencing.operation.builder.LinearTransformBuilder;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/FractionalGridCoordinates.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/FractionalGridCoordinates.java
index b38333e526..5cf4dfb9fe 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/FractionalGridCoordinates.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/FractionalGridCoordinates.java
@@ -21,7 +21,6 @@ import java.io.Serializable;
import org.opengis.geometry.DirectPosition;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.feature.internal.Resources;
import org.apache.sis.util.StringBuilders;
import org.apache.sis.util.privy.Strings;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverage2D.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverage2D.java
index 98eee84600..e7c53d1b96 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverage2D.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverage2D.java
@@ -38,7 +38,6 @@ import org.opengis.util.NameFactory;
import org.opengis.util.InternationalString;
import org.opengis.util.FactoryException;
import org.opengis.geometry.DirectPosition;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.NoninvertibleTransformException;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverageProcessor.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverageProcessor.java
index a659e02c52..3128803050 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverageProcessor.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverageProcessor.java
@@ -31,7 +31,6 @@ import java.awt.image.RenderedImage;
import javax.measure.Quantity;
import org.opengis.util.FactoryException;
import org.opengis.metadata.spatial.DimensionNameType;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.crs.SingleCRS;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridDerivation.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridDerivation.java
index 4db9e3df3d..8e4383a805 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridDerivation.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridDerivation.java
@@ -25,7 +25,6 @@ import java.math.RoundingMode;
import org.opengis.geometry.Envelope;
import org.opengis.geometry.DirectPosition;
import org.opengis.util.FactoryException;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java
index efc962ec0d..58e1a55109 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java
@@ -36,7 +36,6 @@ import org.opengis.referencing.cs.AxisDirection;
import org.opengis.referencing.cs.CoordinateSystem;
import org.opengis.referencing.cs.CoordinateSystemAxis;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
@@ -1230,7 +1229,7 @@ public class GridExtent implements GridEnvelope,
LenientComparable, Serializable
* @throws TransformException if the envelope cannot be computed with the
given transform.
*
* @see GridGeometry#getEnvelope()
- * @see org.opengis.referencing.datum.PixelInCell#CELL_CORNER
+ * @see PixelInCell#CELL_CORNER
*
* @since 1.1
*/
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtentCRS.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtentCRS.java
index 95020e45e4..ce159e20c1 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtentCRS.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtentCRS.java
@@ -36,7 +36,6 @@ import org.opengis.referencing.crs.SingleCRS;
import org.opengis.referencing.crs.CompoundCRS;
import org.opengis.referencing.crs.DerivedCRS;
import org.opengis.referencing.crs.EngineeringCRS;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.Conversion;
import org.opengis.referencing.operation.OperationMethod;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java
index 2591a2588a..89880ba706 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java
@@ -30,7 +30,6 @@ import org.opengis.util.FactoryException;
import org.opengis.metadata.Identifier;
import org.opengis.metadata.extent.GeographicBoundingBox;
import org.opengis.geometry.Envelope;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
@@ -924,12 +923,10 @@ public class GridGeometry implements LenientComparable,
Serializable {
*/
public MathTransform getGridToCRS(final PixelInCell anchor) {
final MathTransform mt;
- if (anchor.equals(PixelInCell.CELL_CENTER)) { // Implicit
null check.
- mt = gridToCRS;
- } else if (anchor == PixelInCell.CELL_CORNER) {
- mt = cornerToCRS;
- } else {
- mt = PixelTranslation.translate(gridToCRS,
PixelInCell.CELL_CENTER, anchor);
+ switch (anchor) {
+ case CELL_CENTER: mt = gridToCRS; break;
+ case CELL_CORNER: mt = cornerToCRS; break;
+ default: mt = PixelTranslation.translate(gridToCRS,
PixelInCell.CELL_CENTER, anchor); break;
}
if (mt != null) {
return mt;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridOrientation.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridOrientation.java
index e04b8d0954..6fc1594eb3 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridOrientation.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridOrientation.java
@@ -19,7 +19,6 @@ package org.apache.sis.coverage.grid;
import java.util.Objects;
import java.io.Serializable;
import org.opengis.geometry.Envelope;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.referencing.cs.AxesConvention;
import org.apache.sis.util.ArgumentChecks;
import org.apache.sis.util.resources.Errors;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java
new file mode 100644
index 0000000000..0e94ee071d
--- /dev/null
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.coverage.grid;
+
+import org.opengis.util.ControlledVocabulary;
+import org.opengis.metadata.spatial.PixelOrientation;
+
+
+/**
+ * Whether a "grid to real world" transform gives the coordinates of the cell
corner or cell center.
+ * This enumeration is equivalent to a subset of {@link PixelOrientation},
+ * but applicable to any number of dimensions.
+ *
+ * @author Martin Desruisseaux (Geomatys)
+ * @version 1.5
+ *
+ * @see PixelOrientation
+ *
+ * @since 1.5
+ */
+public enum PixelInCell implements ControlledVocabulary {
+ /**
+ * "Real world" coordinates give the location of the cell center.
+ *
+ * @see PixelOrientation#CENTER
+ */
+ CELL_CENTER("cell center", PixelOrientation.CENTER, 0),
+
+ /**
+ * "Real world" coordinates give the location of the cell corner having
smallest coordinate values.
+ * For a two-dimensional image having row indices (<var>y</var>
coordinates) increasing downward,
+ * this the upper-left corner.
+ *
+ * @see PixelOrientation#UPPER_LEFT
+ */
+ CELL_CORNER("cell corner", PixelOrientation.UPPER_LEFT, -0.5);
+
+ /**
+ * The identifier in legacy ISO 19111 specification.
+ */
+ private final String identifier;
+
+ /**
+ * The two-dimensional pixel orientation which is equivalent to this
enumeration value.
+ * This equivalence can be used for converting <var>n</var>-dimensional
parameters to
+ * the more specific two-dimensional case.
+ *
+ * <table class="sis">
+ * <caption>Pixel orientation equivalences</caption>
+ * <tr><th>Pixel in cell</th><th>Pixel orientation</th></tr>
+ * <tr><td>{@link #CELL_CENTER}</td><td>{@link
PixelOrientation#CENTER}</td></tr>
+ * <tr><td>{@link #CELL_CORNER}</td><td>{@link
PixelOrientation#UPPER_LEFT}</td></tr>
+ * </table>
+ *
+ * @see PixelTranslation#getPixelOrientation(PixelInCell)
+ */
+ final PixelOrientation orientation;
+
+ /**
+ * The position relative to the cell center, in fractional number of cells.
+ * This is typically used for <var>n</var>-dimensional grids, where the
number of dimension is unknown.
+ * The translation is determined from the following table, with the same
value applied to all dimensions:
+ *
+ * <table class="sis">
+ * <caption>Translations</caption>
+ * <tr><th>Pixel in cell</th><th>offset</th></tr>
+ * <tr><td>{@link #CELL_CENTER}</td><td>{@code 0.0}</td></tr>
+ * <tr><td>{@link #CELL_CORNER}</td><td>{@code -0.5}</td></tr>
+ * </table>
+ *
+ * @see PixelTranslation#getPixelTranslation(PixelInCell)
+ */
+ final double translationFromCentre;
+
+ /**
+ * Creates a new enumeration value.
+ */
+ private PixelInCell(final String identifier, final PixelOrientation
orientation, final double translationFromCentre) {
+ this.identifier = identifier;
+ this.orientation = orientation;
+ this.translationFromCentre = translationFromCentre;
+ }
+
+ /**
+ * Returns the identifier declared in the legacy ISO 19111 specification.
+ *
+ * @return the legacy ISO/OGC identifier for this constant.
+ */
+ @Override
+ public String identifier() {
+ return identifier;
+ }
+
+ /**
+ * Returns all the names of this enumeration value. The returned array
contains
+ * the {@linkplain #name() name} and the {@linkplain #identifier()
identifier}.
+ *
+ * @return all names of this constant. This array is never null and never
empty.
+ */
+ @Override
+ public String[] names() {
+ return new String[] {name(), identifier};
+ }
+
+ /**
+ * Returns the enumeration of the same kind as this item.
+ * This is equivalent to {@link #values()}.
+ *
+ * @return the enumeration of the same kind as this item.
+ */
+ @Override
+ public ControlledVocabulary[] family() {
+ return values();
+ }
+}
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelTranslation.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelTranslation.java
index d4ce805088..ed7bbaf7d0 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelTranslation.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelTranslation.java
@@ -20,7 +20,6 @@ import java.util.Map;
import java.io.Serializable;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.metadata.spatial.PixelOrientation;
import static org.opengis.metadata.spatial.PixelOrientation.*;
import org.apache.sis.util.Static;
@@ -64,7 +63,7 @@ import
org.apache.sis.referencing.operation.transform.MathTransforms;
* }
*
* @author Martin Desruisseaux (IRD, Geomatys)
- * @version 1.0
+ * @version 1.5
*
* @see PixelInCell
* @see PixelOrientation
@@ -143,19 +142,9 @@ public final class PixelTranslation extends Static
implements Serializable {
*
* @param anchor the {@code PixelInCell} code, or {@code null}.
* @return the corresponding pixel orientation, or {@code null} if the
argument was null.
- * @throws IllegalArgumentException if the given {@code anchor} is not a
known code list value.
*/
public static PixelOrientation getPixelOrientation(final PixelInCell
anchor) {
- if (anchor == null) {
- return null;
- } else if (anchor.equals(PixelInCell.CELL_CENTER)) {
- return CENTER;
- } else if (anchor.equals(PixelInCell.CELL_CORNER)) {
- return UPPER_LEFT;
- } else {
- throw new IllegalArgumentException(Errors.format(
- Errors.Keys.IllegalArgumentValue_2, "anchor", anchor));
- }
+ return (anchor == null) ? null : anchor.orientation;
}
/**
@@ -172,17 +161,9 @@ public final class PixelTranslation extends Static
implements Serializable {
*
* @param anchor the "pixel in cell" value.
* @return the translation for the given "pixel in cell" value.
- * @throws IllegalArgumentException if the given {@code anchor} is not a
known code list value.
*/
public static double getPixelTranslation(final PixelInCell anchor) {
- if (anchor == PixelInCell.CELL_CENTER) {
- return 0;
- } else if (anchor == PixelInCell.CELL_CORNER) {
- return -0.5;
- } else {
- throw new IllegalArgumentException(Errors.format(
- Errors.Keys.IllegalArgumentValue_2, "anchor", anchor));
- }
+ return anchor.translationFromCentre;
}
/**
@@ -237,11 +218,11 @@ public final class PixelTranslation extends Static
implements Serializable {
* @throws IllegalArgumentException if {@code current} or {@code desired}
is not a known code list value.
*/
public static MathTransform translate(final MathTransform gridToCRS, final
PixelInCell current, final PixelInCell desired) {
- if (gridToCRS == null || desired.equals(current)) {
+ if (gridToCRS == null || desired == current) {
return gridToCRS;
}
final int dimension = gridToCRS.getSourceDimensions();
- final double offset = getPixelTranslation(desired) -
getPixelTranslation(current);
+ final double offset = desired.translationFromCentre -
current.translationFromCentre;
final int ci; // Cache index.
if (offset == -0.5) {
ci = 2*dimension - 2;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ResampledGridCoverage.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ResampledGridCoverage.java
index e3e51f20a1..6487144514 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ResampledGridCoverage.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ResampledGridCoverage.java
@@ -21,7 +21,6 @@ import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.image.RenderedImage;
import org.opengis.util.FactoryException;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.TransformException;
import org.opengis.referencing.operation.MathTransform;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/SliceGeometry.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/SliceGeometry.java
index 36b50dbfa1..33bd0adf2b 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/SliceGeometry.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/SliceGeometry.java
@@ -20,7 +20,6 @@ import java.util.function.Function;
import java.awt.image.RenderedImage;
import java.awt.image.ImagingOpException;
import org.opengis.util.FactoryException;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.MathTransformFactory;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/CommonDomainFinder.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/CommonDomainFinder.java
index 97e50fb4d9..b2527b96bb 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/CommonDomainFinder.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/CommonDomainFinder.java
@@ -20,7 +20,7 @@ import java.util.Map;
import java.util.LinkedHashMap;
import java.util.NoSuchElementException;
import org.opengis.util.FactoryException;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/MultiSourceArgument.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/MultiSourceArgument.java
index cd6e6a0b3a..07ae1d50a5 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/MultiSourceArgument.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/MultiSourceArgument.java
@@ -26,7 +26,7 @@ import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.ToIntFunction;
import java.lang.reflect.Array;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.coverage.SampleDimension;
import org.apache.sis.coverage.grid.GridGeometry;
import org.apache.sis.coverage.grid.IllegalGridGeometryException;
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageCombiner.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageCombiner.java
index 9b22549596..94c06b79e1 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageCombiner.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageCombiner.java
@@ -197,7 +197,7 @@ public class ImageCombiner implements
Consumer<RenderedImage> {
/**
* Combines the result of resampling the given image. The resampling
operation is defined by a potentially
* non-linear transform from the <em>destination</em> image to the
specified <em>source</em> image.
- * That transform should map {@linkplain
org.opengis.referencing.datum.PixelInCell#CELL_CENTER pixel centers}.
+ * That transform should map {@linkplain
org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER pixel centers}.
*
* <h4>Properties used</h4>
* This operation uses the following properties in addition to method
parameters:
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageProcessor.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageProcessor.java
index 22debb8fe6..ab355d2d31 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageProcessor.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageProcessor.java
@@ -1052,7 +1052,7 @@ public class ImageProcessor implements Cloneable {
/**
* Creates a new image which will resample the given image. The resampling
operation is defined
* by a potentially non-linear transform from the <em>new</em> image to
the specified <em>source</em> image.
- * That transform should map {@linkplain
org.opengis.referencing.datum.PixelInCell#CELL_CENTER pixel centers}.
+ * That transform should map {@linkplain
org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER pixel centers}.
* If that transform produces coordinates that are outside source envelope
bounds, then the corresponding pixels
* in the new image are set to {@linkplain #getFillValues() fill values}.
Otherwise sample values are interpolated
* using the method given by {@link #getInterpolation()}.
diff --git
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ResampledImage.java
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ResampledImage.java
index 0827f8aef9..afaeacf6d9 100644
---
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ResampledImage.java
+++
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ResampledImage.java
@@ -112,7 +112,7 @@ public class ResampledImage extends ComputedImage {
* image. This transform should be an instance of {@link MathTransform2D},
but this is not required by this class
* (a future version may allow interpolations in a
<var>n</var>-dimensional cube).
*
- * @see org.opengis.referencing.datum.PixelInCell#CELL_CENTER
+ * @see org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER
*/
protected final MathTransform toSource;
@@ -175,7 +175,7 @@ public class ResampledImage extends ComputedImage {
/**
* Creates a new image which will resample the given image. The resampling
operation is defined
* by a potentially non-linear transform from <em>this</em> image to the
specified <em>source</em> image.
- * That transform should map {@linkplain
org.opengis.referencing.datum.PixelInCell#CELL_CENTER pixel centers}.
+ * That transform should map {@linkplain
org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER pixel centers}.
*
* <p>The {@code sampleModel} determines the tile size and the target data
type. This is often the same sample
* model than the one used by the {@code source} image, but may also be
different for forcing a different tile
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/BandAggregateGridCoverageTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/BandAggregateGridCoverageTest.java
index 62ea27f3e1..b111177d66 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/BandAggregateGridCoverageTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/BandAggregateGridCoverageTest.java
@@ -19,7 +19,6 @@ package org.apache.sis.coverage.grid;
import java.util.Arrays;
import java.awt.image.Raster;
import java.awt.image.DataBufferInt;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.coverage.SampleDimension;
import org.apache.sis.referencing.operation.transform.MathTransforms;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/BufferedGridCoverageTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/BufferedGridCoverageTest.java
index 5dade9c20a..6bbfbdfcad 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/BufferedGridCoverageTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/BufferedGridCoverageTest.java
@@ -23,7 +23,6 @@ import java.awt.image.DataBuffer;
import java.awt.image.DataBufferInt;
import java.awt.image.RenderedImage;
import java.awt.image.WritableRaster;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.coverage.SampleDimension;
import org.apache.sis.referencing.operation.transform.MathTransforms;
import org.apache.sis.util.iso.Names;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/ConvertedGridCoverageTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/ConvertedGridCoverageTest.java
index 3963fb9d2e..6c696e8f90 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/ConvertedGridCoverageTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/ConvertedGridCoverageTest.java
@@ -19,7 +19,6 @@ package org.apache.sis.coverage.grid;
import java.util.List;
import java.awt.image.DataBuffer;
import java.awt.image.RenderedImage;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.MathTransform1D;
import org.apache.sis.referencing.operation.transform.MathTransforms;
import org.apache.sis.referencing.privy.AffineTransform2D;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/DimensionAppenderTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/DimensionAppenderTest.java
index f6dc6e0ba3..9c244135a4 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/DimensionAppenderTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/DimensionAppenderTest.java
@@ -19,7 +19,6 @@ package org.apache.sis.coverage.grid;
import java.time.Instant;
import java.time.Duration;
import java.awt.image.BufferedImage;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/DimensionalityReductionTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/DimensionalityReductionTest.java
index a12b111818..43762619ee 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/DimensionalityReductionTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/DimensionalityReductionTest.java
@@ -18,7 +18,6 @@ package org.apache.sis.coverage.grid;
import org.opengis.referencing.crs.SingleCRS;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.apache.sis.referencing.CRS;
import org.apache.sis.referencing.privy.DirectPositionView;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridCoverage2DTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridCoverage2DTest.java
index 04429ce828..08f8dcffef 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridCoverage2DTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridCoverage2DTest.java
@@ -27,7 +27,6 @@ import java.awt.image.WritableRenderedImage;
import org.opengis.geometry.DirectPosition;
import org.opengis.referencing.operation.MathTransform1D;
import org.opengis.referencing.operation.MathTransform;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.coverage.SampleDimension;
import org.apache.sis.geometry.DirectPosition2D;
import org.apache.sis.coverage.privy.RasterFactory;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridCoverageBuilderTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridCoverageBuilderTest.java
index d93c2155c7..6a7a850358 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridCoverageBuilderTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridCoverageBuilderTest.java
@@ -22,7 +22,6 @@ import java.awt.image.DataBuffer;
import java.awt.image.DataBufferByte;
import java.awt.image.RenderedImage;
import java.awt.image.WritableRaster;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.Matrix;
import org.apache.sis.coverage.SampleDimension;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridDerivationTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridDerivationTest.java
index 1122f5a1be..968e266042 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridDerivationTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridDerivationTest.java
@@ -22,7 +22,6 @@ import java.util.stream.IntStream;
import org.opengis.geometry.DirectPosition;
import org.opengis.geometry.Envelope;
import org.opengis.metadata.spatial.DimensionNameType;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridGeometryTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridGeometryTest.java
index 96b03e3826..d59e9a0924 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridGeometryTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/GridGeometryTest.java
@@ -20,7 +20,6 @@ import org.opengis.util.FactoryException;
import org.opengis.geometry.Envelope;
import org.opengis.metadata.spatial.DimensionNameType;
import org.opengis.referencing.crs.DerivedCRS;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/PixelTranslationTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/PixelTranslationTest.java
index 2d70f6a2fc..28c184f06d 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/PixelTranslationTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/PixelTranslationTest.java
@@ -17,7 +17,6 @@
package org.apache.sis.coverage.grid;
import org.opengis.metadata.spatial.PixelOrientation;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import org.apache.sis.referencing.operation.transform.MathTransforms;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java
index 2416f84019..76e85b9f35 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java
@@ -32,7 +32,6 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import org.opengis.util.FactoryException;
-import static org.opengis.referencing.datum.PixelInCell.CELL_CENTER;
import org.apache.sis.geometry.Envelope2D;
import org.apache.sis.geometry.DirectPosition2D;
import org.apache.sis.geometry.ImmutableEnvelope;
@@ -46,6 +45,7 @@ import org.apache.sis.referencing.operation.matrix.Matrices;
import org.apache.sis.referencing.operation.matrix.MatrixSIS;
import org.apache.sis.referencing.operation.transform.MathTransforms;
import org.apache.sis.referencing.operation.transform.TransformSeparator;
+import static org.apache.sis.coverage.grid.PixelInCell.CELL_CENTER;
// Test dependencies
import org.junit.jupiter.api.Test;
diff --git
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/TranslatedGridCoverageTest.java
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/TranslatedGridCoverageTest.java
index fc7a995a1a..bd37c48745 100644
---
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/TranslatedGridCoverageTest.java
+++
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/grid/TranslatedGridCoverageTest.java
@@ -19,7 +19,6 @@ package org.apache.sis.coverage.grid;
import java.awt.image.BufferedImage;
import java.awt.image.DataBuffer;
import java.awt.image.WritableRaster;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.referencing.operation.transform.MathTransforms;
import org.apache.sis.coverage.privy.RasterFactory;
import org.apache.sis.geometry.DirectPosition2D;
diff --git
a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/TypesTest.java
b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/TypesTest.java
index 9ada2be843..056bf5d03e 100644
---
a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/TypesTest.java
+++
b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/TypesTest.java
@@ -28,8 +28,8 @@ import org.opengis.metadata.citation.Address;
import org.opengis.metadata.citation.Citation;
import org.opengis.metadata.citation.OnLineFunction;
import org.opengis.metadata.content.ImagingCondition;
+import org.opengis.metadata.constraint.Restriction;
import org.opengis.referencing.datum.Datum;
-import org.opengis.referencing.datum.PixelInCell;
import org.opengis.referencing.cs.AxisDirection;
import org.apache.sis.util.SimpleInternationalString;
import org.apache.sis.util.DefaultInternationalString;
@@ -153,12 +153,8 @@ public final class TypesTest extends TestCase {
assertSame(ImagingCondition.SEMI_DARKNESS,
Types.forCodeName(ImagingCondition.class, "semi-darkness", null));
assertNull(Types.forCodeName(ImagingCondition.class, "darkness",
null));
- assertSame(PixelInCell.CELL_CORNER,
Types.forCodeName(PixelInCell.class, "cell corner", null));
- assertSame(PixelInCell.CELL_CORNER,
Types.forCodeName(PixelInCell.class, "cellCorner", null));
- assertSame(PixelInCell.CELL_CENTER,
Types.forCodeName(PixelInCell.class, "cell center", null));
- assertSame(PixelInCell.CELL_CENTER,
Types.forCodeName(PixelInCell.class, "cellCenter", null));
- assertSame(PixelInCell.CELL_CENTER,
Types.forCodeName(PixelInCell.class, "cell centre", null));
- assertSame(PixelInCell.CELL_CENTER,
Types.forCodeName(PixelInCell.class, "cellCentre", null));
+ assertSame(Restriction.LICENCE, Types.forCodeName(Restriction.class,
"licence", null));
+ assertSame(Restriction.LICENCE, Types.forCodeName(Restriction.class,
"license", null));
}
/**
diff --git
a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/MultiResolutionCoverageLoader.java
b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/MultiResolutionCoverageLoader.java
index 37e7243388..47a5a55c55 100644
---
a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/MultiResolutionCoverageLoader.java
+++
b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/MultiResolutionCoverageLoader.java
@@ -22,7 +22,7 @@ import java.lang.ref.SoftReference;
import java.text.NumberFormat;
import org.opengis.geometry.Envelope;
import org.opengis.geometry.DirectPosition;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/RenderingData.java
b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/RenderingData.java
index 0cb789807f..190028f8c4 100644
---
a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/RenderingData.java
+++
b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/RenderingData.java
@@ -33,7 +33,7 @@ import java.awt.geom.NoninvertibleTransformException;
import org.opengis.util.FactoryException;
import org.opengis.geometry.DirectPosition;
import org.opengis.metadata.extent.GeographicBoundingBox;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.CoordinateOperation;
import org.opengis.referencing.operation.MathTransform;
diff --git
a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/portrayal/Canvas.java
b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/portrayal/Canvas.java
index 01cd880dbb..be624a511c 100644
---
a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/portrayal/Canvas.java
+++
b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/portrayal/Canvas.java
@@ -31,7 +31,7 @@ import org.opengis.referencing.crs.GeographicCRS;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import org.opengis.referencing.operation.CoordinateOperation;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.util.FactoryException;
import org.apache.sis.util.Utilities;
import org.apache.sis.util.Localized;
diff --git
a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/portrayal/CanvasExtent.java
b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/portrayal/CanvasExtent.java
index a4b24b14cd..1390d8fd43 100644
---
a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/portrayal/CanvasExtent.java
+++
b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/portrayal/CanvasExtent.java
@@ -18,7 +18,7 @@ package org.apache.sis.portrayal;
import java.util.List;
import org.opengis.geometry.DirectPosition;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.cs.AxisDirection;
import org.opengis.referencing.cs.CoordinateSystem;
diff --git
a/endorsed/src/org.apache.sis.portrayal/test/org/apache/sis/map/coverage/MultiResolutionCoverageLoaderTest.java
b/endorsed/src/org.apache.sis.portrayal/test/org/apache/sis/map/coverage/MultiResolutionCoverageLoaderTest.java
index de7c8b376c..bd15b7476c 100644
---
a/endorsed/src/org.apache.sis.portrayal/test/org/apache/sis/map/coverage/MultiResolutionCoverageLoaderTest.java
+++
b/endorsed/src/org.apache.sis.portrayal/test/org/apache/sis/map/coverage/MultiResolutionCoverageLoaderTest.java
@@ -19,7 +19,7 @@ package org.apache.sis.map.coverage;
import java.util.List;
import java.awt.image.RenderedImage;
import org.opengis.geometry.DirectPosition;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import org.apache.sis.referencing.operation.transform.LinearTransform;
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java
index f68f512eec..2dc350279f 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java
@@ -1565,14 +1565,14 @@ class GeodeticObjectParser extends MathTransformParser
implements Comparator<Coo
* @return the {@code "ImageDatum"} element.
* @throws ParseException if the {@code "ImageDatum"} element cannot be
parsed.
*/
+ @SuppressWarnings("removal")
private DefaultImageDatum parseImageDatum(final int mode, final Element
parent) throws ParseException {
final Element element = parent.pullElement(mode,
WKTKeywords.ImageDatum, WKTKeywords.IDatum);
if (element == null) {
return null;
}
final String name = element.pullString("name");
- final PixelInCell pixelInCell = Types.forCodeName(PixelInCell.class,
- element.pullVoidElement("pixelInCell").keyword,
PixelInCell::valueOf);
+ final String pixelInCell =
element.pullVoidElement("pixelInCell").keyword;
return new DefaultImageDatum(parseAnchorAndClose(element, name),
pixelInCell);
}
@@ -1666,6 +1666,7 @@ class GeodeticObjectParser extends MathTransformParser
implements Comparator<Coo
* @return the {@code "ImageCRS"} element as an {@link ImageCRS} object.
* @throws ParseException if the {@code "ImageCRS"} element cannot be
parsed.
*/
+ @SuppressWarnings("removal")
private DefaultImageCRS parseImageCRS(final int mode, final Element
parent) throws ParseException {
final Element element = parent.pullElement(mode, WKTKeywords.ImageCRS);
if (element == null) {
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultAffineCS.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultAffineCS.java
index dae666f688..debcf1f61a 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultAffineCS.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultAffineCS.java
@@ -39,9 +39,6 @@ import org.apache.sis.measure.Units;
* </tr><tr>
* <td>{@linkplain org.apache.sis.referencing.crs.DefaultEngineeringCRS
Engineering}</td>
* <td>unspecified</td>
- * </tr><tr>
- * <td>{@linkplain org.apache.sis.referencing.crs.DefaultImageCRS Image}</td>
- * <td>unspecified</td>
* </tr></table>
*
* <h2>Immutability and thread safety</h2>
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultCartesianCS.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultCartesianCS.java
index 12f00ec052..29055ae23b 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultCartesianCS.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultCartesianCS.java
@@ -44,9 +44,6 @@ import org.apache.sis.measure.Angle;
* </tr><tr>
* <td>{@linkplain org.apache.sis.referencing.crs.DefaultEngineeringCRS
Engineering}</td>
* <td>unspecified</td>
- * </tr><tr>
- * <td>{@linkplain org.apache.sis.referencing.crs.DefaultImageCRS Image}</td>
- * <td>unspecified</td>
* </tr></table>
*
* <h2>Immutability and thread safety</h2>
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DatumShiftGrid.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DatumShiftGrid.java
index 9fd4158ee0..a473e29d30 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DatumShiftGrid.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DatumShiftGrid.java
@@ -377,7 +377,7 @@ public abstract class DatumShiftGrid<C extends Quantity<C>,
T extends Quantity<T
* The input coordinates given to the {@link LinearTransform} shall be in
the unit of measurement
* given by {@link #getCoordinateUnit()}. The output coordinates are grid
indices as real numbers
* (i.e. can have a fractional part). Integer grid indices are located in
the center of grid cells,
- * i.e. the transform uses {@link
org.opengis.referencing.datum.PixelInCell#CELL_CENTER} convention.
+ * i.e. the transform uses {@link
org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER} convention.
*
* <p>This transform is usually two-dimensional, in which case conversions
from (<var>x</var>,<var>y</var>)
* coordinates to ({@code gridX}, {@code gridY}) indices can be done with
the following formulas:</p>
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultImageDatum.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultImageDatum.java
index 2dabc1c611..08383766d3 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultImageDatum.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultImageDatum.java
@@ -21,13 +21,15 @@ import java.util.Objects;
import jakarta.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
import org.opengis.util.GenericName;
import org.opengis.util.InternationalString;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.referencing.privy.WKTKeywords;
import org.apache.sis.metadata.privy.ImplementationHelper;
import org.apache.sis.io.wkt.Formatter;
import org.apache.sis.io.wkt.Convention;
+import org.apache.sis.io.wkt.ElementKind;
import org.apache.sis.util.ComparisonMode;
// Specific to the geoapi-3.1 and geoapi-4.0 branches:
@@ -72,7 +74,7 @@ public final class DefaultImageDatum extends AbstractDatum {
*
* @see #getPixelInCell()
*/
- private PixelInCell pixelInCell;
+ private String pixelInCell;
/**
* Creates an image datum from the given properties. The properties map is
given
@@ -122,7 +124,7 @@ public final class DefaultImageDatum extends AbstractDatum {
*
* @see
org.apache.sis.referencing.factory.GeodeticObjectFactory#createImageDatum(Map,
PixelInCell)
*/
- public DefaultImageDatum(final Map<String,?> properties, final PixelInCell
pixelInCell) {
+ public DefaultImageDatum(final Map<String,?> properties, final String
pixelInCell) {
super(properties);
this.pixelInCell = Objects.requireNonNull(pixelInCell);
}
@@ -133,7 +135,8 @@ public final class DefaultImageDatum extends AbstractDatum {
* @return the way image grid is associated with image data attributes.
*/
@XmlElement(required = true)
- public PixelInCell getPixelInCell() {
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ public String getPixelInCell() {
return pixelInCell;
}
@@ -182,7 +185,7 @@ public final class DefaultImageDatum extends AbstractDatum {
super.formatTo(formatter);
final Convention convention = formatter.getConvention();
if (convention == Convention.INTERNAL) {
- formatter.append(getPixelInCell()); // This is an
extension compared to ISO 19162.
+ formatter.append(getPixelInCell(), ElementKind.CODE_LIST); //
This is an extension compared to ISO 19162.
} else if (convention.majorVersion() == 1) {
formatter.setInvalidWKT(this, null);
}
@@ -218,7 +221,7 @@ public final class DefaultImageDatum extends AbstractDatum {
*
* @see #getPixelInCell()
*/
- private void setPixelInCell(final PixelInCell value) {
+ private void setPixelInCell(final String value) {
if (pixelInCell == null) {
pixelInCell = value;
} else {
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/package-info.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/package-info.java
index fa4d4444a7..4f853f872d 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/package-info.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/package-info.java
@@ -69,7 +69,6 @@
@XmlJavaTypeAdapter(EX_Extent.class),
@XmlJavaTypeAdapter(CD_Ellipsoid.class),
@XmlJavaTypeAdapter(CD_PrimeMeridian.class),
- @XmlJavaTypeAdapter(CD_PixelInCell.class),
@XmlJavaTypeAdapter(StringAdapter.class),
@XmlJavaTypeAdapter(InternationalStringConverter.class),
@XmlJavaTypeAdapter(DateAdapter.class),
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
index 25e09effde..277276cd67 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
@@ -44,7 +44,7 @@ final class SubOperationInfo {
* Types of target CRS, together with the type of CRS that may be used as
the source for that target.
* For each array {@code COMPATIBLE_TYPES[i]}, the first element (i.e.
{@code COMPATIBLE_TYPES[i][0]})
* is the target CRS and the whole array (including the first element)
gives the valid source CRS type,
- * if preference order.
+ * in preference order.
*
* <h4>Example</h4>
* If a target CRS is of type {@link VerticalCRS}, then the source CRS may
be another {@code VerticalCRS}
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
index 99a2aab51d..5e1da27251 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
@@ -486,7 +486,7 @@ search: for (int j=numPoints; --j >= 0;) {
* The number of dimensions is equal to {@link #getSourceDimensions()}.
* This method returns the known minimum and maximum values (inclusive)
for each dimension,
* <strong>not</strong> expanded to encompass full cell surfaces. In other
words, the returned envelope encompasses only
- * {@linkplain org.opengis.referencing.datum.PixelInCell#CELL_CENTER cell
centers}.
+ * {@linkplain org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER cell
centers}.
*
* <p>If a grid size was {@link #LinearTransformBuilder(int...) specified
at construction time},
* then those minimums and maximums are inferred from the grid size and
are always integer values.
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LocalizationGridBuilder.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LocalizationGridBuilder.java
index f0b58b93a1..4378d6090c 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LocalizationGridBuilder.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LocalizationGridBuilder.java
@@ -406,9 +406,9 @@ public class LocalizationGridBuilder extends
TransformBuilder {
* <ul>
* <li>If {@code true}, then the returned envelope encompasses full cell
surfaces,
* from lower border to upper border. In other words, the returned
envelope encompasses all
- * {@linkplain org.opengis.referencing.datum.PixelInCell#CELL_CORNER
cell corners}.</li>
+ * {@linkplain org.apache.sis.coverage.grid.PixelInCell#CELL_CORNER
cell corners}.</li>
* <li>If {@code false}, then the returned envelope encompasses only
- * {@linkplain org.opengis.referencing.datum.PixelInCell#CELL_CENTER
cell centers}, inclusive.</li>
+ * {@linkplain org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER
cell centers}, inclusive.</li>
* </ul>
*
* This is the envelope of the grid domain (i.e. the ranges of valid
{@code gridX} and {@code gridY} argument
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/gridded/Tile.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/gridded/Tile.java
index bc0e6b8293..85f6d3a8c9 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/gridded/Tile.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/gridded/Tile.java
@@ -27,7 +27,6 @@ import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import javax.imageio.ImageReader; // For javadoc
-import org.opengis.metadata.spatial.PixelOrientation;
import org.apache.sis.util.ArgumentChecks;
import org.apache.sis.util.Classes;
import org.apache.sis.util.resources.Vocabulary;
@@ -202,8 +201,8 @@ public class Tile implements Serializable {
* @param region the tile region, or {@code null} if unknown.
* The (<var>x</var>,<var>y</var> location of this
region is typically (0,0).
* The final location will be computed when this tile
will be given to a {@link TileOrganizer}.
- * @param gridToCRS the <q>grid to real world</q> transform mapping pixel
- * {@linkplain PixelOrientation#UPPER_LEFT upper left}
corner.
+ * @param gridToCRS the <q>grid to real world</q> transform mapping the
corner of pixels.
+ * The corner shall be the one which smallest grid
coordinates (typically upper-left).
*/
public Tile(final Rectangle region, final AffineTransform gridToCRS) {
ArgumentChecks.ensureNonNull("gridToCRS", gridToCRS);
@@ -435,8 +434,8 @@ public class Tile implements Serializable {
* gridToCRS.translate(location.x, location.y);
* }
*
- * @return the <q>grid to real world</q> transform mapping pixel
- * {@linkplain PixelOrientation#UPPER_LEFT upper left} corner, or
{@code null} if undefined.
+ * @return the <q>grid to real world</q> transform mapping the corner of
pixels, or {@code null} if undefined.
+ * The corner shall be the one which smallest grid coordinates
(typically upper-left).
* @throws IllegalStateException if this tile has been {@linkplain
#Tile(Rectangle, AffineTransform)
* created without location} and has not yet been processed by
{@link TileOrganizer}.
*/
@@ -455,8 +454,8 @@ public class Tile implements Serializable {
* Sets the new <q>grid to real world</q> transform to use after the
translation performed by
* {@link #translate(int, int)}, if any. The given instance should be
immutable; it will not be cloned.
*
- * @param at the <q>grid to real world</q> transform mapping pixel
- * {@linkplain PixelOrientation#UPPER_LEFT upper left} corner.
+ * @param gridToCRS the <q>grid to real world</q> transform mapping the
corner of pixels.
+ * The corner shall be the one which smallest grid
coordinates (typically upper-left).
* @throws IllegalStateException if another transform was already assigned
to this tile.
*/
final void setGridToCRS(final AffineTransform at) throws
IllegalStateException {
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CD_PixelInCell.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CD_PixelInCell.java
deleted file mode 100644
index 6a1f018411..0000000000
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CD_PixelInCell.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sis.xml.bind.referencing;
-
-import org.opengis.referencing.datum.PixelInCell;
-import org.apache.sis.xml.bind.gml.CodeListAdapter;
-
-
-/**
- * JAXB adapter for (un)marshalling of GeoAPI code list.
- *
- * @author Martin Desruisseaux (Geomatys)
- */
-public final class CD_PixelInCell extends CodeListAdapter<PixelInCell> {
- /**
- * Empty constructor for JAXB only.
- */
- public CD_PixelInCell() {
- }
-
- /**
- * {@inheritDoc}
- *
- * @return {@code PixelInCell.class}
- */
- @Override
- protected Class<PixelInCell> getCodeListClass() {
- return PixelInCell.class;
- }
-}
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
index a1cbedb837..ec4649df72 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
@@ -22,7 +22,6 @@ import org.opengis.referencing.cs.AxisDirection;
import org.opengis.referencing.cs.AffineCS;
import org.opengis.referencing.cs.CartesianCS;
import org.opengis.referencing.cs.CoordinateSystem;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.referencing.cs.DefaultAffineCS;
import org.apache.sis.referencing.datum.DefaultImageDatum;
import org.apache.sis.io.wkt.Convention;
@@ -61,7 +60,7 @@ public final class DefaultImageCRSTest extends TestCase {
*/
private static DefaultImageCRS create(final boolean cartesian) {
return new DefaultImageCRS(Map.of(DefaultImageCRS.NAME_KEY, "An image
CRS"),
- new DefaultImageDatum(Map.of(DefaultImageDatum.NAME_KEY,
"C1"), PixelInCell.CELL_CENTER),
+ new DefaultImageDatum(Map.of(DefaultImageDatum.NAME_KEY,
"C1"), "cell center"),
cartesian ? HardCodedCS.GRID : new DefaultAffineCS(
Map.of(DefaultAffineCS.NAME_KEY, "Grid"),
HardCodedAxes.COLUMN, HardCodedAxes.ROW));
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/HardCodedCRS.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/HardCodedCRS.java
index 7644bf76bc..6f5d81257b 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/HardCodedCRS.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/HardCodedCRS.java
@@ -18,7 +18,6 @@ package org.apache.sis.referencing.crs;
import java.util.Map;
import java.util.HashMap;
-import org.opengis.referencing.datum.PixelInCell;
import static org.opengis.referencing.IdentifiedObject.*;
import org.apache.sis.referencing.NamedIdentifier;
import org.apache.sis.metadata.iso.extent.Extents;
@@ -320,8 +319,8 @@ public final class HardCodedCRS {
* By default, this CRS has no transformation path to any other CRS (i.e.
a map using
* this CS cannot be reprojected to a geographic coordinate reference
system for example).
*
- * <p>The {@code PixelInCell} attribute of the associated {@code
ImageDatum}
- * is set to {@link PixelInCell#CELL_CENTER}.</p>
+ * <p>The {@code pixelInCell} attribute of the associated {@code
ImageDatum}
+ * is set to {@link
org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER}.</p>
*/
@SuppressWarnings("removal")
public static final DefaultImageCRS IMAGE = new DefaultImageCRS(
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
index 44507c5533..da7fe745a6 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.datum;
import java.util.Date;
import java.util.Map;
import java.util.HashMap;
-import org.opengis.referencing.datum.PixelInCell;
import org.apache.sis.referencing.NamedIdentifier;
import org.apache.sis.referencing.internal.VerticalDatumTypes;
import org.apache.sis.measure.Units;
@@ -152,12 +151,12 @@ public final class HardCodedDatum {
properties("Day of year", null, null));
/**
- * Image with {@link PixelInCell#CELL_CENTER}.
+ * Image with {@link org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER}.
*/
@SuppressWarnings("removal")
public static final DefaultImageDatum IMAGE = new DefaultImageDatum(
properties("Image", null, null),
- PixelInCell.CELL_CENTER);
+ "cell center");
/**
* An engineering datum for unknown coordinate reference system. Such CRS
are usually
diff --git
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/MultiResolutionImage.java
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/MultiResolutionImage.java
index 3b0c205833..b22d9a1c04 100644
---
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/MultiResolutionImage.java
+++
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/MultiResolutionImage.java
@@ -23,7 +23,7 @@ import java.nio.file.Path;
import org.opengis.util.NameSpace;
import org.opengis.util.FactoryException;
import org.opengis.geometry.DirectPosition;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import org.opengis.referencing.operation.CoordinateOperation;
diff --git
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/GridGeometryBuilder.java
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/GridGeometryBuilder.java
index 874dae4baf..03fe2ffbec 100644
---
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/GridGeometryBuilder.java
+++
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/GridGeometryBuilder.java
@@ -24,7 +24,7 @@ import org.opengis.metadata.spatial.PixelOrientation;
import org.opengis.metadata.spatial.DimensionNameType;
import org.opengis.parameter.ParameterNotFoundException;
import org.opengis.referencing.NoSuchAuthorityCodeException;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.MathTransformFactory;
diff --git
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/writer/GeoEncoder.java
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/writer/GeoEncoder.java
index 9658dcbe1b..ed50cd8a19 100644
---
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/writer/GeoEncoder.java
+++
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/writer/GeoEncoder.java
@@ -42,7 +42,7 @@ import org.opengis.referencing.datum.Ellipsoid;
import org.opengis.referencing.datum.PrimeMeridian;
import org.opengis.referencing.datum.GeodeticDatum;
import org.opengis.referencing.datum.VerticalDatum;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.Conversion;
import org.opengis.referencing.operation.Matrix;
import org.opengis.parameter.GeneralParameterValue;
diff --git
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Grid.java
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Grid.java
index 16da3bd95c..e3d4aaedd3 100644
---
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Grid.java
+++
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/Grid.java
@@ -21,7 +21,7 @@ import java.util.Arrays;
import java.util.ArrayList;
import java.io.IOException;
import org.opengis.util.FactoryException;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.MathTransformFactory;
diff --git
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridAdjustment.java
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridAdjustment.java
index c5aba25974..763b9bb3c9 100644
---
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridAdjustment.java
+++
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridAdjustment.java
@@ -21,7 +21,7 @@ import java.util.Set;
import java.util.List;
import java.util.HashMap;
import java.util.HashSet;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.apache.sis.util.ArraysExt;
import org.apache.sis.util.resources.Errors;
diff --git
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
index 9dcf61b978..af42de1d26 100644
---
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
+++
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
@@ -48,7 +48,7 @@ import org.opengis.referencing.datum.DatumFactory;
import org.opengis.referencing.datum.GeodeticDatum;
import org.opengis.referencing.datum.PrimeMeridian;
import org.opengis.referencing.datum.Ellipsoid;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.referencing.CRS;
import org.apache.sis.referencing.CommonCRS;
import org.apache.sis.referencing.crs.AbstractCRS;
diff --git
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/postgis/RasterFormat.java
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/postgis/RasterFormat.java
index a46a1ecec6..95a1acb19c 100644
---
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/postgis/RasterFormat.java
+++
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/postgis/RasterFormat.java
@@ -16,7 +16,7 @@
*/
package org.apache.sis.storage.sql.postgis;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.storage.sql.feature.InfoStatements;
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/CoverageAggregator.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/CoverageAggregator.java
index 243fe62352..153f29b722 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/CoverageAggregator.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/CoverageAggregator.java
@@ -32,7 +32,7 @@ import java.time.Duration;
import org.opengis.util.GenericName;
import org.opengis.metadata.spatial.DimensionNameType;
import org.opengis.referencing.crs.SingleCRS;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.NoninvertibleTransformException;
import org.apache.sis.referencing.CommonCRS;
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/DimensionAppender.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/DimensionAppender.java
index 797856cbe2..831436a156 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/DimensionAppender.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/DimensionAppender.java
@@ -22,7 +22,7 @@ import java.util.Optional;
import org.opengis.util.GenericName;
import org.opengis.util.FactoryException;
import org.opengis.metadata.Metadata;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.TransformException;
import org.apache.sis.coverage.SampleDimension;
import org.apache.sis.coverage.grid.GridExtent;
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/GridSlice.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/GridSlice.java
index fe8470c6ff..a26e6d0678 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/GridSlice.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/aggregate/GridSlice.java
@@ -19,7 +19,7 @@ package org.apache.sis.storage.aggregate;
import java.util.Map;
import java.util.List;
import java.util.Arrays;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.NoninvertibleTransformException;
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MemoryGridResource.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MemoryGridResource.java
index 25256f4457..c5715e6add 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MemoryGridResource.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MemoryGridResource.java
@@ -20,7 +20,7 @@ import java.util.List;
import java.util.Arrays;
import java.util.Objects;
import java.awt.image.RenderedImage;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.coverage.SampleDimension;
import org.apache.sis.coverage.grid.GridCoverage;
import org.apache.sis.coverage.grid.GridCoverageBuilder;
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/TiledGridCoverage.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/TiledGridCoverage.java
index ad7c940e84..2313b9c515 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/TiledGridCoverage.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/TiledGridCoverage.java
@@ -151,7 +151,7 @@ public abstract class TiledGridCoverage extends
GridCoverage {
* <li><var>y′</var> = s₁⋅<var>y</var> + t₁</li>
* </ul>
*
- * This transform maps {@linkplain
org.opengis.referencing.datum.PixelInCell#CELL_CORNER pixel corners}.
+ * This transform maps {@linkplain
org.apache.sis.coverage.grid.PixelInCell#CELL_CORNER pixel corners}.
*
* @see #getSubsampling(int)
* @see #toFullResolution(long, int)
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/AsciiGridStore.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/AsciiGridStore.java
index 78ce029be0..9ddf3c3bdc 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/AsciiGridStore.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/AsciiGridStore.java
@@ -26,7 +26,7 @@ import java.awt.image.DataBufferFloat;
import java.awt.image.BandedSampleModel;
import java.awt.image.WritableRaster;
import org.opengis.metadata.Metadata;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.coverage.SampleDimension;
import org.apache.sis.coverage.grid.GridCoverage;
import org.apache.sis.coverage.grid.GridExtent;
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/RawRasterStore.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/RawRasterStore.java
index b7cdb7b64c..52cd3a23be 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/RawRasterStore.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/RawRasterStore.java
@@ -32,7 +32,7 @@ import java.awt.image.RasterFormatException;
import java.awt.image.WritableRaster;
import static java.lang.Math.multiplyExact;
import org.opengis.metadata.Metadata;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.coverage.SampleDimension;
import org.apache.sis.coverage.grid.GridExtent;
import org.apache.sis.coverage.grid.GridCoverage;
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/WritableStore.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/WritableStore.java
index b0eaced8f3..7592ce1c97 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/WritableStore.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/esri/WritableStore.java
@@ -22,7 +22,7 @@ import java.io.IOException;
import java.awt.image.DataBuffer;
import java.awt.image.RenderedImage;
import java.awt.geom.AffineTransform;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/image/WorldFileStore.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/image/WorldFileStore.java
index 3c79c3822d..6b041d655e 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/image/WorldFileStore.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/image/WorldFileStore.java
@@ -36,7 +36,7 @@ import javax.imageio.spi.ImageReaderSpi;
import javax.imageio.stream.ImageInputStream;
import org.opengis.metadata.Metadata;
import org.opengis.metadata.maintenance.ScopeCode;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.coverage.grid.GridExtent;
import org.apache.sis.coverage.grid.GridGeometry;
import org.apache.sis.io.stream.IOUtilities;
diff --git
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/tiling/TileMatrix.java
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/tiling/TileMatrix.java
index db4d4b9aaf..376d8eb0bd 100644
---
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/tiling/TileMatrix.java
+++
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/tiling/TileMatrix.java
@@ -20,7 +20,7 @@ import java.util.Optional;
import java.util.stream.Stream;
import org.opengis.util.GenericName;
import org.opengis.metadata.Metadata;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.coverage.grid.GridExtent;
import org.apache.sis.coverage.grid.GridGeometry;
diff --git
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/CoverageQueryTest.java
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/CoverageQueryTest.java
index 1573168b38..bcd0e143d3 100644
---
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/CoverageQueryTest.java
+++
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/CoverageQueryTest.java
@@ -18,7 +18,7 @@ package org.apache.sis.storage;
import org.opengis.metadata.spatial.DimensionNameType;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.coverage.grid.GridCoverage;
import org.apache.sis.coverage.grid.GridExtent;
import org.apache.sis.coverage.grid.GridGeometry;
diff --git
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/aggregate/BandAggregateGridResourceTest.java
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/aggregate/BandAggregateGridResourceTest.java
index 62a781b391..f3d97ac443 100644
---
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/aggregate/BandAggregateGridResourceTest.java
+++
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/aggregate/BandAggregateGridResourceTest.java
@@ -22,7 +22,7 @@ import java.util.stream.IntStream;
import java.awt.image.DataBufferInt;
import java.awt.image.RenderedImage;
import org.opengis.util.LocalName;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.util.iso.Names;
import org.apache.sis.referencing.operation.transform.MathTransforms;
import org.apache.sis.coverage.SampleDimension;
diff --git
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/base/MemoryGridResourceTest.java
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/base/MemoryGridResourceTest.java
index 39f7f87dc9..d15d679f2f 100644
---
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/base/MemoryGridResourceTest.java
+++
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/base/MemoryGridResourceTest.java
@@ -17,7 +17,7 @@
package org.apache.sis.storage.base;
import java.awt.image.BufferedImage;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.coverage.grid.GridExtent;
import org.apache.sis.coverage.grid.GridGeometry;
diff --git a/geoapi/snapshot b/geoapi/snapshot
index 21ba099dd3..580f2a9f70 160000
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@ -1 +1 @@
-Subproject commit 21ba099dd3c6cc7b6c517e4a5c6421da0a3d003c
+Subproject commit 580f2a9f7038f65c0759083ca55fcd43f4c56446
diff --git
a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/SEPortrayer.java
b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/SEPortrayer.java
index 63f905d57d..e4a042fa5e 100644
---
a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/SEPortrayer.java
+++
b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/SEPortrayer.java
@@ -42,7 +42,7 @@ import org.opengis.util.GenericName;
import org.opengis.geometry.Envelope;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.crs.GeographicCRS;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import org.opengis.feature.AttributeType;
diff --git
a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/se1/LineToScene2D.java
b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/se1/LineToScene2D.java
index 62e1ee687b..eb713c228a 100644
---
a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/se1/LineToScene2D.java
+++
b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/se1/LineToScene2D.java
@@ -24,7 +24,7 @@ import java.util.stream.Stream;
import org.locationtech.jts.geom.Geometry;
import org.opengis.feature.Feature;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.CoordinateOperation;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
diff --git
a/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/CoverageResource.java
b/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/CoverageResource.java
index 2a66bebd3c..f1975d899d 100644
---
a/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/CoverageResource.java
+++
b/incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/CoverageResource.java
@@ -38,7 +38,7 @@ import java.util.Map.Entry;
import javax.measure.Unit;
import org.opengis.metadata.spatial.DimensionNameType;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.MathTransform1D;
import org.opengis.referencing.operation.Matrix;
diff --git
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/CoverageCanvas.java
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/CoverageCanvas.java
index 92e3e3ec6d..114e3aaa63 100644
---
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/CoverageCanvas.java
+++
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/CoverageCanvas.java
@@ -46,7 +46,7 @@ import javax.measure.Quantity;
import javax.measure.quantity.Length;
import org.opengis.geometry.Envelope;
import org.opengis.geometry.DirectPosition;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.TransformException;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.referencing.CommonCRS;
diff --git
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/GridSliceSelector.java
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/GridSliceSelector.java
index a9aa399f6a..47e603b044 100644
---
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/GridSliceSelector.java
+++
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/GridSliceSelector.java
@@ -41,7 +41,7 @@ import javax.measure.Unit;
import org.opengis.geometry.Envelope;
import org.opengis.util.FactoryException;
import org.opengis.metadata.spatial.DimensionNameType;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.cs.CoordinateSystemAxis;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.crs.TemporalCRS;
diff --git
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/StyledRenderingData.java
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/StyledRenderingData.java
index ea48c40206..7959a36eed 100644
---
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/StyledRenderingData.java
+++
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/StyledRenderingData.java
@@ -19,7 +19,7 @@ package org.apache.sis.gui.coverage;
import java.util.Map;
import java.util.concurrent.Future;
import java.awt.image.RenderedImage;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import org.apache.sis.storage.DataStoreException;
diff --git
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/MapCanvas.java
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/MapCanvas.java
index 7034a2fe80..a7ee91086e 100644
--- a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/MapCanvas.java
+++ b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/MapCanvas.java
@@ -55,7 +55,7 @@ import org.opengis.geometry.Envelope;
import org.opengis.geometry.DirectPosition;
import org.opengis.referencing.ReferenceSystem;
import org.opengis.referencing.cs.AxisDirection;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.TransformException;
import org.apache.sis.referencing.IdentifiedObjects;
diff --git
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/OperationFinder.java
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/OperationFinder.java
index 0a92df4c10..e37f7d2ada 100644
---
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/OperationFinder.java
+++
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/OperationFinder.java
@@ -21,7 +21,7 @@ import javafx.concurrent.Task;
import org.opengis.geometry.Envelope;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.crs.SingleCRS;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.CoordinateOperation;
import org.opengis.referencing.operation.TransformException;
diff --git
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/StatusBar.java
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/StatusBar.java
index f1f113766a..7b261b72db 100644
--- a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/StatusBar.java
+++ b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/map/StatusBar.java
@@ -60,7 +60,7 @@ import javax.measure.quantity.Length;
import org.opengis.geometry.Envelope;
import org.opengis.geometry.DirectPosition;
import org.opengis.referencing.ReferenceSystem;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.opengis.referencing.cs.CoordinateSystem;
import org.opengis.referencing.cs.CoordinateSystemAxis;
import org.opengis.referencing.operation.Matrix;
diff --git
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/RecentReferenceSystems.java
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/RecentReferenceSystems.java
index 952c9d2b67..ae3369ea39 100644
---
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/RecentReferenceSystems.java
+++
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/RecentReferenceSystems.java
@@ -41,7 +41,7 @@ import org.opengis.referencing.crs.DerivedCRS;
import org.opengis.referencing.crs.CRSAuthorityFactory;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.TransformException;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.geometry.Envelopes;
import org.apache.sis.geometry.ImmutableEnvelope;
import org.apache.sis.referencing.IdentifiedObjects;
diff --git
a/optional/src/org.apache.sis.gui/test/org/apache/sis/gui/coverage/CoverageCanvasApp.java
b/optional/src/org.apache.sis.gui/test/org/apache/sis/gui/coverage/CoverageCanvasApp.java
index 87012d0fe2..5a176e52be 100644
---
a/optional/src/org.apache.sis.gui/test/org/apache/sis/gui/coverage/CoverageCanvasApp.java
+++
b/optional/src/org.apache.sis.gui/test/org/apache/sis/gui/coverage/CoverageCanvasApp.java
@@ -23,7 +23,7 @@ import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
-import org.opengis.referencing.datum.PixelInCell;
+import org.apache.sis.coverage.grid.PixelInCell;
import org.apache.sis.coverage.grid.GridCoverage2D;
import org.apache.sis.coverage.grid.GridGeometry;
import org.apache.sis.gui.map.StatusBar;