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.
