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 678e7ee Move the check for identity case into
Matrices.createTransform(…). It allows the fix to apply to a wider range of
cases.
678e7ee is described below
commit 678e7eeafa1d50855050654214ebfeeca3a88767
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Fri Jan 11 14:49:57 2019 +0100
Move the check for identity case into Matrices.createTransform(…). It
allows the fix to apply to a wider range of cases.
---
.../java/org/apache/sis/referencing/cs/CoordinateSystems.java | 3 ---
.../org/apache/sis/referencing/operation/matrix/Matrices.java | 10 +++++++++-
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
index 94f01e9..b8a00a3 100644
---
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
+++
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
@@ -281,9 +281,6 @@ public final class CoordinateSystems extends Static {
if (!Classes.implementSameInterfaces(sourceCS.getClass(),
targetCS.getClass(), CoordinateSystem.class)) {
throw new
IllegalArgumentException(Resources.format(Resources.Keys.IncompatibleCoordinateSystemTypes));
}
- if (sourceCS.equals(targetCS)) {
- return Matrices.createIdentity(sourceCS.getDimension() + 1);
- }
final AxisDirection[] srcAxes = getAxisDirections(sourceCS);
final AxisDirection[] dstAxes = getAxisDirections(targetCS);
final MatrixSIS matrix = Matrices.createTransform(srcAxes, dstAxes);
diff --git
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
index d931d8c..a66c03d 100644
---
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
+++
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
@@ -16,6 +16,7 @@
*/
package org.apache.sis.referencing.operation.matrix;
+import java.util.Arrays;
import java.util.Objects;
import org.opengis.geometry.Envelope;
import org.opengis.geometry.DirectPosition;
@@ -68,7 +69,7 @@ import
org.apache.sis.internal.referencing.ExtendedPrecisionMatrix;
* </ul>
*
* @author Martin Desruisseaux (IRD, Geomatys)
- * @version 0.8
+ * @version 1.0
*
* @see org.apache.sis.parameter.TensorParameters
*
@@ -438,6 +439,13 @@ public final class Matrices extends Static {
public static MatrixSIS createTransform(final AxisDirection[] srcAxes,
final AxisDirection[] dstAxes) {
ArgumentChecks.ensureNonNull("srcAxes", srcAxes);
ArgumentChecks.ensureNonNull("dstAxes", dstAxes);
+ if (Arrays.equals(srcAxes, dstAxes)) {
+ /*
+ * createTransform(…) may fail if the arrays contain two axes with
the same direction, for example
+ * AxisDirection.OTHER. This check prevents that failure for the
common case of an identity transform.
+ */
+ return Matrices.createIdentity(srcAxes.length + 1);
+ }
return createTransform(null, srcAxes, null, dstAxes, false);
}