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 <martin.desruisse...@geomatys.com>
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;

Reply via email to