This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new 5bfa0612ca Remove usage of `PlanarProjection`, `ConicProjection` and
`CylindricalProjection` sub-interfaces.
5bfa0612ca is described below
commit 5bfa0612ca40c0a431b16ca937f401fd62b812b4
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Wed Apr 17 11:36:30 2024 +0200
Remove usage of `PlanarProjection`, `ConicProjection` and
`CylindricalProjection` sub-interfaces.
https://issues.apache.org/jira/browse/SIS-597
---
.../operation/AbstractCoordinateOperation.java | 3 -
.../operation/DefaultConicProjection.java | 108 ---------------------
.../referencing/operation/DefaultConversion.java | 36 +++----
.../DefaultCoordinateOperationFactory.java | 15 +--
.../operation/DefaultCylindricalProjection.java | 108 ---------------------
.../operation/DefaultOperationMethod.java | 5 +-
.../operation/DefaultPlanarProjection.java | 108 ---------------------
.../referencing/operation/DefaultProjection.java | 13 ++-
.../apache/sis/referencing/operation/SubTypes.java | 40 +-------
.../operation/provider/AbstractLambert.java | 3 +-
.../operation/provider/AbstractMercator.java | 3 +-
.../operation/provider/AbstractStereographic.java | 3 +-
.../operation/provider/AlbersEqualArea.java | 3 +-
.../provider/AzimuthalEquidistantSpherical.java | 3 +-
.../operation/provider/CassiniSoldner.java | 3 +-
.../operation/provider/Equirectangular.java | 4 +-
.../provider/LambertAzimuthalEqualArea.java | 3 +-
.../provider/LambertCylindricalEqualArea.java | 3 +-
.../LambertCylindricalEqualAreaSpherical.java | 3 +-
.../operation/provider/MapProjection.java | 9 +-
.../provider/ModifiedAzimuthalEquidistant.java | 3 +-
.../referencing/operation/provider/Mollweide.java | 3 +-
.../operation/provider/Orthographic.java | 3 +-
.../referencing/operation/provider/Polyconic.java | 3 +-
.../operation/provider/SatelliteTracking.java | 3 +-
.../referencing/operation/provider/Sinusoidal.java | 3 +-
.../referencing/factory/sql/EPSGFactoryTest.java | 3 +-
.../transform/OperationMethodSetTest.java | 52 +++++-----
.../report/CoordinateOperationMethods.java | 19 ++--
geoapi/snapshot | 2 +-
30 files changed, 82 insertions(+), 488 deletions(-)
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
index 75910575f1..9bd95fe8b8 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
@@ -439,9 +439,6 @@ check: for (int isTarget=0; ; isTarget++) { //
0 == source check; 1
* {@link org.opengis.referencing.operation.Transformation},
* {@link org.opengis.referencing.operation.Conversion},
* {@link org.opengis.referencing.operation.Projection},
- * {@link org.opengis.referencing.operation.CylindricalProjection},
- * {@link org.opengis.referencing.operation.ConicProjection},
- * {@link org.opengis.referencing.operation.PlanarProjection},
* {@link org.opengis.referencing.operation.PassThroughOperation} or
* {@link org.opengis.referencing.operation.ConcatenatedOperation},
* then this method delegates to the {@code castOrCopy(…)} method of
the corresponding SIS subclass.
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConicProjection.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConicProjection.java
deleted file mode 100644
index a801bd6094..0000000000
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConicProjection.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sis.referencing.operation;
-
-import java.util.Map;
-import jakarta.xml.bind.annotation.XmlTransient;
-import org.opengis.util.FactoryException;
-import org.opengis.referencing.operation.Conversion;
-import org.opengis.referencing.operation.ConicProjection;
-import org.opengis.referencing.operation.OperationMethod;
-import org.opengis.referencing.operation.MathTransform;
-import org.opengis.referencing.operation.MathTransformFactory;
-import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.crs.GeographicCRS;
-import org.opengis.referencing.crs.ProjectedCRS;
-
-
-/**
- * Conical map projections.
- *
- * @author Martin Desruisseaux (IRD, Geomatys)
- *
- * @see org.apache.sis.referencing.crs.DefaultProjectedCRS
- * @see <a href="https://mathworld.wolfram.com/ConicProjection.html">Conic
projection on MathWorld</a>
- */
-@XmlTransient
-final class DefaultConicProjection extends DefaultProjection implements
ConicProjection {
- /**
- * Serial number for inter-operability with different versions.
- */
- private static final long serialVersionUID = -8717453834398763963L;
-
- /**
- * Creates a projection from the given properties.
- *
- * @param properties the properties to be given to the identified object.
- * @param sourceCRS the source CRS.
- * @param targetCRS the target CRS.
- * @param method the coordinate operation method.
- * @param transform transform from positions in the source CRS to
positions in the target CRS.
- */
- public DefaultConicProjection(final Map<String,?> properties,
- final GeographicCRS sourceCRS,
- final ProjectedCRS targetCRS,
- final OperationMethod method,
- final MathTransform transform)
- {
- super(properties, sourceCRS, targetCRS, method, transform);
- }
-
- /**
- * Creates a new projection with the same values as the specified one,
together with the
- * specified source and target CRS. While the source conversion can be an
arbitrary one, it
- * is typically a defining conversion.
- *
- * @param definition the defining conversion.
- * @param sourceCRS the source CRS.
- * @param targetCRS the target CRS.
- * @param factory the factory to use for creating a transform from
the parameters or for performing axis changes.
- * @param actual an array of length 1 where to store the actual
operation method used by the math transform factory.
- */
- DefaultConicProjection(final Conversion definition,
- final CoordinateReferenceSystem sourceCRS,
- final CoordinateReferenceSystem targetCRS,
- final MathTransformFactory factory,
- final OperationMethod[] actual) throws
FactoryException
- {
- super(definition, sourceCRS, targetCRS, factory, actual);
- }
-
- /**
- * Creates a new coordinate operation with the same values as the
specified one.
- * This copy constructor provides a way to convert an arbitrary
implementation into a SIS one
- * or a user-defined one (as a subclass), usually in order to leverage
some implementation-specific API.
- *
- * <p>This constructor performs a shallow copy, i.e. the properties are
not cloned.</p>
- *
- * @param operation the coordinate operation to copy.
- */
- protected DefaultConicProjection(final ConicProjection operation) {
- super(operation);
- }
-
- /**
- * Returns the GeoAPI interface implemented by this class.
- * The SIS implementation returns {@code ConicProjection.class}.
- *
- * @return {@code ConicProjection.class}.
- */
- @Override
- public Class<? extends ConicProjection> getInterface() {
- return ConicProjection.class;
- }
-}
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
index 6ec4bc2908..4c383dff45 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
@@ -23,6 +23,7 @@ import javax.measure.IncommensurableException;
import org.opengis.util.FactoryException;
import org.opengis.parameter.ParameterValueGroup;
import org.opengis.referencing.operation.Conversion;
+import org.opengis.referencing.operation.Projection;
import org.opengis.referencing.operation.OperationMethod;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.MathTransformFactory;
@@ -65,9 +66,7 @@ import org.apache.sis.util.resources.Errors;
* <p>After the source and target CRS become known, we can invoke the {@link
#specialize specialize(…)} method for
* {@linkplain DefaultMathTransformFactory#createParameterizedTransform
creating a math transform from the parameters},
* instantiate a new {@code Conversion} of a more specific type
- * ({@link org.opengis.referencing.operation.ConicProjection},
- * {@link org.opengis.referencing.operation.CylindricalProjection} or
- * {@link org.opengis.referencing.operation.PlanarProjection}) if possible,
+ * ({@link org.opengis.referencing.operation.Projection}) if relevant,
* and assign the source and target CRS to it.</p>
*
* <h2>Immutability and thread safety</h2>
@@ -319,15 +318,6 @@ public class DefaultConversion extends
AbstractSingleOperation implements Conver
*
* <ul>
* <li>If the given object is {@code null}, then this method returns
{@code null}.</li>
- * <li>Otherwise if the given object is an instance of
- * {@link org.opengis.referencing.operation.Conversion},
- * {@link org.opengis.referencing.operation.Projection},
- * {@link org.opengis.referencing.operation.CylindricalProjection},
- * {@link org.opengis.referencing.operation.ConicProjection} or
- * {@link org.opengis.referencing.operation.PlanarProjection},
- * then this method delegates to the {@code castOrCopy(…)} method of
the corresponding SIS subclass.
- * Note that if the given object implements more than one of the
above-cited interfaces,
- * then the {@code castOrCopy(…)} method to be used is
unspecified.</li>
* <li>Otherwise if the given object is already an instance of
* {@code DefaultConversion}, then it is returned unchanged.</li>
* <li>Otherwise a new {@code DefaultConversion} instance is created
using the
@@ -341,13 +331,19 @@ public class DefaultConversion extends
AbstractSingleOperation implements Conver
* given object itself), or {@code null} if the argument was null.
*/
public static DefaultConversion castOrCopy(final Conversion object) {
- return SubTypes.forConversion(object);
+ if (object == null || object instanceof DefaultConversion) {
+ return (DefaultConversion) object;
+ }
+ if (object instanceof Projection) {
+ return new DefaultProjection((Projection) object);
+ } else {
+ return new DefaultConversion(object);
+ }
}
/**
* Returns the GeoAPI interface implemented by this class.
* The default implementation returns {@code Conversion.class}.
- * Subclasses implementing a more specific GeoAPI interface shall override
this method.
*
* @return the conversion interface implemented by this class.
*/
@@ -357,7 +353,7 @@ public class DefaultConversion extends
AbstractSingleOperation implements Conver
}
/**
- * Returns a specialization of this conversion with a more specific type,
source and target CRS.
+ * Returns a specialization of this conversion with a more specific type
and non-null <abbr>CRS</abbr>s.
* This {@code specialize(…)} method is typically invoked on {@linkplain
#DefaultConversion(Map,
* OperationMethod, MathTransform, ParameterValueGroup) defining
conversion} instances,
* when more information become available about the conversion to create.
@@ -366,14 +362,12 @@ public class DefaultConversion extends
AbstractSingleOperation implements Conver
* <ul>
* <li><code>{@linkplain
org.opengis.referencing.operation.Conversion}.class</code></li>
* <li><code>{@linkplain
org.opengis.referencing.operation.Projection}.class</code></li>
- * <li><code>{@linkplain
org.opengis.referencing.operation.CylindricalProjection}.class</code></li>
- * <li><code>{@linkplain
org.opengis.referencing.operation.ConicProjection}.class</code></li>
- * <li><code>{@linkplain
org.opengis.referencing.operation.PlanarProjection}.class</code></li>
* </ul>
*
* This {@code specialize(…)} method returns a conversion which implement
at least the given {@code baseType}
- * interface, but may also implement a more specific GeoAPI interface if
{@code specialize(…)} has been able
- * to infer the type from the {@linkplain #getMethod() operation method}.
+ * interface, but may also implement a more specific interface if {@code
specialize(…)} has been able to infer
+ * the type from the {@linkplain #getMethod() operation method}.
+ * The list of interfaces supported by this method may change in any
version of Apache SIS.
*
* @param <T> compile-time type of the {@code baseType} argument.
* @param baseType the base GeoAPI interface to be implemented by the
conversion to return.
@@ -381,7 +375,7 @@ public class DefaultConversion extends
AbstractSingleOperation implements Conver
* @param targetCRS the target CRS.
* @param factory the factory to use for creating a transform from the
parameters or for performing axis changes,
* or {@code null} for the default factory.
- * @return the conversion of the given type between the given CRS.
+ * @return conversion of the given type which declares the given
<abbr>CRS</abbr>s as the source and target.
* @throws ClassCastException if a contradiction is found between the
given {@code baseType},
* the defining {@linkplain DefaultConversion#getInterface()
conversion type} and
* the {@linkplain DefaultOperationMethod#getOperationType()
method operation type}.
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactory.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactory.java
index b4f4c42b55..1903225188 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactory.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactory.java
@@ -456,8 +456,7 @@ next: for (int i=components.size(); --i >= 0;) {
/**
* Creates a transformation or conversion from the given properties.
* This method infers by itself if the operation to create is a
- * {@link Transformation}, a {@link Conversion} or a {@link Projection}
sub-type
- * ({@link CylindricalProjection}, {@link ConicProjection} or {@link
PlanarProjection})
+ * {@link Transformation}, a {@link Conversion} or a {@link Projection}
* using the {@linkplain DefaultOperationMethod#getOperationType()
information provided by the given method}.
*
* <p>The properties given in argument follow the same rules as for the
@@ -593,17 +592,7 @@ next: for (int i=components.size(); --i >= 0;) {
throw new IllegalArgumentException(Errors.format(
Errors.Keys.ForbiddenAttribute_2, "interpolationCRS",
baseType));
}
- final GeographicCRS baseCRS = (GeographicCRS) sourceCRS;
- final ProjectedCRS crs = (ProjectedCRS) targetCRS;
- if (CylindricalProjection.class.isAssignableFrom(baseType)) {
- op = new DefaultCylindricalProjection(properties, baseCRS,
crs, method, transform);
- } else if (ConicProjection.class.isAssignableFrom(baseType)) {
- op = new DefaultConicProjection(properties, baseCRS, crs,
method, transform);
- } else if (PlanarProjection.class.isAssignableFrom(baseType)) {
- op = new DefaultPlanarProjection(properties, baseCRS, crs,
method, transform);
- } else {
- op = new DefaultProjection(properties, baseCRS, crs, method,
transform);
- }
+ op = new DefaultProjection(properties, (GeographicCRS) sourceCRS,
(ProjectedCRS) targetCRS, method, transform);
} else if (Conversion.class.isAssignableFrom(baseType)) {
op = new DefaultConversion(properties, sourceCRS, targetCRS,
interpolationCRS, method, transform);
} else { // See above comment about this last-resort fallback.
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCylindricalProjection.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCylindricalProjection.java
deleted file mode 100644
index cd5de1372f..0000000000
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultCylindricalProjection.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sis.referencing.operation;
-
-import java.util.Map;
-import jakarta.xml.bind.annotation.XmlTransient;
-import org.opengis.util.FactoryException;
-import org.opengis.referencing.operation.Conversion;
-import org.opengis.referencing.operation.CylindricalProjection;
-import org.opengis.referencing.operation.OperationMethod;
-import org.opengis.referencing.operation.MathTransform;
-import org.opengis.referencing.operation.MathTransformFactory;
-import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.crs.GeographicCRS;
-import org.opengis.referencing.crs.ProjectedCRS;
-
-
-/**
- * Cylindrical map projections.
- *
- * @author Martin Desruisseaux (IRD, Geomatys)
- *
- * @see org.apache.sis.referencing.crs.DefaultProjectedCRS
- * @see <a
href="https://mathworld.wolfram.com/CylindricalProjection.html">Cylindrical
projection on MathWorld</a>
- */
-@XmlTransient
-final class DefaultCylindricalProjection extends DefaultProjection implements
CylindricalProjection {
- /**
- * Serial number for inter-operability with different versions.
- */
- private static final long serialVersionUID = -969486613826553580L;
-
- /**
- * Creates a projection from the given properties.
- *
- * @param properties the properties to be given to the identified object.
- * @param sourceCRS the source CRS.
- * @param targetCRS the target CRS.
- * @param method the coordinate operation method.
- * @param transform transform from positions in the source CRS to
positions in the target CRS.
- */
- public DefaultCylindricalProjection(final Map<String,?> properties,
- final GeographicCRS sourceCRS,
- final ProjectedCRS targetCRS,
- final OperationMethod method,
- final MathTransform transform)
- {
- super(properties, sourceCRS, targetCRS, method, transform);
- }
-
- /**
- * Creates a new projection with the same values as the specified one,
together with the
- * specified source and target CRS. While the source conversion can be an
arbitrary one, it
- * is typically a defining conversion.
- *
- * @param definition the defining conversion.
- * @param sourceCRS the source CRS.
- * @param targetCRS the target CRS.
- * @param factory the factory to use for creating a transform from
the parameters or for performing axis changes.
- * @param actual an array of length 1 where to store the actual
operation method used by the math transform factory.
- */
- DefaultCylindricalProjection(final Conversion definition,
- final CoordinateReferenceSystem sourceCRS,
- final CoordinateReferenceSystem targetCRS,
- final MathTransformFactory factory,
- final OperationMethod[] actual) throws
FactoryException
- {
- super(definition, sourceCRS, targetCRS, factory, actual);
- }
-
- /**
- * Creates a new coordinate operation with the same values as the
specified one.
- * This copy constructor provides a way to convert an arbitrary
implementation into a SIS one
- * or a user-defined one (as a subclass), usually in order to leverage
some implementation-specific API.
- *
- * <p>This constructor performs a shallow copy, i.e. the properties are
not cloned.</p>
- *
- * @param operation the coordinate operation to copy.
- */
- protected DefaultCylindricalProjection(final CylindricalProjection
operation) {
- super(operation);
- }
-
- /**
- * Returns the GeoAPI interface implemented by this class.
- * The SIS implementation returns {@code CylindricalProjection.class}.
- *
- * @return {@code CylindricalProjection.class}.
- */
- @Override
- public Class<? extends CylindricalProjection> getInterface() {
- return CylindricalProjection.class;
- }
-}
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
index f8f1f15bf3..60ace525eb 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
@@ -343,10 +343,7 @@ public class DefaultOperationMethod extends
AbstractIdentifiedObject implements
* point arithmetic (including rounding errors) and the approximations
implied by finite series expansions.</li>
* <li>{@link org.opengis.referencing.operation.Projection}
* if the coordinate operation is a conversion (as defined above)
converting geodetic latitudes and longitudes
- * to plane (map) coordinates. This type can optionally be refined
with one of the
- * {@link org.opengis.referencing.operation.CylindricalProjection},
- * {@link org.opengis.referencing.operation.ConicProjection} or
- * {@link org.opengis.referencing.operation.PlanarProjection}
subtypes.</li>
+ * to plane (map) coordinates.</li>
* </ul>
*
* In case of doubt, {@code getOperationType()} can conservatively return
the base type.
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultPlanarProjection.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultPlanarProjection.java
deleted file mode 100644
index f8abdb043a..0000000000
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultPlanarProjection.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sis.referencing.operation;
-
-import java.util.Map;
-import jakarta.xml.bind.annotation.XmlTransient;
-import org.opengis.util.FactoryException;
-import org.opengis.referencing.operation.Conversion;
-import org.opengis.referencing.operation.PlanarProjection;
-import org.opengis.referencing.operation.OperationMethod;
-import org.opengis.referencing.operation.MathTransform;
-import org.opengis.referencing.operation.MathTransformFactory;
-import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.crs.GeographicCRS;
-import org.opengis.referencing.crs.ProjectedCRS;
-
-
-/**
- * Azimuthal (or planar) map projections.
- *
- * @author Martin Desruisseaux (IRD, Geomatys)
- *
- * @see org.apache.sis.referencing.crs.DefaultProjectedCRS
- * @see <a
href="https://mathworld.wolfram.com/AzimuthalProjection.html">Azimuthal
projection on MathWorld</a>
- */
-@XmlTransient
-final class DefaultPlanarProjection extends DefaultProjection implements
PlanarProjection {
- /**
- * Serial number for inter-operability with different versions.
- */
- private static final long serialVersionUID = 8171256287775067736L;
-
- /**
- * Creates a projection from the given properties.
- *
- * @param properties the properties to be given to the identified object.
- * @param sourceCRS the source CRS.
- * @param targetCRS the target CRS.
- * @param method the coordinate operation method.
- * @param transform transform from positions in the source CRS to
positions in the target CRS.
- */
- public DefaultPlanarProjection(final Map<String,?> properties,
- final GeographicCRS sourceCRS,
- final ProjectedCRS targetCRS,
- final OperationMethod method,
- final MathTransform transform)
- {
- super(properties, sourceCRS, targetCRS, method, transform);
- }
-
- /**
- * Creates a new projection with the same values as the specified one,
together with the
- * specified source and target CRS. While the source conversion can be an
arbitrary one, it
- * is typically a defining conversion.
- *
- * @param definition the defining conversion.
- * @param sourceCRS the source CRS.
- * @param targetCRS the target CRS.
- * @param factory the factory to use for creating a transform from
the parameters or for performing axis changes.
- * @param actual an array of length 1 where to store the actual
operation method used by the math transform factory.
- */
- DefaultPlanarProjection(final Conversion definition,
- final CoordinateReferenceSystem sourceCRS,
- final CoordinateReferenceSystem targetCRS,
- final MathTransformFactory factory,
- final OperationMethod[] actual) throws
FactoryException
- {
- super(definition, sourceCRS, targetCRS, factory, actual);
- }
-
- /**
- * Creates a new coordinate operation with the same values as the
specified one.
- * This copy constructor provides a way to convert an arbitrary
implementation into a SIS one
- * or a user-defined one (as a subclass), usually in order to leverage
some implementation-specific API.
- *
- * <p>This constructor performs a shallow copy, i.e. the properties are
not cloned.</p>
- *
- * @param operation the coordinate operation to copy.
- */
- protected DefaultPlanarProjection(final PlanarProjection operation) {
- super(operation);
- }
-
- /**
- * Returns the GeoAPI interface implemented by this class.
- * The SIS implementation returns {@code PlanarProjection.class}.
- *
- * @return {@code PlanarProjection.class}.
- */
- @Override
- public Class<? extends PlanarProjection> getInterface() {
- return PlanarProjection.class;
- }
-}
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultProjection.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultProjection.java
index 337f5591b6..fe4ab2a377 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultProjection.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultProjection.java
@@ -51,7 +51,7 @@ import org.apache.sis.util.ArgumentChecks;
* @see org.apache.sis.referencing.crs.DefaultProjectedCRS
*/
@XmlTransient
-class DefaultProjection extends DefaultConversion implements Projection {
+final class DefaultProjection extends DefaultConversion implements Projection {
/**
* Serial number for inter-operability with different versions.
*/
@@ -77,14 +77,15 @@ class DefaultProjection extends DefaultConversion
implements Projection {
/**
* Creates a new projection with the same values as the specified one,
together with the
- * specified source and target CRS. While the source conversion can be an
arbitrary one, it
- * is typically a defining conversion.
+ * specified source and target CRS. While the source conversion can be an
arbitrary one,
+ * it is typically a defining conversion.
*
* @param definition the defining conversion.
* @param sourceCRS the source CRS.
* @param targetCRS the target CRS.
* @param factory the factory to use for creating a transform from
the parameters or for performing axis changes.
* @param actual an array of length 1 where to store the actual
operation method used by the math transform factory.
+ * @throws IllegalArgumentException if the source or targe CRS is not of
the requested type.
*/
DefaultProjection(final Conversion definition,
final CoordinateReferenceSystem sourceCRS,
@@ -99,8 +100,8 @@ class DefaultProjection extends DefaultConversion implements
Projection {
/**
* Creates a new coordinate operation with the same values as the
specified one.
- * This copy constructor provides a way to convert an arbitrary
implementation into a SIS one
- * or a user-defined one (as a subclass), usually in order to leverage
some implementation-specific API.
+ * This copy constructor provides a way to convert an arbitrary
implementation
+ * into a SIS one, usually in order to leverage some
implementation-specific API.
*
* <p>This constructor performs a shallow copy, i.e. the properties are
not cloned.</p>
*
@@ -112,8 +113,6 @@ class DefaultProjection extends DefaultConversion
implements Projection {
/**
* Returns the GeoAPI interface implemented by this class.
- * The default implementation returns {@code Projection.class}.
- * Subclasses implementing a more specific GeoAPI interface shall override
this method.
*
* @return the conversion interface implemented by this class.
*/
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubTypes.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubTypes.java
index 2bcfa060b7..c17d8883d6 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubTypes.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubTypes.java
@@ -53,7 +53,7 @@ final class SubTypes {
return DefaultTransformation.castOrCopy((Transformation) object);
}
if (object instanceof Conversion) {
- return forConversion((Conversion) object);
+ return DefaultConversion.castOrCopy((Conversion) object);
}
if (object instanceof PassThroughOperation) {
return
DefaultPassThroughOperation.castOrCopy((PassThroughOperation) object);
@@ -77,38 +77,8 @@ final class SubTypes {
return new AbstractCoordinateOperation(object);
}
- /**
- * Returns a SIS implementation for the given conversion.
- *
- * @see DefaultConversion#castOrCopy(Conversion)
- */
- static DefaultConversion forConversion(final Conversion object) {
- if (object instanceof CylindricalProjection) {
- return (object instanceof DefaultCylindricalProjection) ?
((DefaultCylindricalProjection) object)
- : new DefaultCylindricalProjection((CylindricalProjection)
object);
- }
- if (object instanceof ConicProjection) {
- return (object instanceof DefaultConicProjection) ?
((DefaultConicProjection) object)
- : new DefaultConicProjection((ConicProjection) object);
- }
- if (object instanceof PlanarProjection) {
- return (object instanceof DefaultPlanarProjection) ?
((DefaultPlanarProjection) object)
- : new DefaultPlanarProjection((PlanarProjection) object);
- }
- if (object instanceof Projection) {
- return (object instanceof DefaultProjection) ?
((DefaultProjection) object)
- : new DefaultProjection((Projection) object);
- }
- if (object == null || object instanceof DefaultConversion) {
- return (DefaultConversion) object;
- }
- return new DefaultConversion(object);
- }
-
/**
* Returns a conversion from the specified defining conversion.
- * The new conversion will be a more specific type like a {@linkplain
PlanarProjection planar},
- * {@linkplain CylindricalProjection cylindrical} or {@linkplain
ConicProjection conic projection}.
* The returned conversion will implement at least the {@code baseType}
interface, but may implement
* a more specific GeoAPI interface if this method has been able to infer
the type from the
* {@code conversion} argument.
@@ -153,13 +123,7 @@ final class SubTypes {
boolean tryAgain;
do {
tryAgain = false;
- if (CylindricalProjection.class.isAssignableFrom(type)) {
- conversion = new DefaultCylindricalProjection(definition,
sourceCRS, targetCRS, factory, actual);
- } else if (ConicProjection.class.isAssignableFrom(type)) {
- conversion = new DefaultConicProjection(definition,
sourceCRS, targetCRS, factory, actual);
- } else if (PlanarProjection.class.isAssignableFrom(type)) {
- conversion = new DefaultPlanarProjection(definition,
sourceCRS, targetCRS, factory, actual);
- } else if (Projection.class.isAssignableFrom(type)) {
+ if (Projection.class.isAssignableFrom(type)) {
conversion = new DefaultProjection(definition, sourceCRS,
targetCRS, factory, actual);
} else {
conversion = new DefaultConversion(definition, sourceCRS,
targetCRS, factory, actual);
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractLambert.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractLambert.java
index 7415f3b168..cf1d00d4c6 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractLambert.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractLambert.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.ConicProjection;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.referencing.operation.projection.LambertConicConformal;
import org.apache.sis.referencing.operation.projection.NormalizedProjection;
@@ -75,7 +74,7 @@ class AbstractLambert extends MapProjection {
* For subclass constructors only.
*/
AbstractLambert(final ParameterDescriptorGroup parameters) {
- super(ConicProjection.class, parameters);
+ super(parameters);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractMercator.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractMercator.java
index aaf5761375..8f504819aa 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractMercator.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractMercator.java
@@ -21,7 +21,6 @@ import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
import org.opengis.parameter.GeneralParameterDescriptor;
-import org.opengis.referencing.operation.CylindricalProjection;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.referencing.operation.projection.Mercator;
import org.apache.sis.referencing.operation.projection.NormalizedProjection;
@@ -94,7 +93,7 @@ class AbstractMercator extends MapProjection {
* For subclass constructors only.
*/
AbstractMercator(final ParameterDescriptorGroup parameters) {
- super(CylindricalProjection.class, parameters);
+ super(parameters);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractStereographic.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractStereographic.java
index a5117e7b7d..1d2acc3ff5 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractStereographic.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AbstractStereographic.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.PlanarProjection;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.referencing.operation.projection.NormalizedProjection;
import org.apache.sis.referencing.operation.projection.PolarStereographic;
@@ -75,7 +74,7 @@ abstract class AbstractStereographic extends MapProjection {
* For subclass constructors only.
*/
AbstractStereographic(final ParameterDescriptorGroup parameters) {
- super(PlanarProjection.class, parameters);
+ super(parameters);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AlbersEqualArea.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AlbersEqualArea.java
index aaf3a764e5..124b227dd5 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AlbersEqualArea.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AlbersEqualArea.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.ConicProjection;
import org.apache.sis.metadata.iso.citation.Citations;
import org.apache.sis.parameter.ParameterBuilder;
import org.apache.sis.parameter.Parameters;
@@ -246,7 +245,7 @@ public final class AlbersEqualArea extends MapProjection {
* Constructs a new provider.
*/
public AlbersEqualArea() {
- super(ConicProjection.class, PARAMETERS);
+ super(PARAMETERS);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AzimuthalEquidistantSpherical.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AzimuthalEquidistantSpherical.java
index 1f332c8b47..a6983e18cd 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AzimuthalEquidistantSpherical.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/AzimuthalEquidistantSpherical.java
@@ -18,7 +18,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.PlanarProjection;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.referencing.operation.projection.NormalizedProjection;
@@ -56,7 +55,7 @@ public final class AzimuthalEquidistantSpherical extends
MapProjection {
* Constructs a new provider.
*/
public AzimuthalEquidistantSpherical() {
- super(PlanarProjection.class, PARAMETERS);
+ super(PARAMETERS);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/CassiniSoldner.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/CassiniSoldner.java
index 536610fd2e..e65cc74d51 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/CassiniSoldner.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/CassiniSoldner.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.Projection;
import org.apache.sis.metadata.iso.citation.Citations;
import org.apache.sis.referencing.operation.projection.NormalizedProjection;
import org.apache.sis.parameter.Parameters;
@@ -165,7 +164,7 @@ public class CassiniSoldner extends MapProjection {
* Constructs a provider from a set of parameters.
*/
CassiniSoldner(final ParameterDescriptorGroup parameters) {
- super(Projection.class, parameters);
+ super(parameters);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Equirectangular.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Equirectangular.java
index bea52f75b7..46ed35bf62 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Equirectangular.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Equirectangular.java
@@ -25,7 +25,7 @@ import org.opengis.parameter.ParameterDescriptorGroup;
import org.opengis.parameter.ParameterValueGroup;
import org.opengis.referencing.cs.CartesianCS;
import org.opengis.referencing.cs.EllipsoidalCS;
-import org.opengis.referencing.operation.CylindricalProjection;
+import org.opengis.referencing.operation.Projection;
import org.opengis.referencing.operation.MathTransform;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.parameter.ParameterBuilder;
@@ -270,7 +270,7 @@ public final class Equirectangular extends AbstractProvider
{
* @see MapProjection#MapProjection(Class, ParameterDescriptorGroup)
*/
public Equirectangular() {
- super(CylindricalProjection.class, PARAMETERS,
+ super(Projection.class, PARAMETERS,
EllipsoidalCS.class, true,
CartesianCS.class, false,
(byte) 2);
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertAzimuthalEqualArea.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertAzimuthalEqualArea.java
index d16276e27d..950fefc9e4 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertAzimuthalEqualArea.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertAzimuthalEqualArea.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.PlanarProjection;
import org.apache.sis.metadata.iso.citation.Citations;
import org.apache.sis.parameter.ParameterBuilder;
import org.apache.sis.parameter.Parameters;
@@ -157,7 +156,7 @@ public class LambertAzimuthalEqualArea extends
MapProjection {
* @param parameters the set of parameters (never {@code null}).
*/
LambertAzimuthalEqualArea(final ParameterDescriptorGroup parameters) {
- super(PlanarProjection.class, parameters);
+ super(parameters);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertCylindricalEqualArea.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertCylindricalEqualArea.java
index 11060b8207..f56aee9761 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertCylindricalEqualArea.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertCylindricalEqualArea.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.CylindricalProjection;
import org.apache.sis.metadata.iso.citation.Citations;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.referencing.operation.projection.NormalizedProjection;
@@ -160,7 +159,7 @@ public final class LambertCylindricalEqualArea extends
MapProjection {
* Constructs a new provider.
*/
public LambertCylindricalEqualArea() {
- super(CylindricalProjection.class, PARAMETERS);
+ super(PARAMETERS);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertCylindricalEqualAreaSpherical.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertCylindricalEqualAreaSpherical.java
index 7610dd0d4c..b277794c34 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertCylindricalEqualAreaSpherical.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/LambertCylindricalEqualAreaSpherical.java
@@ -18,7 +18,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.CylindricalProjection;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.referencing.operation.projection.NormalizedProjection;
import org.apache.sis.referencing.operation.projection.CylindricalEqualArea;
@@ -61,7 +60,7 @@ public final class LambertCylindricalEqualAreaSpherical
extends MapProjection {
* Constructs a new provider.
*/
public LambertCylindricalEqualAreaSpherical() {
- super(CylindricalProjection.class, PARAMETERS);
+ super(PARAMETERS);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/MapProjection.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/MapProjection.java
index 5d8af20bed..09ef70ddd3 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/MapProjection.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/MapProjection.java
@@ -170,13 +170,10 @@ public abstract class MapProjection extends
AbstractProvider {
* Constructs a math transform provider from a set of parameters. The
provider
* {@linkplain #getIdentifiers() identifiers} will be the same as the
parameter ones.
*
- * @param operationType interface of the {@code CoordinateOperation}
instances that use this projection.
- * @param parameters the set of parameters (never {@code null}).
+ * @param parameters the set of parameters (never {@code null}).
*/
- protected MapProjection(final Class<? extends Projection> operationType,
- final ParameterDescriptorGroup parameters)
- {
- super(operationType, parameters,
+ protected MapProjection(final ParameterDescriptorGroup parameters) {
+ super(Projection.class, parameters,
EllipsoidalCS.class, true,
CartesianCS.class, false,
(byte) 2);
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/ModifiedAzimuthalEquidistant.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/ModifiedAzimuthalEquidistant.java
index 4646a561f2..7b06e0f82c 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/ModifiedAzimuthalEquidistant.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/ModifiedAzimuthalEquidistant.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.PlanarProjection;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.parameter.ParameterBuilder;
import org.apache.sis.metadata.iso.citation.Citations;
@@ -151,7 +150,7 @@ public final class ModifiedAzimuthalEquidistant extends
MapProjection {
* Constructs a new provider.
*/
public ModifiedAzimuthalEquidistant() {
- super(PlanarProjection.class, PARAMETERS);
+ super(PARAMETERS);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Mollweide.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Mollweide.java
index 6fd95c4b2a..4d790853ac 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Mollweide.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Mollweide.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.Projection;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.metadata.iso.citation.Citations;
import org.apache.sis.referencing.operation.projection.NormalizedProjection;
@@ -108,7 +107,7 @@ public final class Mollweide extends MapProjection {
* Constructs a new provider.
*/
public Mollweide() {
- super(Projection.class, PARAMETERS);
+ super(PARAMETERS);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Orthographic.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Orthographic.java
index e35285d713..ef812a8dc5 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Orthographic.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Orthographic.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.PlanarProjection;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.parameter.ParameterBuilder;
import org.apache.sis.metadata.iso.citation.Citations;
@@ -168,7 +167,7 @@ public class Orthographic extends MapProjection {
* Constructs a new provider.
*/
public Orthographic() {
- super(PlanarProjection.class, PARAMETERS);
+ super(PARAMETERS);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Polyconic.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Polyconic.java
index c94f5488cd..caad6a9cad 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Polyconic.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Polyconic.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.ConicProjection;
import org.apache.sis.metadata.iso.citation.Citations;
import org.apache.sis.parameter.Parameters;
import org.apache.sis.referencing.operation.projection.NormalizedProjection;
@@ -132,7 +131,7 @@ public class Polyconic extends MapProjection {
* Constructs a new provider.
*/
public Polyconic() {
- super(ConicProjection.class, PARAMETERS);
+ super(PARAMETERS);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/SatelliteTracking.java
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/SatelliteTracking.java
index fcd3267c89..8e904627b1 100644
---
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/SatelliteTracking.java
+++
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/SatelliteTracking.java
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.Projection;
import org.apache.sis.metadata.iso.citation.Citations;
import org.apache.sis.parameter.ParameterBuilder;
import org.apache.sis.parameter.Parameters;
@@ -177,7 +176,7 @@ public class SatelliteTracking extends MapProjection {
* Constructs a new provider.
*/
public SatelliteTracking() {
- super(Projection.class, PARAMETERS);
+ super(PARAMETERS);
}
/**
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 18674f2510..5ed40a2500 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
@@ -19,7 +19,6 @@ package org.apache.sis.referencing.operation.provider;
import jakarta.xml.bind.annotation.XmlTransient;
import org.opengis.parameter.ParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.Projection;
import org.apache.sis.metadata.iso.citation.Citations;
import org.apache.sis.util.privy.Constants;
import org.apache.sis.parameter.Parameters;
@@ -115,7 +114,7 @@ public class Sinusoidal extends MapProjection {
* @param parameters the set of parameters (never {@code null}).
*/
Sinusoidal(final ParameterDescriptorGroup parameters) {
- super(Projection.class, parameters);
+ super(parameters);
}
/**
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/factory/sql/EPSGFactoryTest.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/factory/sql/EPSGFactoryTest.java
index c754bc93af..a71ea42375 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/factory/sql/EPSGFactoryTest.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/factory/sql/EPSGFactoryTest.java
@@ -40,7 +40,6 @@ import org.opengis.referencing.datum.VerticalDatum;
import org.opengis.referencing.operation.Conversion;
import org.opengis.referencing.operation.Transformation;
import org.opengis.referencing.operation.CoordinateOperation;
-import org.opengis.referencing.operation.CylindricalProjection;
import org.opengis.referencing.operation.SingleOperation;
import org.opengis.referencing.operation.OperationMethod;
import org.opengis.referencing.operation.MathTransform;
@@ -753,7 +752,7 @@ public final class EPSGFactoryTest extends TestCaseWithLogs
{
assertNotSame(projection, operation,
"The defining conversion and the actual conversion should
differ " +
"because the actual conversion should have semi-axis length
values.");
- assertInstanceOf(CylindricalProjection.class, projection);
+ assertInstanceOf(Projection.class, projection);
assertNotNull(projection.getSourceCRS());
assertNotNull(projection.getTargetCRS());
assertNotNull(projection.getMathTransform());
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/transform/OperationMethodSetTest.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/transform/OperationMethodSetTest.java
index 587c3a6910..b6a07c54f1 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/transform/OperationMethodSetTest.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/transform/OperationMethodSetTest.java
@@ -21,11 +21,11 @@ import java.util.Map;
import java.util.Iterator;
import java.util.NoSuchElementException;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.opengis.referencing.operation.Projection;
-import org.opengis.referencing.operation.ConicProjection;
-import org.opengis.referencing.operation.PlanarProjection;
-import org.opengis.referencing.operation.CylindricalProjection;
+import org.opengis.referencing.operation.Conversion;
+import org.opengis.referencing.operation.Transformation;
import org.opengis.referencing.operation.OperationMethod;
+import org.opengis.referencing.operation.SingleOperation;
+import org.opengis.referencing.operation.PointMotionOperation;
import org.apache.sis.referencing.operation.DefaultOperationMethod;
import org.apache.sis.parameter.DefaultParameterDescriptorGroup;
import org.apache.sis.util.privy.UnmodifiableArrayList;
@@ -56,7 +56,7 @@ public final class OperationMethodSetTest extends TestCase {
* @return the operation method.
*/
@SuppressWarnings("serial")
- private static DefaultOperationMethod createMethod(final Class<? extends
Projection> type, final String method) {
+ private static DefaultOperationMethod createMethod(final Class<? extends
SingleOperation> type, String method) {
Map<String,?> properties = Map.of(DefaultOperationMethod.NAME_KEY,
method);
final ParameterDescriptorGroup parameters = new
DefaultParameterDescriptorGroup(properties, 1, 1);
/*
@@ -65,7 +65,7 @@ public final class OperationMethodSetTest extends TestCase {
*/
properties = Map.of(DefaultOperationMethod.NAME_KEY,
parameters.getName());
return new DefaultOperationMethod(properties, parameters) {
- @Override public Class<? extends Projection> getOperationType() {
+ @Override public Class<? extends SingleOperation>
getOperationType() {
return type;
}
};
@@ -78,7 +78,9 @@ public final class OperationMethodSetTest extends TestCase {
* @param type the type of coordinate operation for which to retain
methods.
* @param methods the {@link DefaultMathTransformFactory#methods} used
for fetching the initial methods.
*/
- private static OperationMethodSet create(final Class<? extends Projection>
type, final DefaultOperationMethod... methods) {
+ private static OperationMethodSet create(final Class<? extends
SingleOperation> type,
+ final DefaultOperationMethod...
methods)
+ {
@SuppressWarnings("serial")
final Iterable<DefaultOperationMethod> asList = new
UnmodifiableArrayList<DefaultOperationMethod>(methods) {
private boolean isIterationDone;
@@ -100,7 +102,7 @@ public final class OperationMethodSetTest extends TestCase {
*/
@Test
public void testEmpty() {
- assertEmpty(create(Projection.class));
+ assertEmpty(create(Conversion.class));
}
/**
@@ -120,18 +122,18 @@ public final class OperationMethodSetTest extends
TestCase {
*/
@Test
public void testMixedCases() {
- final DefaultOperationMethod merA =
createMethod(CylindricalProjection.class, "Mercator (variant A)");
- final DefaultOperationMethod merB =
createMethod(CylindricalProjection.class, "Mercator (variant B)");
- final DefaultOperationMethod merC =
createMethod(CylindricalProjection.class, "Mercator (variant C)");
- final DefaultOperationMethod dup =
createMethod(CylindricalProjection.class, "Mercator (variant B)");
- final DefaultOperationMethod lamb =
createMethod(ConicProjection.class, "Lambert");
- final DefaultOperationMethod[] methods = new DefaultOperationMethod[]
{merA, merB, merC, dup, lamb};
- final OperationMethodSet mercators =
create(CylindricalProjection.class, methods);
- final OperationMethodSet lambert = create(
ConicProjection.class, methods);
- final OperationMethodSet all = create(
Projection.class, methods);
+ final DefaultOperationMethod merA = createMethod(Conversion.class,
"Mercator (variant A)");
+ final DefaultOperationMethod merB = createMethod(Conversion.class,
"Mercator (variant B)");
+ final DefaultOperationMethod merC = createMethod(Conversion.class,
"Mercator (variant C)");
+ final DefaultOperationMethod dup = createMethod(Conversion.class,
"Mercator (variant B)");
+ final DefaultOperationMethod nad = createMethod(Transformation.class,
"NADCON");
+ final var methods = new DefaultOperationMethod[] {merA, merB, merC,
dup, nad};
+ final OperationMethodSet mercators = create(Conversion.class, methods);
+ final OperationMethodSet shifts = create(Transformation.class,
methods);
+ final OperationMethodSet all = create(SingleOperation.class,
methods);
/*
* Mercator case.
- * - Intentionally start the iteration without checking 'hasNext()'
- the iterator shall be robust to that.
+ * - Intentionally start the iteration without checking `hasNext()`
- the iterator shall be robust to that.
* - Intentionally start another iteration (indirectly) in the
middle of the first one.
*/
final Iterator<OperationMethod> iterator = mercators.iterator();
@@ -143,19 +145,19 @@ public final class OperationMethodSetTest extends
TestCase {
assertFalse (mercators.isEmpty());
assertEquals(3, mercators.size());
/*
- * Lambert case. Test twice since the two excecutions will take
different code paths.
+ * NADCON case. Test twice because the two excecutions will take
different code paths.
*/
- assertEquals(Set.of(lamb), lambert);
- assertEquals(Set.of(lamb), lambert);
+ assertEquals(Set.of(nad), shifts);
+ assertEquals(Set.of(nad), shifts);
/*
- * Test filtering: the test should not contain any conic projection.
+ * Test filtering: the test should not contain any point motion
operation.
*/
- assertEmpty(create(PlanarProjection.class, methods));
+ assertEmpty(create(PointMotionOperation.class, methods));
/*
* Opportunist tests.
*/
- assertFalse(lambert.containsAll(all));
- assertTrue(all.containsAll(lambert));
+ assertFalse(shifts.containsAll(all));
+ assertTrue(all.containsAll(shifts));
assertTrue(all.containsAll(mercators));
}
}
diff --git
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateOperationMethods.java
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateOperationMethods.java
index 5bea3d2068..d649065fe5 100644
---
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateOperationMethods.java
+++
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateOperationMethods.java
@@ -100,8 +100,7 @@ public class CoordinateOperationMethods extends
HTMLGenerator {
/**
* Values returned by {@link #category(OperationMethod)}.
*/
- private static final int CYLINDRICAL_PROJECTION = 1, CONIC_PROJECTION = 2,
- PLANAR_PROJECTION = 3, CONVERSION = 4, TRANSFORMATION = 5;
+ private static final int PROJECTION = 1, CONVERSION = 2, TRANSFORMATION =
3;
/**
* Parameters to default to the latitude of origin. We can hardly detect
those cases
@@ -193,11 +192,9 @@ public class CoordinateOperationMethods extends
HTMLGenerator {
closeTags(innerUL);
reopenTag("li");
switch (nc) {
- case CYLINDRICAL_PROJECTION: println("Cylindrical
projections"); break;
- case CONIC_PROJECTION: println("Conic projections");
break;
- case PLANAR_PROJECTION: println("Planar
projections"); break;
- case CONVERSION: println("Conversions");
break;
- case TRANSFORMATION: println("Tranformations");
break;
+ case PROJECTION: println("Projections"); break;
+ case CONVERSION: println("Conversions"); break;
+ case TRANSFORMATION: println("Tranformations"); break;
default: throw new AssertionError(category);
}
innerUL = openTag("ul");
@@ -525,11 +522,9 @@ public class CoordinateOperationMethods extends
HTMLGenerator {
*/
private static int category(final OperationMethod method) {
final Class<?> c = getOperationType((DefaultOperationMethod) method);
- if (CylindricalProjection.class.isAssignableFrom(c)) return
CYLINDRICAL_PROJECTION;
- if (ConicProjection .class.isAssignableFrom(c)) return
CONIC_PROJECTION;
- if (PlanarProjection .class.isAssignableFrom(c)) return
PLANAR_PROJECTION;
- if (Conversion .class.isAssignableFrom(c)) return CONVERSION;
- if (Transformation .class.isAssignableFrom(c)) return
TRANSFORMATION;
+ if (Projection .class.isAssignableFrom(c)) return PROJECTION;
+ if (Conversion .class.isAssignableFrom(c)) return CONVERSION;
+ if (Transformation.class.isAssignableFrom(c)) return TRANSFORMATION;
return 0;
}
diff --git a/geoapi/snapshot b/geoapi/snapshot
index ada952e12e..535e3e0647 160000
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@ -1 +1 @@
-Subproject commit ada952e12e675417e67d13b1a404b62a49b23546
+Subproject commit 535e3e0647e8849d4dead1ced6f622428b539ffd