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

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

commit f78936afd08b7e133ad461cf29f7d8b4acd85396
Merge: 06ab6fc6b6 47e1f0fbf9
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Wed Oct 28 13:15:27 2026 +0100

    Merge branch 'geoapi-4.0' into geoapi-3.1

 .../org/apache/sis/coverage/RegionOfInterest.java  |    8 +-
 .../coverage/grid/CoordinateOperationFinder.java   |    5 +-
 .../apache/sis/coverage/grid/DefaultEvaluator.java |    3 +-
 .../apache/sis/coverage/grid/DomainLinearizer.java |    3 +-
 .../sis/coverage/grid/GridCoverageProcessor.java   |    3 +-
 .../org/apache/sis/coverage/grid/GridGeometry.java |    5 +-
 .../sis/coverage/grid/ResampledGridCoverage.java   |    2 +-
 .../sis/geometry/wrapper/GeometryWrapper.java      |    7 +-
 .../apache/sis/geometry/wrapper/jts/Wrapper.java   |    7 +-
 .../apache/sis/profile/japan/netcdf/GCOM_C.java    |   20 +-
 .../referencing/gazetteer/GazetteerException.java  |    3 +-
 .../main/org/apache/sis/geometry/Envelopes.java    |    7 +-
 .../apache/sis/geometry/WraparoundAdjustment.java  |    5 +-
 .../main/org/apache/sis/referencing/CRS.java       |  331 ++-
 .../referencing/internal/PositionTransformer.java  |    7 +-
 .../apache/sis/referencing/internal/Resources.java |    5 +
 .../sis/referencing/internal/Resources.properties  |    1 +
 .../referencing/internal/Resources_fr.properties   |    1 +
 .../referencing/internal/ServicesForMetadata.java  |    3 +-
 .../internal/shared/ExtentSelector.java            |    2 +-
 .../operation/CoordinateOperationFinder.java       |    8 +-
 .../operation/CoordinateOperationRegistry.java     |    4 +-
 .../operation/DefaultConcatenatedOperation.java    |   33 +-
 .../DefaultCoordinateOperationFactory.java         |   35 +-
 .../referencing/operation/SubOperationInfo.java    |   32 +-
 .../operation/TransformedCoordinateSet.java        |    7 +-
 .../sis/referencing/operation/matrix/Matrices.java |   37 +-
 .../referencing/operation/matrix/package-info.java |    2 +-
 .../referencing/operation/projection/Mercator.java |    4 +-
 .../operation/projection/ProjectionException.java  |    3 +-
 .../operation/transform/MathTransforms.java        |    4 +-
 .../transform/TransformFactoryException.java       |   68 +
 .../operation/transform/package-info.java          |    2 +-
 .../org/apache/sis/referencing/package-info.java   |    2 +-
 .../test/org/apache/sis/referencing/CRSTest.java   |   70 +-
 .../operation/CoordinateOperationRegistryTest.java |   85 +-
 .../DefaultCoordinateOperationFactoryTest.java     |    3 +-
 .../main/module-info.java                          |    2 +-
 .../apache/sis/storage/netcdf/base/Convention.java |   33 +-
 .../apache/sis/storage/netcdf/base/Decoder.java    |    2 +
 .../sis/storage/netcdf/base/GridMapping.java       |  745 ++++---
 .../sis/storage/netcdf/internal/Resources.java     |    6 +-
 .../storage/netcdf/internal/Resources.properties   |    2 +-
 .../netcdf/internal/Resources_fr.properties        |    2 +-
 .../apache/sis/storage/netcdf/package-info.java    |    2 +-
 .../apache/sis/storage/netcdf/NetcdfStoreTest.java |    4 +-
 .../org/apache/sis/storage/esri/WritableStore.java |    2 +-
 .../apache/sis/storage/tiling/TileReadEvent.java   |    3 +-
 .../main/org/apache/sis/math/Vector.java           |    4 +
 .../main/org/apache/sis/util/Classes.java          |   22 +-
 .../main/org/apache/sis/util/ComparisonMode.java   |    8 +-
 .../main/org/apache/sis/util/Utilities.java        |    2 +
 .../test/org/apache/sis/test/LoggingWatcher.java   |   17 +
 .../org.apache.sis.geometry/main/module-info.java  |    1 +
 .../main/org/apache/sis/geometries/BBox.java       |   39 +-
 .../main/org/apache/sis/geometries/DataPoints.java |   76 +-
 .../main/org/apache/sis/geometries/Geometries.java |    5 +-
 .../org/apache/sis/geometries/GeometryFactory.java |   41 +-
 .../main/org/apache/sis/geometries/HyperPlane.java |   18 +-
 .../main/org/apache/sis/geometries/OBBox.java      |  104 +-
 .../main/org/apache/sis/geometries/Plane.java      |   18 +-
 .../main/org/apache/sis/geometries/Point.java      |   19 +-
 .../main/org/apache/sis/geometries/Prism.java      |   27 +
 .../apache/sis/geometries/adapter/JTSAdapter.java  |   23 +-
 .../org/apache/sis/geometries/adapter/SIS.java     |   19 +-
 .../org/apache/sis/geometries/adapter/Wrapper.java |   13 +-
 .../main/org/apache/sis/geometries/cs/Bearing.java |   22 +
 .../main/org/apache/sis/geometries/curve/Ray.java  |   14 +-
 .../org/apache/sis/geometries/index/KdTree.java    |    6 +-
 .../internal/shared/AbstractGeometry.java          |   13 +-
 .../internal/shared/ArrayDataPoints.java           |   44 +-
 .../internal/shared/BSplineEvaluator.java          |   13 +-
 .../internal/shared/ConcatenatedDataPoints.java    |    5 +-
 .../internal/shared/CurveLinearizer.java           |   95 +-
 .../sis/geometries/internal/shared/Curves.java     |   17 +-
 .../sis/geometries/internal/shared/DefaultArc.java |   14 +-
 .../internal/shared/DefaultArcByBulge.java         |   12 +-
 .../internal/shared/DefaultArcByCenterPoint.java   |   43 +-
 .../geometries/internal/shared/DefaultBearing.java |   20 +-
 .../geometries/internal/shared/DefaultCapsule.java |   30 +-
 .../internal/shared/DefaultConicArc.java           |   25 +-
 .../internal/shared/DefaultCylinder.java           |   30 +-
 .../internal/shared/DefaultDataPoints.java         |    7 +-
 .../internal/shared/DefaultEllipsoid.java          |    5 +-
 .../internal/shared/DefaultNurbCurve.java          |   13 +-
 .../internal/shared/DefaultNurbSurface.java        |   39 +-
 .../geometries/internal/shared/DefaultPoint.java   |    8 +-
 .../geometries/internal/shared/DefaultPrism.java   |  317 +++
 .../sis/geometries/internal/shared/DefaultRay.java |   18 +-
 .../geometries/internal/shared/DefaultSphere.java  |    5 +-
 .../internal/shared/EllipsoidalSurfaces.java       |   26 +-
 .../internal/shared/EmptyDataPoints.java           |    5 +-
 .../geometries/internal/shared/IndexedPoint.java   |    3 +-
 .../sis/geometries/internal/shared/Planar.java     |  315 +++
 .../internal/shared/SinglePositionDataPoints.java  |   40 +-
 .../internal/shared/topology/ComplexBuilder.java   |  678 ++++++
 .../internal/shared/topology/ComplexEditor.java    | 1091 ++++++++++
 .../internal/shared/topology/ComplexGeometry.java  |  475 ++++
 .../internal/shared/topology/ComplexValidator.java |  415 ++++
 .../shared/topology/DefaultExpression.java         |  278 +++
 .../internal/shared/topology/IndexedComplex.java   | 1637 ++++++++++++++
 .../internal/shared/topology/IndexedEdge.java      |  124 ++
 .../internal/shared/topology/IndexedFace.java      |  129 ++
 .../internal/shared/topology/IndexedNode.java      |  105 +
 .../internal/shared/topology/IndexedSolid.java     |  115 +
 .../internal/shared/topology/IndexedTopo.java      |  150 ++
 .../internal/shared/topology/NodePoints.java       |  384 ++++
 .../internal/shared/topology/package-info.java     |   37 +
 .../apache/sis/geometries/mesh/MeshPrimitive.java  |  142 +-
 .../apache/sis/geometries/operation/Contains.java  |  140 +-
 .../sis/geometries/operation/DeBoorAlgorithm.java  |    7 +-
 .../apache/sis/geometries/operation/Distance.java  |   93 +
 .../geometries/operation/GeometryProcessor.java    |   10 +-
 .../sis/geometries/operation/Intersection.java     |  579 ++++-
 .../geometries/operation/SutherlandHodgman.java    |    5 +-
 .../org/apache/sis/geometries/operation/To3D.java  |   32 +-
 .../sis/geometries/operation/ToPrimitive.java      |   63 +-
 .../apache/sis/geometries/operation/Transform.java |   22 +-
 .../operation/extrude/TerrainExtruder.java         |  976 +++++++++
 .../simplify/greedyinsert/TINBuilder.java          |   40 +-
 .../operation/simplify/greedyinsert/WTriangle.java |   14 +-
 .../operation/spatialanalysis2d/Centerline.java    |  307 +++
 .../spatialanalysis2d/StraightSkeleton.java        |  448 ++++
 .../operation/triangulate/EarClipping.java         |  734 ++-----
 .../operation/triangulate/HoleToExterior.java      |  305 +++
 .../operation/triangulate/delaunay/Delaunay.java   |  178 +-
 .../triangulate/delaunay/OrientedEdge.java         |    5 +-
 .../triangulate/delaunay/OrientedTriangle.java     |    5 +-
 .../org/apache/sis/geometries/package-info.java    |    3 +-
 .../solid/polyhedron/AbstractPolyhedron.java       |   14 +-
 .../geometries/solid/polyhedron/Dodecahedron.java  |    6 +-
 .../geometries/solid/polyhedron/Hexahedron.java    |    6 +-
 .../geometries/solid/polyhedron/Icosahedron.java   |    6 +-
 .../geometries/solid/polyhedron/Octahedron.java    |    6 +-
 .../solid/polyhedron/RhombicTriacontahedron.java   |    6 +-
 .../geometries/solid/polyhedron/Tetrahedron.java   |    6 +-
 .../solid/polyhedron/TruncatedIcosahedron.java     |    6 +-
 .../sis/geometries/spherical/GreatCircleArc.java   |   20 +-
 .../spherical/SphericalConvexPolygon.java          |   14 +-
 .../geometries/spherical/SphericalTriangle.java    |   38 +-
 .../org/apache/sis/geometries/surface/Capsule.java |   33 +-
 .../apache/sis/geometries/surface/Cylinder.java    |   72 +-
 .../apache/sis/geometries/surface/Ellipsoid.java   |   10 +-
 .../apache/sis/geometries/surface/PreparedTIN.java |   39 +-
 .../org/apache/sis/geometries/surface/Sphere.java  |   10 +-
 .../apache/sis/geometries/surface/Triangle.java    |    5 +-
 .../apache/sis/geometries/topology/Complex.java    |  116 +
 .../sis/geometries/topology/ComplexData.java}      |   26 +-
 .../sis/geometries/topology/DirectedEdge.java      |  101 +
 .../sis/geometries/topology/DirectedFace.java      |   97 +
 .../sis/geometries/topology/DirectedNode.java      |   97 +
 .../sis/geometries/topology/DirectedSolid.java     |   98 +
 .../sis/geometries/topology/DirectedTopo.java      |   94 +
 .../org/apache/sis/geometries/topology/Edge.java   |   87 +
 .../apache/sis/geometries/topology/Expression.java |  194 ++
 .../sis/geometries/topology/ExpressionTerm.java    |   69 +
 .../org/apache/sis/geometries/topology/Face.java   |  104 +
 .../org/apache/sis/geometries/topology/Node.java   |   75 +
 .../apache/sis/geometries/topology/Primitive.java  |  140 ++
 .../sis/geometries/topology/PrimitiveData.java}    |   15 +-
 .../org/apache/sis/geometries/topology/Solid.java  |   87 +
 .../apache/sis/geometries/topology/Topology.java   |  167 ++
 .../sis/geometries/topology/TopologyData.java      |   72 +
 .../sis/geometries/topology/package-info.java      |   65 +
 .../main/org/apache/sis/gml/GML3Reader.java        |    4 +-
 .../main/org/apache/sis/maths/AbstractCursor.java  |    1 -
 .../main/org/apache/sis/maths/AbstractMatrix.java  |   11 +-
 .../org/apache/sis/maths/AbstractSimilarity.java   |   64 +-
 .../main/org/apache/sis/maths/AbstractVector.java  |  126 +-
 .../main/org/apache/sis/maths/Affine1D.java        |    6 +-
 .../main/org/apache/sis/maths/Affine2D.java        |   11 +-
 .../main/org/apache/sis/maths/Affine3D.java        |   24 +-
 .../main/org/apache/sis/maths/Affine4D.java        |   26 +-
 .../main/org/apache/sis/maths/Affines.java         |   11 +-
 .../main/org/apache/sis/maths/Array.java           |   74 +-
 .../org/apache/sis/maths/ArrayConcatenated.java    |   27 +-
 .../main/org/apache/sis/maths/ArrayFactory.java    |   36 +-
 .../main/org/apache/sis/maths/ArrayFactoryFFM.java |   63 +-
 .../main/org/apache/sis/maths/ArrayFactoryHAT.java |   28 +-
 .../org/apache/sis/maths/ArrayFactoryJava.java     |  102 +-
 .../org/apache/sis/maths/ArrayUnmodifiable.java    |    7 +-
 .../main/org/apache/sis/maths/Cursor.java          |   30 +-
 .../org/apache/sis/maths/CursorUnmodifiable.java   |   19 +-
 .../org/apache/sis/maths/LinearCombination.java    |  175 ++
 .../main/org/apache/sis/maths/Maths.java           |  203 +-
 .../main/org/apache/sis/maths/Matrices.java        |    6 +-
 .../main/org/apache/sis/maths/Matrix2D.java        |   20 +-
 .../main/org/apache/sis/maths/Matrix3D.java        |   40 +-
 .../main/org/apache/sis/maths/Matrix4D.java        |   42 +-
 .../main/org/apache/sis/maths/NDArray.java         |   18 +-
 .../main/org/apache/sis/maths/NDArrays.java        |   43 +-
 .../main/org/apache/sis/maths/NDRange.java         |  203 +-
 .../main/org/apache/sis/maths/Quaternion.java      |  195 +-
 .../main/org/apache/sis/maths/Quaternions.java     |    2 +-
 .../main/org/apache/sis/maths/ReadOnly.java        |  330 +--
 .../org/apache/sis/maths/Sample.java}              |   22 +-
 .../main/org/apache/sis/maths/Similarity.java      |    9 +-
 .../main/org/apache/sis/maths/Similarity3D.java    |   39 +-
 .../main/org/apache/sis/maths/SimilarityND.java    |   52 +-
 .../org/apache/sis/maths/SimplifiedTransform.java  |    8 +-
 .../main/org/apache/sis/maths/Transform.java       |   26 +-
 .../main/org/apache/sis/maths/Vector.java          | 1021 +++++++--
 .../main/org/apache/sis/maths/Vector1D.java        | 1456 +++++++------
 .../main/org/apache/sis/maths/Vector2D.java        | 1805 ++++++++-------
 .../main/org/apache/sis/maths/Vector3D.java        | 2127 ++++++++++--------
 .../main/org/apache/sis/maths/Vector4D.java        | 2301 ++++++++++----------
 .../main/org/apache/sis/maths/VectorND.java        | 1433 ++++++++++--
 .../org/apache/sis/maths/VectorUnmodifiable.java   |   79 +-
 .../main/org/apache/sis/maths/Vectors.java         |  539 +++--
 .../org/apache/sis/geometries/DataPointsTest.java  |   72 +-
 .../org/apache/sis/geometries/GeometryTest.java    |    5 +-
 .../test/org/apache/sis/geometries/PointTest.java  |    4 +-
 .../test/org/apache/sis/geometries/PrismTest.java  |  211 ++
 .../org/apache/sis/geometries/cs/BearingTest.java  |   51 +-
 .../sis/geometries/curve/ArcByBulgeTest.java       |   10 +-
 .../internal/shared/ArrayDataPointsTest.java       |   15 +
 .../internal/shared/ArraySequenceTest.java         |   26 +-
 .../internal/shared/CurveLinearizerTest.java       |    9 +-
 .../shared/topology/ComplexBuilderTest.java        |  517 +++++
 .../shared/topology/ComplexEditorTest.java         |  323 +++
 .../shared/topology/DefaultExpressionTest.java     |  157 ++
 .../internal/shared/topology/NodePointsTest.java   |  152 ++
 .../sis/geometries/mesh/PrimitiveVisitorTest.java  |   14 +-
 .../sis/geometries/operation/Contains3DTest.java   |  183 ++
 .../sis/geometries/operation/DistanceTest.java     |   25 +
 .../geometries/operation/Intersection3DTest.java   |  264 +++
 .../apache/sis/geometries/operation/To3DTest.java  |    6 +-
 .../sis/geometries/operation/ToPrimitiveTest.java  |  129 +-
 .../operation/extrude/TerrainExtruderTest.java     |  418 ++++
 .../operation/polyhedron/SolidFixtures.java        |  393 ++++
 .../operation/polyhedron/SolidFixturesTest.java    |  137 ++
 .../spatialanalysis2d/CenterlineTest.java          |  135 ++
 .../spatialanalysis2d/StraightSkeletonTest.java    |  150 ++
 .../operation/triangulate/EarClippingTest.java     |  236 ++
 .../operation/triangulate/HoleToExteriorTest.java  |  207 ++
 .../triangulate/delaunay/DelaunayTest.java         |   67 +-
 .../geometries/spherical/GreatCircleArcTest.java   |    8 +-
 .../spherical/SphericalTriangleTest.java           |   14 +-
 .../test/org/apache/sis/gml/GML3WriterTest.java    |    4 +-
 .../org/apache/sis/maths/AbstractArrayTest.java    |   55 +-
 .../org/apache/sis/maths/AbstractVectorTest.java   |  444 ++--
 .../test/org/apache/sis/maths/MathsTest.java       |  156 +-
 .../test/org/apache/sis/maths/NDRangeTest.java     |   76 +-
 .../test/org/apache/sis/maths/Vector3DTest.java    |   24 +-
 .../test/org/apache/sis/maths/VectorTest.java      |  124 ++
 .../test/org/apache/sis/maths/VectorsTest.java     |   34 +-
 .../apache/sis/referencing/dggs/s2/S2Coder.java    |    3 +-
 .../org/apache/sis/referencing/dggs/s2/S2Dgg.java  |    3 +-
 .../dggs/DiscreteGlobalGridCoverageProcessor.java  |   16 +-
 .../storage/dggs/DiscreteGlobalGridGeometry.java   |    3 +-
 .../shared/ArrayDiscreteGlobalGridCoverage.java    |    2 +-
 .../rs/internal/shared/ArrayCodedCoverage.java     |    2 +-
 .../sis/referencing/dggs/AbstractDggrsTest.java    |    2 +-
 .../apache/sis/storage/shapefile/dbf/DBFField.java |   13 +-
 .../shapefile/shp/ShapeGeometryEncoder.java        |    2 +-
 .../sis/referencing/factory/sql/epsg/Finish.sql    |    1 +
 256 files changed, 25521 insertions(+), 7262 deletions(-)

diff --cc 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/jts/Wrapper.java
index 238025ddaf,bae9ca35f0..47a7fd010e
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/jts/Wrapper.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/jts/Wrapper.java
@@@ -44,9 -44,10 +44,10 @@@ import org.opengis.util.FactoryExceptio
  import org.opengis.geometry.DirectPosition;
  import org.opengis.referencing.crs.CoordinateReferenceSystem;
  import org.opengis.referencing.operation.CoordinateOperation;
 -import org.opengis.referencing.operation.MathTransform;
  import org.opengis.referencing.operation.TransformException;
 +import org.opengis.referencing.operation.MathTransform;
  import org.apache.sis.referencing.CRS;
+ import 
org.apache.sis.referencing.operation.transform.TransformFactoryException;
  import org.apache.sis.geometry.DirectPosition2D;
  import org.apache.sis.geometry.GeneralDirectPosition;
  import org.apache.sis.geometry.GeneralEnvelope;
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
index 8c3230acd5,da605cb36f..9e8e3962df
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
@@@ -305,9 -302,17 +305,17 @@@ final class DefaultConcatenatedOperatio
                  final var nested = ((ConcatenatedOperation) 
op).getOperations().toArray(CoordinateOperation[]::new);
                  previous = initialize(properties, nested, flattened, null, 
previous, false, setAccuracy);
              } else {
-                 // Note: operation (source, target) may be in reverse order, 
but it should be taken as metadata.
-                 if (!step.isIdentity()) {
+                 /*
+                  * We can skip identity transforms only if the operation is a 
conversion.
+                  * We do not want to skip the step for transformations, 
because it may be
+                  * a change of datum and we want to keep the positional 
accuracy metadata.
+                  * We also need to ensure compatible source and target CRSs, 
otherwise the
+                  * `verifyStepChaining(…)` method may declare the operation 
chain invalid.
+                  */
+                 if (!(step.isIdentity() && op instanceof Conversion
+                         && Utilities.deepEquals(source, target, 
ComparisonMode.APPROXIMATE)))
+                 {
 -                    flattened.add(op);
 +                    flattened.add((SingleOperation) op);
                  }
                  previous = target;          // For next iteration cycle.
              }
diff --cc 
endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
index 6b52ae426c,f0984e0605..3fd14b8b1c
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/main/org/apache/sis/storage/netcdf/base/GridMapping.java
@@@ -87,14 -86,12 +86,12 @@@ import org.apache.sis.util.resources.In
  import org.apache.sis.io.wkt.WKTFormat;
  import org.apache.sis.io.wkt.Warnings;
  import org.apache.sis.math.NumberType;
+ import org.apache.sis.math.Vector;
  import org.apache.sis.measure.Units;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.referencing.crs.DerivedCRS;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.crs.GeneralDerivedCRS;
  
- // Specific to the geoapi-3.1 and geoapi-4.0 branches:
- import org.opengis.referencing.datum.DatumEnsemble;
- 
  
  /**
   * Helper object for creating a {@link GridGeometry} instance defined by 
attributes on a variable.

Reply via email to