Merge branch 'geoapi-4.0' into geoapi-3.1
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 1834312..33c7c8e 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 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 c237dcb..82ca8fa 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.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 fc5f865..14147de 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 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 c8e2744..599b188 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 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 cf62d7a..51fe89b 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.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 @@
      * @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 4448e73..fc4990e 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 @@
 
 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 80e9c72..3f7ed38 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 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 d4de192..9d22ed1 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.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 a659e02..3128803 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 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 4db9e3d..8e4383a 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 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 5eb048d..8a2805c 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.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 @@
      * @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 95020e4..ce159e2 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.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 38c4c70..d563bec 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.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 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 e04b8d0..6fc1594 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 @@
 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 0000000..0e94ee0
--- /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 d4ce805..ed7bbaf 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.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 @@
  * }
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
- * @version 1.0
+ * @version 1.5
  *
  * @see PixelInCell
  * @see PixelOrientation
@@ -143,19 +142,9 @@
      *
      * @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 @@
      *
      * @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 @@
      * @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 e3e51f2..6487144 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.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 36b50db..33bd0ad 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.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 97e50fb..b2527b9 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.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 cd6e6a0..07ae1d5 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.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 9b22549..94c06b7 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 @@
     /**
      * 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 22debb8..ab355d2 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 @@
     /**
      * 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 0827f8a..afaeacf 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 @@
      * 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 @@
     /**
      * 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 62ea27f..b111177 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 @@
 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 5dade9c..6bbfbdf 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.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 3963fb9..6c696e8 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 @@
 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 f6dc6e0..9c24413 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 @@
 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 a12b111..4376261 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 @@
 
 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 04429ce..08f8dcf 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 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 d93c215..6a7a850 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.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 1122f5a..968e266 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 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 96b03e3..d59e9a0 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.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 2d70f6a..28c184f 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 2416f84..76e85b9 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.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.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 fc7a995..bd37c48 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 @@
 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 9ada2be..056bf5d 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.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 @@
         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.metadata/test/org/apache/sis/xml/RenameListGenerator.java b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/RenameListGenerator.java
index 5de773c..f5327f5 100644
--- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/RenameListGenerator.java
+++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/RenameListGenerator.java
@@ -29,7 +29,7 @@
 import jakarta.xml.bind.annotation.XmlSchema;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
-import org.opengis.geoapi.SchemaException;
+import org.opengis.geoapi.schema.SchemaException;
 import org.apache.sis.xml.privy.LegacyNamespaces;
 
 
diff --git a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/PackageVerifier.java b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/PackageVerifier.java
index ec6d204..8650b2a 100644
--- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/PackageVerifier.java
+++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/PackageVerifier.java
@@ -37,10 +37,10 @@
 import org.xml.sax.SAXException;
 import org.opengis.util.CodeList;
 import org.opengis.annotation.UML;
-import org.opengis.geoapi.SchemaException;
-import org.opengis.geoapi.SchemaInformation;
-import static org.opengis.geoapi.SchemaInformation.ROOT_NAMESPACE;
-import static org.opengis.geoapi.SchemaInformation.SCHEMA_ROOT_URL;
+import org.opengis.geoapi.schema.SchemaException;
+import org.opengis.geoapi.schema.SchemaInformation;
+import static org.opengis.geoapi.schema.SchemaInformation.ROOT_NAMESPACE;
+import static org.opengis.geoapi.schema.SchemaInformation.SCHEMA_ROOT_URL;
 import org.apache.sis.util.Classes;
 import org.apache.sis.system.Modules;
 import org.apache.sis.xml.Namespaces;
diff --git a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/SchemaCompliance.java b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/SchemaCompliance.java
index be7b2f4..af1dcc8 100644
--- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/SchemaCompliance.java
+++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/xml/test/SchemaCompliance.java
@@ -28,10 +28,10 @@
 import jakarta.xml.bind.annotation.XmlNs;
 import jakarta.xml.bind.annotation.XmlElement;
 import org.xml.sax.SAXException;
-import org.opengis.geoapi.Departures;
-import org.opengis.geoapi.DocumentationStyle;
-import org.opengis.geoapi.SchemaInformation;
-import org.opengis.geoapi.SchemaException;
+import org.opengis.geoapi.schema.Departures;
+import org.opengis.geoapi.schema.DocumentationStyle;
+import org.opengis.geoapi.schema.SchemaInformation;
+import org.opengis.geoapi.schema.SchemaException;
 import org.apache.sis.util.StringBuilders;
 
 
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 37e7243..47a5a55 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.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 0cb7898..190028f 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 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 7dd5650..4511f97 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.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 a4b24b1..1390d8f 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 @@
 
 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 de7c8b3..bd15b74 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 @@
 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 1853941..3a8ea95 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
@@ -1563,7 +1563,7 @@
      * @return the {@code "ImageDatum"} element.
      * @throws ParseException if the {@code "ImageDatum"} element cannot be parsed.
      */
-    @SuppressWarnings("deprecation")
+    @SuppressWarnings("removal")
     private ImageDatum parseImageDatum(final int mode, final Element parent) throws ParseException {
         final Element element = parent.pullElement(mode, WKTKeywords.ImageDatum, WKTKeywords.IDatum);
         if (element == null) {
@@ -1670,7 +1670,7 @@
      * @return the {@code "ImageCRS"} element as an {@link ImageCRS} object.
      * @throws ParseException if the {@code "ImageCRS"} element cannot be parsed.
      */
-    @SuppressWarnings("deprecation")
+    @SuppressWarnings("removal")
     private ImageCRS 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 dae666f..debcf1f 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 @@
  * </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 12f00ec0..29055ae 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 @@
  * </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 9fd4158..a473e29 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 @@
      * 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/DefaultVerticalDatum.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
index d6b73a1..7c3ccf4 100644
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
@@ -151,7 +151,7 @@
      * @param  properties  the properties to be given to the identified object.
      * @param  method      the realization method (geoid, tidal, <i>etc.</i>), or {@code null} if unspecified.
      *
-     * @since 2.0
+     * @since 2.0 (temporary version number until this branch is released)
      */
     @SuppressWarnings("this-escape")
     public DefaultVerticalDatum(final Map<String,?> properties, final RealizationMethod method) {
@@ -229,7 +229,7 @@
      *
      * @return method through which this vertical reference frame is realized.
      *
-     * @since 2.0
+     * @since 2.0 (temporary version number until this branch is released)
      */
     @Override
     public Optional<RealizationMethod> getRealizationMethod() {
diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/GeodeticObjectFactory.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
index 9cd82b7..3264031 100644
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
@@ -978,7 +978,7 @@
      * @see DefaultVerticalDatum#DefaultVerticalDatum(Map, RealizationMethod)
      * @see GeodeticAuthorityFactory#createVerticalDatum(String)
      *
-     * @since 2.0
+     * @since 2.0 (temporary version number until this branch is released)
      */
     @Override
     public VerticalDatum createVerticalDatum(final Map<String,?> properties,
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 965942b..2f0075b 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
@@ -41,7 +41,7 @@
      * 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 8458419..02dce1c 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
@@ -488,7 +488,7 @@
      * 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 7e13964..fba1687 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
@@ -407,9 +407,9 @@
      * <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 bc0e6b8..85f6d3a 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.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 @@
      * @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 @@
      *     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 @@
      * 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/referencing/operation/provider/Robinson.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Robinson.java
index 94c694f..8294c53 100644
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Robinson.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Robinson.java
@@ -27,6 +27,16 @@
 
 /**
  * The provider for <q>Robinson</q> projection.
+ * This projection method has no associated EPSG code.
+ *
+ * <h2>Departure in parameter name compared to GDAL</h2>
+ * As of May 2024, the {@link #CENTRAL_MERIDIAN} parameter name declared on the GDAL web site
+ * is <q>Longitude of projection center</q> for EPSG and <q>longitude_of_center</q> for OGC.
+ * However, EPSG does not define this projection, and OGC names generally follow ESRI names.
+ * The parameter name declared by ESRI for projection ESRI:54030 is <q>Central_Meridian</q>.
+ * This class follows ESRI name for OGC and uses <q>Longitude of natural origin</q> for EPSG.
+ * The latter is the name that we found in usage for WKT 2 strings, is used by PROJ implementation
+ * and seems to be match better the usages in the EPSG geodetic dataset.
  *
  * @author  Martin Desruisseaux (Geomatys)
  *
@@ -50,7 +60,7 @@
      *   <tr><td> OGC:     </td><td> central_meridian </td></tr>
      *   <tr><td> GeoTIFF: </td><td> CenterLong </td></tr>
      *   <tr><td> Proj4:   </td><td> lon_0 </td></tr>
-     *   <tr><td> EPSG:    </td><td> Longitude of projection centre </td></tr>
+     *   <tr><td> EPSG:    </td><td> Longitude of natural origin </td></tr>
      * </table>
      */
     public static final ParameterDescriptor<Double> CENTRAL_MERIDIAN = Sinusoidal.CENTRAL_MERIDIAN;
diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Sinusoidal.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Sinusoidal.java
index 782cdf4..a952fb2 100644
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Sinusoidal.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Sinusoidal.java
@@ -30,6 +30,15 @@
  * This is a pseudo-cylindrical (or "false cylindrical") projection.
  * This projection method has no associated EPSG code.
  *
+ * <h2>Departure in parameter name compared to GDAL</h2>
+ * As of May 2024, the {@link #CENTRAL_MERIDIAN} parameter name declared on the GDAL web site
+ * is <q>Longitude of projection center</q> for EPSG and <q>longitude_of_center</q> for OGC.
+ * However, EPSG does not define this projection, and OGC names generally follow ESRI names.
+ * The parameter name declared by ESRI for projection ESRI:54030 is <q>Central_Meridian</q>.
+ * This class follows ESRI name for OGC and uses <q>Longitude of natural origin</q> for EPSG.
+ * The latter is the name that we found in usage for WKT 2 strings, is used by PROJ implementation
+ * and seems to be match better the usages in the EPSG geodetic dataset.
+ *
  * @author  Martin Desruisseaux (Geomatys)
  *
  * @see <a href="https://en.wikipedia.org/wiki/Sinusoidal_projection">Sinusoidal projection on Wikipedia</a>
@@ -53,7 +62,7 @@
      *   <tr><td> OGC:     </td><td> central_meridian </td></tr>
      *   <tr><td> GeoTIFF: </td><td> CenterLong </td></tr>
      *   <tr><td> Proj4:   </td><td> lon_0 </td></tr>
-     *   <tr><td> EPSG:    </td><td> Longitude of projection centre </td></tr>
+     *   <tr><td> EPSG:    </td><td> Longitude of natural origin </td></tr>
      * </table>
      */
     public static final ParameterDescriptor<Double> CENTRAL_MERIDIAN;
@@ -95,7 +104,7 @@
     static {
         final var builder = new ParameterBuilder().setRequired(true);
         CENTRAL_MERIDIAN = createLongitude(builder.addNamesAndIdentifiers(ESRI.CENTRAL_MERIDIAN)
-                .addName(ObliqueMercator.LONGITUDE_OF_CENTRE.getName()));
+                .addName(Equirectangular.LONGITUDE_OF_ORIGIN.getName()));
 
         PARAMETERS = builder
                 .addName      ("Sinusoidal")
diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
index 3c33bcc..8048ec3 100644
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
@@ -1612,7 +1612,7 @@
      * @return a new matrix of the given size.
      * @throws FactoryException if the matrix creation failed.
      *
-     * @since 1.5
+     * @since 2.0 (temporary version number until this branch is released)
      */
     @Override
     public Matrix createMatrix(int numRow, int numCol) throws FactoryException {
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 7644bf7..3a7a54c 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
@@ -320,7 +320,7 @@
      * 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}
+     * <p>The {@code pixelInCell} attribute of the associated {@code ImageDatum}
      * is set to {@link PixelInCell#CELL_CENTER}.</p>
      */
     @SuppressWarnings("removal")
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 3b0c205..b22d9a1 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 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 874dae4..03fe2ff 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.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 9658dcb..ed50cd8 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.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 16da3bd..e3d4aae 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.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 c5aba25..763b9bb 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.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 9dcf61b..af42de1 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.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 a46a1ec..95a1acb 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 243fe62..153f29b 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 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 797856c..831436a 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 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 fe8470c..a26e6d0 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 @@
 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 25256f4..c5715e6 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.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 522f2f3..e9a9304 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 @@
      *   <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 78ce029..9ddf3c3 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.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 b7cdb7b..52cd3a2 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.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 b0eaced..7592ce1 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.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 3c79c38..6b041d6 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.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 db4d4b9..376d8eb 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.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 1573168..bcd0e14 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 @@
 
 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 62a781b..f3d97ac 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.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 39f7f87..d15d679 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 1fe645b..80d7264 160000
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@ -1 +1 @@
-Subproject commit 1fe645ba50f15bb3ab97f93892fc4fdb236d3720
+Subproject commit 80d72644860facda496cef21b132d13fec65c029
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 63f905d..e4a042f 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.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 62e1ee68..eb713c2 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 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 2a66beb..f1975d8 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 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 92e3e3e..114e3aa 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.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 a9aa399..47e603b 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 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 ea48c40..7959a36 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 @@
 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 7034a2f..a7ee910 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.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 0a92df4..e37f7d2 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 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 f1f1137..7b261b7 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 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 952c9d2..ae3369e 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.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 87012d0..5a176e5 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.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;