This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 11f3b0bae3d6f94852578f9e2dab28007b41efbf
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Thu Oct 2 15:17:49 2025 +0200

    Move deprecated classes from ISO 19111:2007 into a non-exported package.
    Those classes are kept for GML and ISO 19162:2015 compatibility.
---
 .../main/module-info.java                          |   1 +
 .../apache/sis/io/wkt/GeodeticObjectParser.java    |   6 +-
 .../apache/sis/referencing/crs/AbstractCRS.java    |   4 +-
 .../sis/referencing/crs/AbstractSingleCRS.java     |   3 +-
 .../sis/referencing/crs/DefaultEngineeringCRS.java |  15 +--
 .../apache/sis/referencing/crs/package-info.java   |   1 -
 .../org/apache/sis/referencing/cs/AbstractCS.java  |   1 +
 .../sis/referencing/datum/AbstractDatum.java       |   7 +-
 .../apache/sis/referencing/datum/package-info.java |   5 +-
 .../{crs => legacy}/DefaultImageCRS.java           | 141 +++++++++++++--------
 .../{datum => legacy}/DefaultImageDatum.java       |  25 ++--
 .../{cs => legacy}/DefaultUserDefinedCS.java       |  45 +------
 .../sis/referencing/legacy/package-info.java       |  63 +++++++++
 .../referencing/operation/SubOperationInfo.java    |   2 +-
 .../sis/xml/bind/referencing/CD_ImageDatum.java    |   2 +-
 .../sis/xml/bind/referencing/CS_UserDefinedCS.java |   2 +-
 .../apache/sis/referencing/crs/HardCodedCRS.java   |   3 +-
 .../sis/referencing/datum/HardCodedDatum.java      |   3 +-
 .../{crs => legacy}/DefaultImageCRSTest.java       |   4 +-
 .../main/org/apache/sis/geometries/Geometries.java |   6 +-
 20 files changed, 191 insertions(+), 148 deletions(-)

diff --git a/endorsed/src/org.apache.sis.referencing/main/module-info.java 
b/endorsed/src/org.apache.sis.referencing/main/module-info.java
index 1f07a76f22..27146fb6ca 100644
--- a/endorsed/src/org.apache.sis.referencing/main/module-info.java
+++ b/endorsed/src/org.apache.sis.referencing/main/module-info.java
@@ -217,4 +217,5 @@ module org.apache.sis.referencing {
     opens org.apache.sis.referencing.crs       to jakarta.xml.bind, 
org.glassfish.jaxb.core, org.glassfish.jaxb.runtime;
     opens org.apache.sis.referencing.datum     to jakarta.xml.bind, 
org.glassfish.jaxb.core, org.glassfish.jaxb.runtime;
     opens org.apache.sis.referencing.operation to jakarta.xml.bind, 
org.glassfish.jaxb.core, org.glassfish.jaxb.runtime;
+    opens org.apache.sis.referencing.legacy    to jakarta.xml.bind, 
org.glassfish.jaxb.core, org.glassfish.jaxb.runtime;
 }
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 6496c12629..c3bf681961 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
@@ -91,8 +91,8 @@ import org.opengis.referencing.ObjectDomain;
 import org.opengis.coordinate.CoordinateMetadata;
 
 // Specific to the geoapi-4.0 branch:
-import org.apache.sis.referencing.crs.DefaultImageCRS;
-import org.apache.sis.referencing.datum.DefaultImageDatum;
+import org.apache.sis.referencing.legacy.DefaultImageCRS;
+import org.apache.sis.referencing.legacy.DefaultImageDatum;
 
 
 /**
@@ -1768,7 +1768,6 @@ class GeodeticObjectParser extends MathTransformParser 
implements Comparator<Coo
      * @return the {@code "ImageDatum"} element.
      * @throws ParseException if the {@code "ImageDatum"} element cannot be 
parsed.
      */
-    @SuppressWarnings("removal")
     private DefaultImageDatum parseImageDatum(final int mode, final Element 
parent) throws ParseException {
         final Element element = parent.pullElement(mode, 
WKTKeywords.ImageDatum, WKTKeywords.IDatum);
         if (element == null) {
@@ -1870,7 +1869,6 @@ class GeodeticObjectParser extends MathTransformParser 
implements Comparator<Coo
      * @return the {@code "ImageCRS"} element as an {@link ImageCRS} object.
      * @throws ParseException if the {@code "ImageCRS"} element cannot be 
parsed.
      */
-    @SuppressWarnings("removal")
     private DefaultImageCRS parseImageCRS(final int mode, final Element 
parent) throws ParseException {
         final Element element = parent.pullElement(mode, WKTKeywords.ImageCRS);
         if (element == null) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractCRS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractCRS.java
index c2aeda8b6f..549fe464af 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractCRS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractCRS.java
@@ -36,6 +36,7 @@ import org.apache.sis.referencing.cs.AxesConvention;
 import org.apache.sis.referencing.cs.DefaultCoordinateSystemAxis;
 import org.apache.sis.referencing.datum.AbstractDatum;
 import org.apache.sis.referencing.datum.DefaultDatumEnsemble;
+import org.apache.sis.referencing.legacy.DefaultImageCRS;
 import org.apache.sis.referencing.internal.shared.ReferencingUtilities;
 import org.apache.sis.metadata.internal.shared.ImplementationHelper;
 import org.apache.sis.io.wkt.FormattableObject;
@@ -97,7 +98,8 @@ import org.opengis.coordinate.MismatchedDimensionException;
 @XmlRootElement(name = "AbstractCRS")
 @XmlSeeAlso({
     AbstractSingleCRS.class,
-    DefaultCompoundCRS.class
+    DefaultCompoundCRS.class,
+    DefaultImageCRS.class
 })
 public class AbstractCRS extends AbstractReferenceSystem implements 
CoordinateReferenceSystem {
     /**
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractSingleCRS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractSingleCRS.java
index 4b23a3ebda..0e09a7ece0 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractSingleCRS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractSingleCRS.java
@@ -54,8 +54,7 @@ import org.opengis.metadata.Identifier;
     DefaultVerticalCRS.class,
     DefaultTemporalCRS.class,
     DefaultParametricCRS.class,
-    DefaultEngineeringCRS.class,
-    DefaultImageCRS.class
+    DefaultEngineeringCRS.class
 })
 class AbstractSingleCRS<D extends Datum> extends AbstractCRS implements 
SingleCRS {
     /**
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
index abaa0874b4..0f2da2d0e8 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
@@ -28,6 +28,7 @@ import org.apache.sis.referencing.AbstractReferenceSystem;
 import org.apache.sis.referencing.cs.*;
 import org.apache.sis.referencing.datum.DatumOrEnsemble;
 import org.apache.sis.referencing.datum.DefaultEngineeringDatum;
+import org.apache.sis.referencing.legacy.DefaultUserDefinedCS;
 import org.apache.sis.referencing.internal.shared.WKTKeywords;
 import org.apache.sis.xml.bind.referencing.CS_CoordinateSystem;
 import org.apache.sis.io.wkt.Formatter;
@@ -53,8 +54,7 @@ import org.opengis.referencing.datum.DatumEnsemble;
  *   {@linkplain org.apache.sis.referencing.cs.DefaultCylindricalCS 
Cylindrical},
  *   {@linkplain org.apache.sis.referencing.cs.DefaultLinearCS Linear}.
  *   {@linkplain org.apache.sis.referencing.cs.DefaultPolarCS Polar},
- *   {@linkplain org.apache.sis.referencing.cs.DefaultSphericalCS Spherical} or
- *   {@linkplain org.apache.sis.referencing.cs.DefaultUserDefinedCS User 
Defined}.
+ *   {@linkplain org.apache.sis.referencing.cs.DefaultSphericalCS Spherical}.
  * </p>
  *
  * <h2>Immutability and thread safety</h2>
@@ -142,17 +142,6 @@ public class DefaultEngineeringCRS extends 
AbstractSingleCRS<EngineeringDatum> i
         super(properties, EngineeringDatum.class, datum, ensemble, cs);
     }
 
-    /**
-     * @deprecated A {@code DatumEnsemble} argument has been added.
-     */
-    @Deprecated(since="1.5", forRemoval=true)
-    public DefaultEngineeringCRS(final Map<String,?> properties,
-                                 final EngineeringDatum datum,
-                                 final CoordinateSystem cs)
-    {
-        this(properties, datum, null, cs);
-    }
-
     /**
      * Creates a new CRS derived from the specified one, but with different 
axis order or unit.
      * This is for implementing the {@link #createSameType(AbstractCS)} method 
only.
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/package-info.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/package-info.java
index 3e4dc8636d..bd51917b42 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/package-info.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/package-info.java
@@ -98,7 +98,6 @@
      */
     @XmlJavaTypeAdapter(CD_GeodeticDatum.class),
     @XmlJavaTypeAdapter(CD_EngineeringDatum.class),
-    @XmlJavaTypeAdapter(CD_ImageDatum.class),
     @XmlJavaTypeAdapter(CD_ParametricDatum.class),
     @XmlJavaTypeAdapter(CD_TemporalDatum.class),
     @XmlJavaTypeAdapter(CD_VerticalDatum.class),
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/AbstractCS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/AbstractCS.java
index ca5703ad3c..2e588160ef 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/AbstractCS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/AbstractCS.java
@@ -44,6 +44,7 @@ import 
org.apache.sis.referencing.internal.shared.WKTUtilities;
 import org.apache.sis.referencing.internal.shared.AxisDirections;
 import org.apache.sis.referencing.internal.shared.WKTKeywords;
 import org.apache.sis.referencing.internal.shared.ReferencingUtilities;
+import org.apache.sis.referencing.legacy.DefaultUserDefinedCS;
 import org.apache.sis.system.Modules;
 import org.apache.sis.util.Utilities;
 import org.apache.sis.util.ComparisonMode;
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
index ac11379d1a..6bbe6a10ce 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/AbstractDatum.java
@@ -37,6 +37,7 @@ import org.opengis.referencing.datum.TemporalDatum;
 import org.opengis.referencing.datum.EngineeringDatum;
 import org.apache.sis.referencing.AbstractIdentifiedObject;
 import org.apache.sis.referencing.IdentifiedObjects;
+import org.apache.sis.referencing.legacy.DefaultImageDatum;
 import org.apache.sis.referencing.internal.shared.WKTKeywords;
 import org.apache.sis.util.CharSequences;
 import org.apache.sis.util.ComparisonMode;
@@ -211,10 +212,8 @@ public class AbstractDatum extends 
AbstractIdentifiedObject implements Datum {
         }
         anchorEpoch = Containers.property(properties, ANCHOR_EPOCH_KEY, 
Temporal.class);
         if (anchorEpoch == null) {
-            Date date = Containers.property(properties, "realizationEpoch", 
Date.class);    // Legacy name.
-            if (date != null) {
-                anchorEpoch = date.toInstant();
-            }
+            anchorEpoch = TemporalDate.toTemporal(
+                    Containers.property(properties, "realizationEpoch", 
Date.class));       // Legacy name.
         }
         publicationDate = Containers.property(properties, 
PUBLICATION_DATE_KEY, Temporal.class);
         conventionalRS  = Containers.property(properties, CONVENTIONAL_RS_KEY, 
IdentifiedObject.class);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/package-info.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/package-info.java
index 9c0893bf7b..57bb360e1d 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/package-info.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/package-info.java
@@ -26,8 +26,7 @@
  *  {@linkplain org.apache.sis.referencing.datum.DefaultVerticalDatum 
vertical},
  *  {@linkplain org.apache.sis.referencing.datum.DefaultTemporalDatum 
temporal}),
  * or to platforms (mobile or not)
- * ({@linkplain org.apache.sis.referencing.datum.DefaultEngineeringDatum 
engineering},
- *  {@linkplain org.apache.sis.referencing.datum.DefaultImageDatum image}).
+ * ({@linkplain org.apache.sis.referencing.datum.DefaultEngineeringDatum 
engineering}).
  * Some of those SIS subclasses provide additional methods that are not part 
of OGC/ISO specifications:</p>
  * <ul>
  *   <li>{@link 
org.apache.sis.referencing.datum.DefaultEllipsoid#getAuthalicRadius()}</li>
@@ -71,7 +70,7 @@
     @XmlJavaTypeAdapter(CD_PrimeMeridian.class),
     @XmlJavaTypeAdapter(StringAdapter.class),
     @XmlJavaTypeAdapter(InternationalStringConverter.class),
-    @XmlJavaTypeAdapter(DateAdapter.class),
+    @XmlJavaTypeAdapter(DateAdapter.class)
 })
 package org.apache.sis.referencing.datum;
 
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultImageCRS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/DefaultImageCRS.java
similarity index 72%
rename from 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultImageCRS.java
rename to 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/DefaultImageCRS.java
index 37172f5dc6..0b2aee0320 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultImageCRS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/DefaultImageCRS.java
@@ -14,22 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.referencing.crs;
+package org.apache.sis.referencing.legacy;
 
 import java.util.Map;
+import java.util.Objects;
+import java.lang.reflect.Field;
 import jakarta.xml.bind.annotation.XmlType;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
 import org.opengis.referencing.cs.AffineCS;
 import org.opengis.referencing.cs.CartesianCS;
+import org.opengis.referencing.crs.SingleCRS;
+import org.apache.sis.referencing.CommonCRS;
 import org.apache.sis.referencing.AbstractReferenceSystem;
 import org.apache.sis.referencing.internal.shared.WKTKeywords;
-import org.apache.sis.referencing.cs.AxesConvention;
-import org.apache.sis.referencing.cs.AbstractCS;
+import org.apache.sis.referencing.internal.shared.NilReferencingObject;
+import org.apache.sis.referencing.crs.AbstractCRS;
+import org.apache.sis.metadata.internal.shared.ImplementationHelper;
 import org.apache.sis.io.wkt.Formatter;
-
-// Specific to the geoapi-4.0 branch:
-import org.apache.sis.referencing.datum.DefaultImageDatum;
+import org.apache.sis.util.ComparisonMode;
+import org.apache.sis.util.Utilities;
+import org.apache.sis.util.collection.BackingStoreException;
 
 
 /**
@@ -38,7 +43,7 @@ import org.apache.sis.referencing.datum.DefaultImageDatum;
  * user community exists for images with its own terms of reference.
  *
  * <p><b>Used with datum type:</b>
- *   {@linkplain org.apache.sis.referencing.datum.DefaultImageDatum Image}.<br>
+ *   {@linkplain DefaultImageDatum Image}.<br>
  * <b>Used with coordinate system types:</b>
  *   {@linkplain org.apache.sis.referencing.cs.DefaultCartesianCS Cartesian} or
  *   {@linkplain org.apache.sis.referencing.cs.DefaultAffineCS Affine}.
@@ -49,30 +54,30 @@ import org.apache.sis.referencing.datum.DefaultImageDatum;
  * the coordinate system and the datum instances given to the constructor are 
also immutable. Unless otherwise noted
  * in the javadoc, this condition holds if all components were created using 
only SIS factories and static constants.
  *
- * @deprecated The {@code ImageCRS} class has been removed in ISO 19111:2019.
- *             It is replaced by {@code EngineeringCRS}.
- *
  * @author  Martin Desruisseaux (IRD, Geomatys)
- * @version 1.5
- *
- * @see org.apache.sis.referencing.datum.DefaultImageDatum
- * @see 
org.apache.sis.referencing.factory.GeodeticAuthorityFactory#createImageCRS(String)
- *
- * @since 0.4
  */
-@Deprecated(since="1.5", forRemoval=true)   // Actually to be moved to an 
internal package for GML and WKT purposes.
 @XmlType(name = "ImageCRSType", propOrder = {
     "cartesianCS",
     "affineCS",
     "datum"
 })
 @XmlRootElement(name = "ImageCRS")
-public final class DefaultImageCRS extends 
AbstractSingleCRS<DefaultImageDatum> {
+public final class DefaultImageCRS extends AbstractCRS implements SingleCRS {
     /**
      * Serial number for inter-operability with different versions.
      */
     private static final long serialVersionUID = 7222610270977351462L;
 
+    /**
+     * The datum, or {@code null} if the <abbr>CRS</abbr> is associated only 
to a datum ensemble.
+     *
+     * <p><b>Consider this field as final!</b>
+     * This field is non-final only for construction convenience and for 
unmarshalling.</p>
+     *
+     * @see #getDatum()
+     */
+    private DefaultImageDatum datum;
+
     /**
      * Creates a coordinate reference system from the given properties, datum 
and coordinate system.
      * The properties given in argument follow the same rules as for the
@@ -116,15 +121,18 @@ public final class DefaultImageCRS extends 
AbstractSingleCRS<DefaultImageDatum>
                            final DefaultImageDatum datum,
                            final AffineCS cs)
     {
-        super(properties, DefaultImageDatum.class, datum, null, cs);
+        super(properties, cs);
+        this.datum = Objects.requireNonNull(datum);
     }
 
     /**
-     * Creates a new CRS derived from the specified one, but with different 
axis order or unit.
-     * This is for implementing the {@link #createSameType(AbstractCS)} method 
only.
+     * Returns the GeoAPI interface implemented by this class.
+     *
+     * @return the coordinate reference system interface implemented by this 
class.
      */
-    private DefaultImageCRS(final DefaultImageCRS original, final AbstractCS 
cs) {
-        super(original, null, cs);
+    @Override
+    public Class<? extends SingleCRS> getInterface() {
+        return SingleCRS.class;
     }
 
     /**
@@ -132,10 +140,9 @@ public final class DefaultImageCRS extends 
AbstractSingleCRS<DefaultImageDatum>
      *
      * @return the datum.
      */
-    @Override
     @XmlElement(name = "imageDatum", required = true)
     public DefaultImageDatum getDatum() {
-        return super.getDatum();
+        return datum;
     }
 
     /**
@@ -148,27 +155,6 @@ public final class DefaultImageCRS extends 
AbstractSingleCRS<DefaultImageDatum>
         return (AffineCS) super.getCoordinateSystem();
     }
 
-    /**
-     * {@inheritDoc}
-     *
-     * @return {@inheritDoc}
-     */
-    @Override
-    public DefaultImageCRS forConvention(final AxesConvention convention) {
-        return (DefaultImageCRS) super.forConvention(convention);
-    }
-
-    /**
-     * Returns a coordinate reference system of the same type as this CRS but 
with different axes.
-     *
-     * @param  cs  the coordinate system with new axes.
-     * @return new CRS of the same type and datum than this CRS, but with the 
given axes.
-     */
-    @Override
-    final AbstractCRS createSameType(final AbstractCS cs) {
-        return new DefaultImageCRS(this, cs);
-    }
-
     /**
      * Formats this CRS as a <i>Well Known Text</i> {@code ImageCRS[…]} 
element.
      *
@@ -187,6 +173,34 @@ public final class DefaultImageCRS extends 
AbstractSingleCRS<DefaultImageDatum>
         return WKTKeywords.ImageCRS;
     }
 
+    /**
+     * Compares this coordinate reference system with the specified object for 
equality.
+     *
+     * @param  object  the object to compare to {@code this}.
+     * @param  mode    whether to perform a strict or lenient comparison.
+     * @return {@code true} if both objects are equal.
+     */
+    @Override
+    public boolean equals(final Object object, ComparisonMode mode) {
+        if (super.equals(object, mode)) {
+            if (mode == ComparisonMode.STRICT) {
+                final var that = (DefaultImageCRS) object;
+                return Objects.equals(datum, that.datum);
+            }
+            final var that = (SingleCRS) object;
+            return Utilities.deepEquals(getDatum(), that.getDatum(), mode);
+        }
+        return false;
+    }
+
+    /**
+     * Invoked by {@code hashCode()} for computing the hash code when first 
needed.
+     */
+    @Override
+    protected long computeHashCode() {
+        return super.computeHashCode() + Objects.hashCode(datum);
+    }
+
 
 
 
@@ -209,6 +223,7 @@ public final class DefaultImageCRS extends 
AbstractSingleCRS<DefaultImageDatum>
      * reserved to JAXB, which will assign values to the fields using 
reflection.
      */
     private DefaultImageCRS() {
+        super(Map.of(NAME_KEY, NilReferencingObject.UNNAMED), 
CommonCRS.Engineering.DISPLAY.crs().getCoordinateSystem());
         /*
          * The datum and the coordinate system are mandatory for SIS working. 
We do not verify their presence
          * here because the verification would have to be done in an 
'afterMarshal(…)' method and throwing an
@@ -223,7 +238,11 @@ public final class DefaultImageCRS extends 
AbstractSingleCRS<DefaultImageDatum>
      * @see #getDatum()
      */
     private void setDatum(final DefaultImageDatum value) {
-        setDatum("imageDatum", value);
+        if (datum == null) {
+            datum = value;
+        } else {
+            ImplementationHelper.propertyAlreadySet(getClass(), "setDatum", 
"imageDatum");
+        }
     }
 
     /**
@@ -249,14 +268,34 @@ public final class DefaultImageCRS extends 
AbstractSingleCRS<DefaultImageDatum>
      *
      * @see <a href="http://issues.apache.org/jira/browse/SIS-166";>SIS-166</a>
      */
-    @XmlElement(name = "cartesianCS") private CartesianCS getCartesianCS() 
{return getCoordinateSystem(CartesianCS.class);}
-    @XmlElement(name = "affineCS")    private AffineCS    getAffineCS()    
{return getCoordinateSystem(AffineCS.class);}
+    @XmlElement(name = "cartesianCS")
+    private CartesianCS getCartesianCS() {
+        final AffineCS cs = getCoordinateSystem();
+        return (cs instanceof CartesianCS) ? (CartesianCS) cs : null;
+    }
+
+    @XmlElement(name = "affineCS")
+    private AffineCS getAffineCS() {
+        final AffineCS cs = getCoordinateSystem();
+        return (cs instanceof CartesianCS) ? null : cs;
+    }
 
     /**
      * Used by JAXB only (invoked by reflection).
      *
      * @see #getCartesianCS()
      */
-    private void setCartesianCS(final CartesianCS cs) 
{setCoordinateSystem("cartesianCS", cs);}
-    private void setAffineCS   (final AffineCS    cs) 
{setCoordinateSystem("affineCS",    cs);}
+    private void setCartesianCS(final CartesianCS cs) {
+        setAffineCS(cs);
+    }
+
+    private void setAffineCS(final AffineCS cs) {
+        try {
+            Field coordinateSystem = 
AbstractCRS.class.getDeclaredField("coordinateSystem");
+            coordinateSystem.setAccessible(true);
+            coordinateSystem.set(this, cs);
+        } catch (ReflectiveOperationException e) {
+            throw new BackingStoreException(e);
+        }
+    }
 }
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultImageDatum.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/DefaultImageDatum.java
similarity index 93%
rename from 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultImageDatum.java
rename to 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/DefaultImageDatum.java
index a2ab959ffd..8b58c01e80 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultImageDatum.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/DefaultImageDatum.java
@@ -14,28 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.referencing.datum;
+package org.apache.sis.referencing.legacy;
 
 import java.util.Map;
 import java.util.Objects;
 import jakarta.xml.bind.annotation.XmlType;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import org.opengis.util.GenericName;
 import org.opengis.util.InternationalString;
+import org.apache.sis.referencing.datum.AbstractDatum;
 import org.apache.sis.referencing.internal.shared.WKTKeywords;
+import org.apache.sis.referencing.internal.shared.NilReferencingObject;
 import org.apache.sis.metadata.internal.shared.ImplementationHelper;
 import org.apache.sis.io.wkt.Formatter;
+import org.apache.sis.io.wkt.ElementKind;
 import org.apache.sis.util.ComparisonMode;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
 import org.opengis.metadata.Identifier;
 
-// Specific to the geoapi-4.0 branch:
-import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import jakarta.xml.bind.annotation.adapters.CollapsedStringAdapter;
-import org.apache.sis.io.wkt.ElementKind;
-
 
 /**
  * Defines the origin of an image coordinate reference system. An image datum 
is used in a local
@@ -47,18 +47,10 @@ import org.apache.sis.io.wkt.ElementKind;
  * given to the constructor are also immutable. Unless otherwise noted in the 
javadoc, this condition holds if
  * all components were created using only SIS factories and static constants.
  *
- * @deprecated The {@code ImageDatum} class has been removed in ISO 19111:2019.
- *             It is replaced by {@code EngineeringDatum}.
- *
  * @author  Martin Desruisseaux (IRD, Geomatys)
- * @version 1.5
  *
- * @see org.apache.sis.referencing.crs.DefaultImageCRS
- * @see 
org.apache.sis.referencing.factory.GeodeticAuthorityFactory#createImageDatum(String)
- *
- * @since 0.4
+ * @see DefaultImageCRS
  */
-@Deprecated(since="1.5", forRemoval=true)   // Actually to be moved to an 
internal package for GML and WKT purposes.
 @XmlType(name = "ImageDatumType")
 @XmlRootElement(name = "ImageDatum")
 public final class DefaultImageDatum extends AbstractDatum {
@@ -122,8 +114,6 @@ public final class DefaultImageDatum extends AbstractDatum {
      *
      * @param  properties   the properties to be given to the identified 
object.
      * @param  pixelInCell  the way the image grid is associated with the 
image data attributes.
-     *
-     * @see 
org.apache.sis.referencing.factory.GeodeticObjectFactory#createImageDatum(Map, 
PixelInCell)
      */
     public DefaultImageDatum(final Map<String,?> properties, final String 
pixelInCell) {
         super(properties);
@@ -221,6 +211,7 @@ public final class DefaultImageDatum extends AbstractDatum {
      * reserved to JAXB, which will assign values to the fields using 
reflection.
      */
     private DefaultImageDatum() {
+        super(Map.of(NAME_KEY, NilReferencingObject.UNNAMED));
     }
 
     /**
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultUserDefinedCS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/DefaultUserDefinedCS.java
similarity index 80%
rename from 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultUserDefinedCS.java
rename to 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/DefaultUserDefinedCS.java
index 304f1a38dd..5dfab47009 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultUserDefinedCS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/DefaultUserDefinedCS.java
@@ -14,11 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.referencing.cs;
+package org.apache.sis.referencing.legacy;
 
 import java.util.Map;
 import jakarta.xml.bind.annotation.XmlType;
 import jakarta.xml.bind.annotation.XmlRootElement;
+import org.apache.sis.referencing.cs.AbstractCS;
+import org.apache.sis.referencing.internal.shared.NilReferencingObject;
 import org.opengis.referencing.cs.CoordinateSystemAxis;
 
 
@@ -42,12 +44,7 @@ import org.opengis.referencing.cs.CoordinateSystemAxis;
  * constants.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
- * @version 1.5
- * @since   0.4
- *
- * @deprecated The {@code UserDefinedCS} class has been removed from ISO 
19111:2019.
  */
-@Deprecated(since="1.5", forRemoval=true)   // Actually to be moved to an 
internal package for GML and WKT purposes.
 @XmlType(name = "UserDefinedCSType")
 @XmlRootElement(name = "UserDefinedCS")
 public final class DefaultUserDefinedCS extends AbstractCS {
@@ -90,8 +87,6 @@ public final class DefaultUserDefinedCS extends AbstractCS {
      * @param  properties  the properties to be given to the identified object.
      * @param  axis0       the first axis.
      * @param  axis1       the second axis.
-     *
-     * @see 
org.apache.sis.referencing.factory.GeodeticObjectFactory#createUserDefinedCS(Map,
 CoordinateSystemAxis, CoordinateSystemAxis)
      */
     public DefaultUserDefinedCS(final Map<String,?>   properties,
                                 final CoordinateSystemAxis axis0,
@@ -109,8 +104,6 @@ public final class DefaultUserDefinedCS extends AbstractCS {
      * @param  axis0       the first axis.
      * @param  axis1       the second axis.
      * @param  axis2       the third axis.
-     *
-     * @see 
org.apache.sis.referencing.factory.GeodeticObjectFactory#createUserDefinedCS(Map,
 CoordinateSystemAxis, CoordinateSystemAxis, CoordinateSystemAxis)
      */
     public DefaultUserDefinedCS(final Map<String,?>   properties,
                                 final CoordinateSystemAxis axis0,
@@ -120,37 +113,6 @@ public final class DefaultUserDefinedCS extends AbstractCS 
{
         super(properties, axis0, axis1, axis2);
     }
 
-    /**
-     * Creates a new CS derived from the specified one, but with different 
axis order or unit.
-     *
-     * @see #createForAxes(String, CoordinateSystemAxis[])
-     */
-    private DefaultUserDefinedCS(DefaultUserDefinedCS original, String name, 
CoordinateSystemAxis[] axes) {
-        super(original, name, axes);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return {@inheritDoc}
-     */
-    @Override
-    public DefaultUserDefinedCS forConvention(final AxesConvention convention) 
{
-        return (DefaultUserDefinedCS) super.forConvention(convention);
-    }
-
-    /**
-     * Returns a coordinate system with different axes.
-     */
-    @Override
-    final AbstractCS createForAxes(final String name, final 
CoordinateSystemAxis[] axes) {
-        switch (axes.length) {
-            case 2: // Fall through
-            case 3: return new DefaultUserDefinedCS(this, name, axes);
-            default: throw unexpectedDimension(axes, 2, 3);
-        }
-    }
-
 
 
 
@@ -173,5 +135,6 @@ public final class DefaultUserDefinedCS extends AbstractCS {
      * which will assign values to the fields using reflection.
      */
     private DefaultUserDefinedCS() {
+        super(Map.of(NAME_KEY, NilReferencingObject.UNNAMED));
     }
 }
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/package-info.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/package-info.java
new file mode 100644
index 0000000000..254a1087b2
--- /dev/null
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/legacy/package-info.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+
+/**
+ * Referencing objects that existed in legacy international standards but have 
been removed in more recent editions.
+ * Those objects are kept for compatibility with, for example, Geographic 
Markup Language (<abbr>GML</abbr>) but are
+ * not anymore in public <abbr>API</abbr>.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @author  Cédric Briançon (Geomatys)
+ */
+@XmlSchema(location = 
"http://schemas.opengis.net/gml/3.2.1/coordinateReferenceSystems.xsd";,
+           elementFormDefault = XmlNsForm.QUALIFIED, namespace = 
Namespaces.GML, xmlns =
+{
+    @XmlNs(prefix = "gml", namespaceURI = Namespaces.GML),
+    @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD),
+    @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO),
+    @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI)
+})
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlJavaTypeAdapters({
+    /*
+     * Do NOT declare the following adapters in this package-info:
+     *
+     *   - CS_CoordinateSystem
+     *   - SC_SingleCRS
+     *   - SC_CRS
+     *
+     * Because the above types are the base type of many other types,
+     * adding the above adapters is a cause of confusion for JAXB.
+     *
+     * Note: be careful with CS_AffineCS and CS_CartesianCS relationship.
+     */
+    @XmlJavaTypeAdapter(CD_ImageDatum.class),
+    @XmlJavaTypeAdapter(CS_CartesianCS.class),      // Must be before 
CS_AffineCS.
+    @XmlJavaTypeAdapter(CS_AffineCS.class)
+})
+package org.apache.sis.referencing.legacy;
+
+import jakarta.xml.bind.annotation.XmlNs;
+import jakarta.xml.bind.annotation.XmlNsForm;
+import jakarta.xml.bind.annotation.XmlSchema;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
+import org.apache.sis.xml.Namespaces;
+import org.apache.sis.xml.bind.referencing.*;
+import org.apache.sis.xml.internal.shared.LegacyNamespaces;
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 767ba53262..17a604bd58 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
@@ -30,7 +30,7 @@ import org.apache.sis.referencing.operation.matrix.MatrixSIS;
 import org.apache.sis.referencing.operation.transform.MathTransforms;
 
 // Specific to the geoapi-4.0 branch:
-import org.apache.sis.referencing.crs.DefaultImageCRS;
+import org.apache.sis.referencing.legacy.DefaultImageCRS;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CD_ImageDatum.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CD_ImageDatum.java
index 2e1c5d77f1..2c5bbdfe68 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CD_ImageDatum.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CD_ImageDatum.java
@@ -18,7 +18,7 @@ package org.apache.sis.xml.bind.referencing;
 
 import jakarta.xml.bind.annotation.XmlElement;
 import org.apache.sis.xml.bind.gco.PropertyType;
-import org.apache.sis.referencing.datum.DefaultImageDatum;
+import org.apache.sis.referencing.legacy.DefaultImageDatum;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CS_UserDefinedCS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CS_UserDefinedCS.java
index 488042cc75..7900672d33 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CS_UserDefinedCS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/xml/bind/referencing/CS_UserDefinedCS.java
@@ -17,7 +17,7 @@
 package org.apache.sis.xml.bind.referencing;
 
 import jakarta.xml.bind.annotation.XmlElement;
-import org.apache.sis.referencing.cs.DefaultUserDefinedCS;
+import org.apache.sis.referencing.legacy.DefaultUserDefinedCS;
 import org.apache.sis.xml.bind.gco.PropertyType;
 
 
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 a1151b90e3..f0949b31d8 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
@@ -20,6 +20,7 @@ import java.util.Map;
 import java.util.HashMap;
 import static org.opengis.referencing.IdentifiedObject.*;
 import org.apache.sis.referencing.NamedIdentifier;
+import org.apache.sis.referencing.legacy.DefaultImageCRS;
 import org.apache.sis.metadata.iso.extent.Extents;
 import static org.apache.sis.referencing.IdentifiedObjects.getProperties;
 
@@ -322,7 +323,7 @@ public final class HardCodedCRS {
      * <p>The {@code pixelInCell} attribute of the associated {@code 
ImageDatum}
      * is set to {@link 
org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER}.</p>
      */
-    @SuppressWarnings("removal")
+    @SuppressWarnings("exports")
     public static final DefaultImageCRS IMAGE = new DefaultImageCRS(
             getProperties(HardCodedDatum.IMAGE), HardCodedDatum.IMAGE, 
HardCodedCS.GRID);
 
diff --git 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
index ce221f6ab0..b1d86a1c5f 100644
--- 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
+++ 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/HardCodedDatum.java
@@ -20,6 +20,7 @@ import java.util.Map;
 import java.util.HashMap;
 import java.time.Instant;
 import org.apache.sis.referencing.NamedIdentifier;
+import org.apache.sis.referencing.legacy.DefaultImageDatum;
 import org.apache.sis.referencing.internal.VerticalDatumTypes;
 import org.apache.sis.measure.Units;
 import static org.apache.sis.util.internal.shared.Constants.SECONDS_PER_DAY;
@@ -154,7 +155,7 @@ public final class HardCodedDatum {
     /**
      * Image with {@link org.apache.sis.coverage.grid.PixelInCell#CELL_CENTER}.
      */
-    @SuppressWarnings("removal")
+    @SuppressWarnings("exports")
     public static final DefaultImageDatum IMAGE = new DefaultImageDatum(
             properties("Image", null, null),
             "cell center");
diff --git 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/legacy/DefaultImageCRSTest.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
rename to 
endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/legacy/DefaultImageCRSTest.java
index 5da70864d8..9b25e5ec04 100644
--- 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
+++ 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/legacy/DefaultImageCRSTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.referencing.crs;
+package org.apache.sis.referencing.legacy;
 
 import java.util.Map;
 import jakarta.xml.bind.JAXBException;
@@ -23,7 +23,6 @@ import org.opengis.referencing.cs.AffineCS;
 import org.opengis.referencing.cs.CartesianCS;
 import org.opengis.referencing.cs.CoordinateSystem;
 import org.apache.sis.referencing.cs.DefaultAffineCS;
-import org.apache.sis.referencing.datum.DefaultImageDatum;
 import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.xml.Namespaces;
 
@@ -45,7 +44,6 @@ import static 
org.opengis.test.Assertions.assertAxisDirectionsEqual;
  *
  * @author  Martin Desruisseaux (Geomatys)
  */
-@SuppressWarnings("removal")
 public final class DefaultImageCRSTest extends TestCase {
     /**
      * Creates a new test case.
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Geometries.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Geometries.java
index ecb0887370..9e9a0bbc99 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Geometries.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Geometries.java
@@ -161,7 +161,7 @@ public final class Geometries {
                 final CoordinateSystemAxis axis = new 
DefaultCoordinateSystemAxis(Collections.singletonMap("name", name + i + "Axis"),
                         name, AxisDirection.UNSPECIFIED, Units.UNITY);
                 final CoordinateSystem cs = new 
DefaultLinearCS(Collections.singletonMap("name", name + i + "CS"), axis);
-                DefaultEngineeringCRS crs = new 
DefaultEngineeringCRS(Collections.singletonMap("name", name), datum, cs);
+                DefaultEngineeringCRS crs = new 
DefaultEngineeringCRS(Collections.singletonMap("name", name), datum, null, cs);
                 crss.add(crs);
             }
             return CRS.compound(crss.toArray(new 
CoordinateReferenceSystem[crss.size()]));
@@ -214,7 +214,7 @@ public final class Geometries {
                     name("Cartesian2d"),
                     axis1, axis2);
 
-        return new DefaultEngineeringCRS(name("Cartesian2d"), DATUM, cs);
+        return new DefaultEngineeringCRS(name("Cartesian2d"), DATUM, null, cs);
     }
 
     public static CoordinateReferenceSystem 
createCartesianCRS3D(CoordinateSystemAxis axis1, CoordinateSystemAxis axis2, 
CoordinateSystemAxis axis3) {
@@ -222,7 +222,7 @@ public final class Geometries {
                     name("Cartesian3d"),
                     axis1, axis2, axis3);
 
-        return new DefaultEngineeringCRS(name("Cartesian3d"), DATUM, cs);
+        return new DefaultEngineeringCRS(name("Cartesian3d"), DATUM, null, cs);
     }
 
     /**


Reply via email to