This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-3.1 in repository https://gitbox.apache.org/repos/asf/sis.git
commit cb32b1b2f03b18c8502cec2e9d966c162f11aa31 Merge: 3abad8c520 9f73d3edf5 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Tue Jun 24 17:54:09 2025 +0200 Merge branch 'geoapi-4.0' into geoapi-3.1. Contains the introduction of a "geometries" experimental module - this is not committed API. buildSrc/build.gradle.kts | 2 +- .../apache/sis/buildtools/gradle/Dependency.java | 1 + .../main/org/apache/sis/console/AboutCommand.java | 2 +- .../org.apache.sis.feature/main/module-info.java | 2 + .../main/org/apache/sis/coverage/CategoryList.java | 10 +- .../coverage/grid/CoordinateOperationFinder.java | 116 +- .../sis/coverage/internal/CompoundTransform.java | 8 +- .../sis/geometry/wrapper/GeometryFactories.java | 2 +- .../org/apache/sis/geometry/wrapper/jts/JTS.java | 96 + .../main/org/apache/sis/image/AnnotatedImage.java | 2 +- .../main/org/apache/sis/image/ErrorHandler.java | 2 +- .../org/apache/sis/image/privy/TileOpExecutor.java | 2 +- .../sis/coverage/grid/GridDerivationTest.java | 28 + .../apache/sis/coverage/grid/GridGeometryTest.java | 61 +- .../apache/sis/metadata/sql/CachedStatement.java | 2 +- .../apache/sis/metadata/sql/MetadataSource.java | 4 +- .../apache/sis/metadata/sql/MetadataWriter.java | 2 +- .../apache/sis/metadata/sql/privy/Initializer.java | 6 +- .../main/org/apache/sis/util/iso/Types.java | 2 +- .../main/org/apache/sis/xml/bind/Context.java | 2 +- .../apache/sis/xml/privy/ExceptionSimplifier.java | 2 +- .../org/apache/sis/metadata/sql/TestDatabase.java | 3 +- .../main/module-info.java | 1 + .../main/org/apache/sis/io/wkt/Warnings.java | 4 +- .../factory/AuthorityFactoryIdentifier.java | 4 +- .../factory/ConcurrentAuthorityFactory.java | 4 +- .../referencing/factory/GeodeticObjectFactory.java | 2 +- .../referencing/factory/IdentifiedObjectSet.java | 2 +- .../factory/MultiAuthoritiesFactory.java | 4 +- .../referencing/factory/sql/EPSGDataAccess.java | 14 +- .../sis/referencing/factory/sql/EPSGInstaller.java | 13 +- .../factory/sql/InstallationScriptProvider.java | 4 +- .../internal/ParameterizedTransformBuilder.java | 9 +- .../apache/sis/referencing/internal/Resources.java | 10 + .../sis/referencing/internal/Resources.properties | 2 + .../referencing/internal/Resources_fr.properties | 2 + .../apache/sis/referencing/operation/CRSPair.java | 4 +- .../operation/CoordinateOperationFinder.java | 33 +- .../operation/CoordinateOperationRegistry.java | 2 +- .../referencing/operation/SubOperationInfo.java | 174 +- .../referencing/operation/gridded/GridFile.java | 5 +- .../referencing/operation/gridded/LoadedGrid.java | 2 +- .../projection/EquidistantCylindrical.java | 25 + .../referencing/operation/projection/Mercator.java | 41 +- .../operation/projection/NormalizedProjection.java | 7 +- .../provider/FranceGeocentricInterpolation.java | 2 +- .../operation/provider/Interpolation1D.java | 10 +- .../sis/referencing/operation/provider/NTv2.java | 4 +- .../operation/transform/AbstractMathTransform.java | 379 +--- .../transform/AbstractMathTransform1D.java | 24 +- .../transform/AbstractMathTransform2D.java | 6 +- .../operation/transform/ConcatenatedTransform.java | 428 ++-- .../transform/ConcatenatedTransformDirect.java | 4 +- .../operation/transform/ConstantTransform1D.java | 8 +- .../transform/CoordinateSystemTransform.java | 23 +- .../operation/transform/CopyTransform.java | 2 +- .../operation/transform/DatumShiftTransform.java | 22 +- .../transform/DefaultMathTransformFactory.java | 3 +- .../transform/EllipsoidToCentricTransform.java | 18 +- .../transform/EllipsoidToRadiusTransform.java | 10 +- .../transform/ExponentialTransform1D.java | 15 +- .../operation/transform/IdentityTransform.java | 16 +- .../operation/transform/IdentityTransform1D.java | 8 +- .../operation/transform/InterpolatedTransform.java | 2 +- .../operation/transform/LinearInterpolator1D.java | 7 +- .../operation/transform/LinearTransform1D.java | 10 +- .../transform/LogarithmicTransform1D.java | 33 +- .../operation/transform/MathTransforms.java | 77 +- .../operation/transform/MolodenskyTransform.java | 48 +- .../operation/transform/PassThroughTransform.java | 94 +- .../operation/transform/PowerTransform1D.java | 17 +- .../operation/transform/ProjectiveTransform.java | 2 +- .../operation/transform/ScaleTransform.java | 2 +- .../operation/transform/TransformJoiner.java | 945 +++++++++ .../operation/transform/TransformSeparator.java | 2 +- .../operation/transform/TranslationTransform.java | 2 +- .../operation/transform/UnitConversion.java | 10 +- .../operation/transform/WraparoundTransform.java | 321 ++- .../sis/referencing/privy/DefinitionVerifier.java | 2 +- .../apache/sis/geometry/EnvelopeReducerTest.java | 7 +- .../referencing/crs/DefaultProjectedCRSTest.java | 5 +- .../DefaultCoordinateOperationFactoryTest.java | 4 +- .../operation/projection/ObliqueMercatorTest.java | 4 +- .../transform/ConcatenatedTransformTest.java | 69 +- .../transform/EllipsoidToCentricTransformTest.java | 4 +- .../transform/EllipsoidToRadiusTransformTest.java | 21 + .../operation/transform/MathTransformWrapper.java | 8 +- .../transform/MolodenskyTransformTest.java | 56 +- .../transform/PassThroughTransformTest.java | 36 +- .../transform/TransformResultComparator.java | 9 +- .../transform/TransformSeparatorTest.java | 4 +- .../transform/WraparoundTransformTest.java | 2 +- .../sis/storage/geotiff/ImageFileDirectory.java | 2 +- .../sis/storage/geotiff/reader/CRSBuilder.java | 2 +- .../sis/storage/netcdf/NetcdfStoreProvider.java | 2 +- .../apache/sis/storage/netcdf/base/Decoder.java | 2 +- .../org/apache/sis/storage/netcdf/base/Grid.java | 3 +- .../sis/storage/netcdf/base/NamedElement.java | 2 +- .../apache/sis/storage/sql/feature/Database.java | 2 +- .../sis/storage/sql/feature/SelectionClause.java | 2 +- .../apache/sis/storage/sql/postgis/Postgres.java | 6 +- .../sis/storage/AbstractGridCoverageResource.java | 2 +- .../main/org/apache/sis/storage/URLDataSource.java | 9 +- .../sis/storage/base/DocumentedStoreProvider.java | 2 +- .../org/apache/sis/storage/base/URIDataStore.java | 6 +- .../sis/storage/csv/MovingFeatureBuilder.java | 9 +- .../main/org/apache/sis/storage/csv/Store.java | 2 +- .../org/apache/sis/storage/wkt/StoreFormat.java | 2 +- .../src/org.apache.sis.util/main/module-info.java | 1 + .../main/org/apache/sis/system/DataDirectory.java | 2 +- .../org/apache/sis/system/OptionalDependency.java | 6 +- .../main/org/apache/sis/system/Supervisor.java | 2 +- .../org/apache/sis/util/collection/WeakEntry.java | 2 +- .../main/org/apache/sis/util/resources/Errors.java | 2 +- .../apache/sis/util/resources/Errors.properties | 2 +- .../apache/sis/util/resources/Errors_fr.properties | 2 +- .../sis/util/resources/IndexedResourceBundle.java | 55 +- .../resources/ResourceInternationalString.java | 2 +- .../util/resources/IndexedResourceBundleTest.java | 8 +- incubator/build.gradle.kts | 18 +- .../org.apache.sis.geometry/main/module-info.java | 57 + .../apache/sis/geometries/AbstractGeometry.java | 78 + .../apache/sis/geometries/AbstractMultiCurve.java | 55 + .../org/apache/sis/geometries/ArraySequence.java | 218 ++ .../org/apache/sis/geometries/AttributesType.java | 153 ++ .../main/org/apache/sis/geometries/BBox.java | 118 ++ .../main/org/apache/sis/geometries/Bearing.java | 30 + .../org/apache/sis/geometries/BoundaryType.java | 28 + .../main/org/apache/sis/geometries/Curve.java | 211 ++ .../apache/sis/geometries/CurveInterpolation.java | 46 + .../sis/geometries/DefaultGeometryCollection.java | 55 + .../apache/sis/geometries/DefaultLineString.java | 41 + .../apache/sis/geometries/DefaultLinearRing.java | 30 + .../sis/geometries/DefaultMultiLineString.java | 29 + .../apache/sis/geometries/DefaultMultiPoint.java | 69 + .../apache/sis/geometries/DefaultMultiPolygon.java | 29 + .../apache/sis/geometries/DefaultMultiSurface.java | 60 + .../org/apache/sis/geometries/DefaultPoint.java | 126 ++ .../sis/geometries/DefaultPointSequence.java | 90 + .../org/apache/sis/geometries/DefaultPolygon.java | 84 + .../org/apache/sis/geometries/DefaultTriangle.java | 78 + .../main/org/apache/sis/geometries/Empty.java | 33 + .../main/org/apache/sis/geometries/Geometries.java | 810 ++++++++ .../main/org/apache/sis/geometries/Geometry.java | 284 +++ .../apache/sis/geometries/GeometryCollection.java | 107 + .../org/apache/sis/geometries/GeometryType.java | 41 + .../org/apache/sis/geometries/GeometryVisitor.java | 127 ++ .../main/org/apache/sis/geometries/Knot.java | 33 + .../main/org/apache/sis/geometries/LineString.java | 126 ++ .../main/org/apache/sis/geometries/LinearRing.java | 47 + .../org/apache/sis/geometries/MeshPrimitive.java | 1279 ++++++++++++ .../sis/geometries/MeshPrimitiveComparator.java | 297 +++ .../sis/geometries/MeshPrimitiveIndexes.java | 495 +++++ .../sis/geometries/MeshPrimitiveVisitor.java | 233 +++ .../main/org/apache/sis/geometries/MultiCurve.java | 77 + .../org/apache/sis/geometries/MultiLineString.java | 53 + .../apache/sis/geometries/MultiMeshPrimitive.java | 194 ++ .../main/org/apache/sis/geometries/MultiPoint.java | 106 + .../org/apache/sis/geometries/MultiPolygon.java | 63 + .../org/apache/sis/geometries/MultiSurface.java | 72 + .../main/org/apache/sis/geometries/OBBox.java | 154 ++ .../org/apache/sis/geometries/OffsetCurve.java | 38 + .../main/org/apache/sis/geometries/Orientable.java | 59 + .../main/org/apache/sis/geometries/Point.java | 153 ++ .../org/apache/sis/geometries/PointSequence.java | 144 ++ .../main/org/apache/sis/geometries/Polygon.java | 115 ++ .../apache/sis/geometries/PolyhedralSurface.java | 96 + .../org/apache/sis/geometries/PreparedTIN.java | 362 ++++ .../main/org/apache/sis/geometries/Primitive.java | 34 + .../org/apache/sis/geometries/ProductCurve.java | 37 + .../main/org/apache/sis/geometries/Solid.java | 54 + .../apache/sis/geometries/SolidInterpolation.java | 36 + .../main/org/apache/sis/geometries/Sphere.java | 121 ++ .../main/org/apache/sis/geometries/Surface.java | 142 ++ .../sis/geometries/SurfaceInterpolation.java | 42 + .../main/org/apache/sis/geometries/TIN.java | 73 + .../org/apache/sis/geometries/TransfiniteSet.java | 30 + .../main/org/apache/sis/geometries/Triangle.java | 348 ++++ .../apache/sis/geometries/TriangulatedSurface.java | 29 + .../apache/sis/geometries/Vocabulary.properties | 4 + .../main/org/apache/sis/geometries/conics/Arc.java | 48 + .../org/apache/sis/geometries/conics/Circle.java | 29 + .../org/apache/sis/geometries/conics/Conic.java | 44 + .../org/apache/sis/geometries/conics/ConicArc.java | 25 + .../org/apache/sis/geometries/conics/Ellipse.java | 25 + .../apache/sis/geometries/conics/EllipticArc.java | 29 + .../apache/sis/geometries/conicsurfaces/Cone.java | 25 + .../sis/geometries/conicsurfaces/Cylinder.java | 25 + .../sis/geometries/conicsurfaces/Sphere.java | 25 + .../sis/geometries/cs/CurveRelativeDirection.java | 38 + .../apache/sis/geometries/cs/FixedDirection.java | 30 + .../geometries/cs/GeometricCoordinateSystem.java | 72 + .../org/apache/sis/geometries/cs/Projection.java | 25 + .../sis/geometries/cs/ReferenceDirection.java | 29 + .../sis/geometries/cs/RelativeDirection.java | 32 + .../org/apache/sis/geometries/cs/Rotation.java | 30 + .../org/apache/sis/geometries/cs/package-info.java | 13 + .../apache/sis/geometries/geodesics/Geodesic.java | 36 + .../sis/geometries/griddedsolid/BSolidSpline.java | 29 + .../griddedsolid/ParametricCurveSolid.java | 67 + .../org/apache/sis/geometries/index/KdTree.java | 499 +++++ .../sis/geometries/index/MortonIterator.java | 75 + .../apache/sis/geometries/math/AbstractCursor.java | 81 + .../apache/sis/geometries/math/AbstractTuple.java | 124 ++ .../sis/geometries/math/AbstractTupleArray.java | 115 ++ .../org/apache/sis/geometries/math/DataType.java | 430 ++++ .../main/org/apache/sis/geometries/math/Maths.java | 1155 +++++++++++ .../org/apache/sis/geometries/math/Matrices.java | 869 ++++++++ .../org/apache/sis/geometries/math/Matrix.java | 36 + .../org/apache/sis/geometries/math/Matrix2D.java | 63 + .../org/apache/sis/geometries/math/Matrix3D.java | 59 + .../org/apache/sis/geometries/math/Matrix4D.java | 62 + .../org/apache/sis/geometries/math/MatrixND.java | 44 + .../org/apache/sis/geometries/math/Quaternion.java | 450 +++++ .../apache/sis/geometries/math/Quaternions.java | 273 +++ .../apache/sis/geometries/math/SampleSystem.java | 196 ++ .../main/org/apache/sis/geometries/math/Tuple.java | 386 ++++ .../org/apache/sis/geometries/math/TupleArray.java | 372 ++++ .../geometries/math/TupleArrayConcatenated.java | 188 ++ .../sis/geometries/math/TupleArrayCursor.java | 50 + .../math/TupleArrayCursorUnmodifiable.java | 62 + .../apache/sis/geometries/math/TupleArrayND.java | 1580 +++++++++++++++ .../sis/geometries/math/TupleArraySpliterator.java | 87 + .../geometries/math/TupleArrayUnmodifiable.java | 175 ++ .../apache/sis/geometries/math/TupleArrays.java | 480 +++++ .../sis/geometries/math/TupleUnmodifiable.java | 183 ++ .../org/apache/sis/geometries/math/Vector.java | 138 ++ .../org/apache/sis/geometries/math/Vector1D.java | 1437 ++++++++++++++ .../org/apache/sis/geometries/math/Vector2D.java | 1600 +++++++++++++++ .../org/apache/sis/geometries/math/Vector3D.java | 1834 +++++++++++++++++ .../org/apache/sis/geometries/math/Vector4D.java | 2077 ++++++++++++++++++++ .../org/apache/sis/geometries/math/VectorND.java | 551 ++++++ .../org/apache/sis/geometries/math/Vectors.java | 1779 +++++++++++++++++ .../apache/sis/geometries/math/package-info.java | 4 + .../geometries/operation/GeometryOperations.java | 753 +++++++ .../apache/sis/geometries/operation/Operation.java | 81 + .../geometries/operation/OperationException.java | 37 + .../geometries/operation/SutherlandHodgman.java | 96 + .../operation/spatialanalysis2d/Buffer.java | 40 + .../operation/spatialanalysis2d/ConvexHull.java | 38 + .../operation/spatialanalysis2d/Difference.java | 36 + .../operation/spatialanalysis2d/Distance.java | 39 + .../operation/spatialanalysis2d/ISOBand.java | 324 +++ .../operation/spatialanalysis2d/ISOLine.java | 146 ++ .../operation/spatialanalysis2d/Intersection.java | 36 + .../operation/spatialanalysis2d/IsoInclusion.java | 42 + .../operation/spatialanalysis2d/SymDifference.java | 37 + .../operation/spatialanalysis2d/Union.java | 36 + .../operation/spatialedition/ComputeAttribute.java | 72 + .../geometries/operation/spatialedition/To3D.java | 47 + .../operation/spatialedition/ToPrimitive.java | 39 + .../operation/spatialedition/Transform.java | 62 + .../operation/spatialrelations2d/Contains.java | 37 + .../operation/spatialrelations2d/Crosses.java | 36 + .../operation/spatialrelations2d/Disjoint.java | 36 + .../operation/spatialrelations2d/Equals.java | 36 + .../operation/spatialrelations2d/Intersects.java | 36 + .../operation/spatialrelations2d/LocateAlong.java | 39 + .../spatialrelations2d/LocateBetween.java | 41 + .../operation/spatialrelations2d/Overlaps.java | 36 + .../operation/spatialrelations2d/Relate.java | 41 + .../operation/spatialrelations2d/Touches.java | 36 + .../operation/spatialrelations2d/Within.java | 36 + .../org/apache/sis/geometries/package-info.java | 83 + .../parametriccurvesurfaces/BilinearGrid.java | 29 + .../geometries/parametriccurvesurfaces/Cone.java | 29 + .../parametriccurvesurfaces/Cylinder.java | 29 + .../ParametricCurveSurface.java | 69 + .../geometries/parametriccurvesurfaces/Sphere.java | 29 + .../sis/geometries/polynomials/FunctionArc.java | 36 + .../sis/geometries/polynomials/FunctionCurve.java | 35 + .../sis/geometries/polynomials/PolynomialArc.java | 35 + .../geometries/polynomials/PolynomialCurve.java | 31 + .../sis/geometries/polynomials/RealFunction.java | 44 + .../sis/geometries/polynomials/RealPolynomial.java | 50 + .../apache/sis/geometries/processor/Processor.java | 46 + .../sis/geometries/processor/ProcessorUtils.java | 161 ++ .../processor/spatialanalysis2d/Distance.java | 170 ++ .../processor/spatialanalysis2d/Intersection.java | 243 +++ .../processor/spatialedition/ComputeAttribute.java | 110 ++ .../geometries/processor/spatialedition/To3D.java | 191 ++ .../processor/spatialedition/ToPrimitive.java | 283 +++ .../processor/spatialedition/Transform.java | 215 ++ .../processor/spatialrelations2d/Contains.java | 144 ++ .../org/apache/sis/geometries/rhumb/Rhumb.java | 40 + .../sis/geometries/simplify/TextureAtlas.java | 252 +++ .../sis/geometries/simplify/greedyinsert/Edge.java | 106 + .../simplify/greedyinsert/TINBuilder.java | 519 +++++ .../simplify/greedyinsert/TinDistance.java | 44 + .../simplify/greedyinsert/WTriangle.java | 368 ++++ .../apache/sis/geometries/spirals/Clothoid.java | 29 + .../org/apache/sis/geometries/spirals/Spiral.java | 41 + .../sis/geometries/splines/BSplineCurve.java | 29 + .../org/apache/sis/geometries/splines/Bezier.java | 29 + .../apache/sis/geometries/splines/CubicSpline.java | 29 + .../apache/sis/geometries/splines/KnotType.java | 32 + .../org/apache/sis/geometries/splines/NURB.java | 29 + .../sis/geometries/splines/PolynomialSpline.java | 38 + .../apache/sis/geometries/splines/SplineCurve.java | 49 + .../sis/geometries/splines/SplineCurveForm.java | 33 + .../geometries/splinesurfaces/BSplineSurface.java | 57 + .../splinesurfaces/BSplineSurfaceForm.java | 34 + .../sis/geometries/triangulate/EarClipping.java | 562 ++++++ .../geometries/triangulate/delaunay/Delaunay.java | 1047 ++++++++++ .../triangulate/delaunay/OrientedEdge.java | 354 ++++ .../triangulate/delaunay/OrientedTriangle.java | 315 +++ .../apache/sis/geometries/ArraySequenceTest.java | 132 ++ .../org/apache/sis/geometries/GeometriesTest.java | 237 +++ .../org/apache/sis/geometries/PreparedTINTest.java | 96 + .../sis/geometries/PrimitiveIndexesTest.java | 423 ++++ .../org/apache/sis/geometries/PrimitiveTest.java | 64 + .../sis/geometries/PrimitiveVisitorTest.java | 582 ++++++ .../org/apache/sis/geometries/TriangleTest.java | 161 ++ .../sis/geometries/index/MortonIteratorTest.java | 114 ++ .../geometries/math/AbstractTupleArrayTest.java | 349 ++++ .../sis/geometries/math/AbstractTupleTest.java | 296 +++ .../sis/geometries/math/AbstractVectorTest.java | 175 ++ .../org/apache/sis/geometries/math/MathsTest.java | 309 +++ .../apache/sis/geometries/math/QuaternionTest.java | 125 ++ .../math/TupleArrayConcatenatedTest.java | 107 + .../sis/geometries/math/TupleArrayNbTest.java | 35 + .../sis/geometries/math/TupleArrayNdTest.java | 36 + .../sis/geometries/math/TupleArrayNfTest.java | 35 + .../sis/geometries/math/TupleArrayNiTest.java | 35 + .../sis/geometries/math/TupleArrayNlTest.java | 35 + .../sis/geometries/math/TupleArrayNsTest.java | 35 + .../sis/geometries/math/TupleArrayNubTest.java | 35 + .../sis/geometries/math/TupleArrayNuiTest.java | 35 + .../sis/geometries/math/TupleArrayNusTest.java | 35 + .../sis/geometries/math/TupleArraysTest.java | 135 ++ .../apache/sis/geometries/math/VectorXbTest.java | 41 + .../apache/sis/geometries/math/VectorXdTest.java | 41 + .../apache/sis/geometries/math/VectorXfTest.java | 41 + .../apache/sis/geometries/math/VectorXiTest.java | 41 + .../apache/sis/geometries/math/VectorXlTest.java | 41 + .../apache/sis/geometries/math/VectorXsTest.java | 41 + .../apache/sis/geometries/math/VectorXubTest.java | 41 + .../apache/sis/geometries/math/VectorXuiTest.java | 41 + .../apache/sis/geometries/math/VectorXusTest.java | 41 + .../apache/sis/geometries/math/VectorsTest.java | 124 ++ .../geometries/operation/SutherlandHogmanTest.java | 58 + .../operation/spatialanalysis2d/IsoBandTest.java | 659 +++++++ .../processor/spatialanalysis2d/DistanceTest.java | 67 + .../spatialanalysis2d/IntersectionTest.java | 143 ++ .../processor/spatialedition/To3DTest.java | 74 + .../processor/spatialedition/ToPrimitiveTest.java | 144 ++ .../processor/spatialedition/TransformTest.java | 129 ++ .../sis/geometries/simplify/TextureAtlasTest.java | 121 ++ .../triangulate/delaunay/DelaunayTest.java | 348 ++++ .../triangulate/delaunay/OrientedEdgeTest.java | 106 + .../apache/sis/storage/geoheif/GeoHeifStore.java | 2 +- .../org/apache/sis/storage/isobmff/Reader.java | 2 +- netbeans-project/ivy.xml | 16 +- netbeans-project/nbproject/project.xml | 1 + .../main/org/apache/sis/storage/gdal/GDAL.java | 2 +- .../apache/sis/storage/panama/LibraryLoader.java | 2 +- settings.gradle.kts | 12 +- 357 files changed, 43270 insertions(+), 1289 deletions(-) diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java index a8f1ed8f1b,353eaaa8db..b4b046c3f1 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java @@@ -887,24 -880,14 +889,29 @@@ public class CoordinateOperationFinder endAtDimension += delta; final int numTrailingCoordinates = remainingSourceDimensions - endAtDimension; CoordinateOperation subOperation = info.operation; - if ((startAtDimension | numTrailingCoordinates) != 0) { + if ((firstAffectedCoordinate | numTrailingCoordinates) != 0) { + final Map<String,?> properties = IdentifiedObjects.getProperties(subOperation); + /* - * The DefaultPassThroughOperation constuctor expect a SingleOperation. - * In most case, the 'subOperation' is already of this kind. However if - * it is not, try to copy it in such object. ++ * The `DefaultPassThroughOperation` constuctor expects a `SingleOperation`. ++ * In most case, the `subOperation` is already of this kind. ++ * However if it is not, try to copy it in such object. + */ + final SingleOperation op; + if (SubTypes.isSingleOperation(subOperation)) { + op = (SingleOperation) subOperation; + } else { + final MathTransform subTransform = subOperation.getMathTransform(); + op = factorySIS.createSingleOperation(properties, + subOperation.getSourceCRS(), subOperation.getTargetCRS(), null, + new DefaultOperationMethod(subTransform), subTransform); + } - subOperation = new DefaultPassThroughOperation(properties, stepSourceCRS, stepTargetCRS, - op, startAtDimension, numTrailingCoordinates); + subOperation = new DefaultPassThroughOperation( - IdentifiedObjects.getProperties(subOperation), ++ properties, + stepSourceCRS, + stepTargetCRS, - subOperation, ++ op, + firstAffectedCoordinate, + numTrailingCoordinates); } /* * Concatenate the operation with the ones we have found so far, and use the current `stepTargetCRS` diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java index 2f0075b64b,75f660aebb..b6ab6e89f7 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java @@@ -18,13 -18,20 +18,17 @@@ package org.apache.sis.referencing.oper import java.util.List; import org.opengis.referencing.crs.*; + import org.opengis.referencing.operation.Matrix; import org.opengis.referencing.operation.CoordinateOperation; import org.opengis.referencing.operation.OperationNotFoundException; + import org.opengis.referencing.operation.NoninvertibleTransformException; import org.opengis.referencing.operation.TransformException; import org.opengis.util.FactoryException; + import org.apache.sis.referencing.internal.Resources; import org.apache.sis.referencing.operation.matrix.Matrices; import org.apache.sis.referencing.operation.matrix.MatrixSIS; + import org.apache.sis.referencing.operation.transform.MathTransforms; -// Specific to the geoapi-4.0 branch: -import org.apache.sis.referencing.crs.DefaultImageCRS; - /** * Information about the operation from a source component to a target component in {@code CompoundCRS} instances. diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java index 6388514777,968cc4e2d2..aeeae78b66 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java @@@ -46,11 -45,10 +45,10 @@@ import org.apache.sis.util.privy.String import org.apache.sis.io.wkt.Convention; import org.apache.sis.io.wkt.Formatter; import org.apache.sis.io.wkt.FormattableObject; - import org.apache.sis.util.logging.Logging; import org.apache.sis.util.resources.Errors; -// Specific to the geoapi-4.0 branch: -import org.opengis.coordinate.MismatchedDimensionException; +// Specific to the main and geoapi-3.1 branches: +import org.opengis.geometry.MismatchedDimensionException; /** diff --cc endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactoryTest.java index 5ea07b7b02,c7ce93f6f1..0402befb64 --- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactoryTest.java +++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/DefaultCoordinateOperationFactoryTest.java @@@ -333,9 -328,9 +333,9 @@@ public final class DefaultCoordinateOpe */ @Test public void testPositionVectorTransformation() throws ParseException, FactoryException, TransformException { - final CoordinateReferenceSystem sourceCRS = CommonCRS.WGS84.geographic(); + final CoordinateReferenceSystem sourceCRS = HardCodedCRS.WGS84_LATITUDE_FIRST; final CoordinateReferenceSystem targetCRS = parse(CoordinateOperationFinderTest.AGD66()); - final CoordinateOperation operation = factory.createOperation(sourceCRS, targetCRS, null); + final CoordinateOperation operation = factory.createOperation(sourceCRS, targetCRS, CONTEXT); transform = operation.getMathTransform(); tolerance = Formulas.LINEAR_TOLERANCE; λDimension = new int[] {0}; diff --cc endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/SelectionClause.java index 7cdf92c2a6,efafb0a78f..c456c25856 --- a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/SelectionClause.java +++ b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/SelectionClause.java @@@ -355,10 -355,10 +355,10 @@@ public final class SelectionClause exte */ @Override public void accept(final WarningEvent event) { - final LogRecord record = resources().getLogRecord( + final LogRecord record = resources().createLogRecord( Level.WARNING, Resources.Keys.IncompatibleLiteralCRS_2, - event.getOperatorType().flatMap(CodeList::identifier).orElse("?"), + event.getOperatorType().map(CodeList::identifier).orElse("?"), event.getParameter(ValueReference.class).map(ValueReference<?,?>::getXPath).orElse("?")); record.setThrown(event.exception); log(record);