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 e0d696a63a4003274c25847e2c0491b3f74fabe7 Merge: a2c13a9421 4bfbc548af Author: Martin Desruisseaux <[email protected]> AuthorDate: Thu Jan 22 18:36:27 2026 +0100 Merge branch 'geoapi-4.0' into geoapi-3.1: * Refactoring of arithmetic operations in filters. * New API for multi-dimensional coordinate operations. .../org.apache.sis.console/main/module-info.java | 14 +- .../apache/sis/console/ResourcesDownloader.java | 6 +- .../main/org/apache/sis/coverage/CategoryList.java | 2 +- .../org/apache/sis/coverage/CoverageCombiner.java | 2 +- .../org/apache/sis/coverage/SampleDimension.java | 28 +- .../coverage/grid/CoordinateOperationFinder.java | 136 ++-- .../apache/sis/coverage/grid/DefaultEvaluator.java | 21 +- .../apache/sis/coverage/grid/DimensionReducer.java | 105 ++- .../sis/coverage/grid/DimensionalityReduction.java | 2 +- .../apache/sis/coverage/grid/GridDerivation.java | 135 +++- .../org/apache/sis/coverage/grid/GridExtent.java | 6 +- .../org/apache/sis/coverage/grid/GridGeometry.java | 158 +++- .../sis/coverage/grid/TranslatedTransform.java | 281 ++++++++ .../apache/sis/feature/StringJoinOperation.java | 2 +- .../sis/feature/builder/FeatureTypeBuilder.java | 4 +- .../org/apache/sis/feature/internal/Resources.java | 2 +- .../sis/feature/internal/Resources.properties | 2 +- .../sis/feature/internal/Resources_fr.properties | 2 +- .../org/apache/sis/filter/ComparisonFilter.java | 6 +- .../apache/sis/filter/DefaultFilterFactory.java | 3 +- .../org/apache/sis/filter/IdentifierFilter.java | 2 +- .../main/org/apache/sis/filter/PropertyValue.java | 10 +- .../org/apache/sis/filter/base/BinaryFunction.java | 146 +--- .../sis/filter/base/BinaryFunctionWidening.java | 419 +++++++++++ .../apache/sis/filter/base/ConvertFunction.java | 9 +- .../main/org/apache/sis/filter/base/Node.java | 12 + .../sis/filter/{ => math}/ArithmeticFunction.java | 223 ++++-- .../org/apache/sis/filter/math/BinaryOperator.java | 10 +- .../sis/filter/sqlmm/GeometryConstructor.java | 2 +- .../apache/sis/filter/sqlmm/GeometryParser.java | 2 +- .../org/apache/sis/filter/sqlmm/OneGeometry.java | 6 +- .../main/org/apache/sis/filter/sqlmm/ST_Point.java | 2 +- .../org/apache/sis/filter/sqlmm/ST_Transform.java | 4 +- .../org/apache/sis/filter/sqlmm/TwoGeometries.java | 4 +- .../main/org/apache/sis/image/AnnotatedImage.java | 4 +- .../apache/sis/image/BandedSampleConverter.java | 4 +- .../main/org/apache/sis/image/DataType.java | 28 +- .../sis/image/internal/shared/ImageUtilities.java | 19 +- .../sis/image/internal/shared/TileOpExecutor.java | 2 +- .../sis/coverage/grid/GridCoverage2DTest.java | 24 +- .../sis/coverage/grid/GridDerivationTest.java | 25 + .../apache/sis/coverage/grid/GridGeometryTest.java | 37 +- .../org/apache/sis/filter/LogicalFilterTest.java | 12 +- .../sis/filter/visitor/FunctionNamesTest.java | 4 +- .../image/internal/shared/ImageUtilitiesTest.java | 14 +- .../org/apache/sis/metadata/PropertyAccessor.java | 8 +- .../apache/sis/metadata/PropertyInformation.java | 4 +- .../main/org/apache/sis/metadata/StateChanger.java | 2 +- .../org/apache/sis/util/iso/RecordDefinition.java | 4 +- .../main/org/apache/sis/util/iso/TypeNames.java | 6 +- .../main/org/apache/sis/util/iso/Types.java | 2 +- .../main/org/apache/sis/xml/LegacyCodes.java | 2 +- .../main/org/apache/sis/xml/Pooled.java | 6 +- .../apache/sis/xml/bind/FinalClassExtensions.java | 7 +- .../sis/metadata/PropertyConsistencyCheck.java | 22 +- .../org/apache/sis/metadata/iso/APIVerifier.java | 2 +- .../apache/sis/metadata/iso/AllMetadataTest.java | 1 + .../main/org/apache/sis/portrayal/Canvas.java | 2 +- .../org/apache/sis/portrayal/CanvasContext.java | 6 +- .../sis/geometry/AbstractDirectPosition.java | 34 +- .../main/org/apache/sis/geometry/Envelopes.java | 55 +- .../apache/sis/geometry/GeneralDirectPosition.java | 39 +- .../sis/geometry/ImmutableDirectPosition.java | 161 +++++ .../org/apache/sis/geometry/ImmutableEnvelope.java | 15 +- .../main/org/apache/sis/io/wkt/ElementKind.java | 4 +- .../main/org/apache/sis/io/wkt/Formatter.java | 4 +- .../org/apache/sis/io/wkt/MathTransformParser.java | 6 +- .../main/org/apache/sis/io/wkt/StoredTree.java | 8 +- .../main/org/apache/sis/io/wkt/WKTFormat.java | 4 +- .../sis/parameter/DefaultParameterDescriptor.java | 3 +- .../sis/parameter/DefaultParameterValue.java | 37 +- .../org/apache/sis/parameter/MatrixParameters.java | 14 +- .../main/org/apache/sis/parameter/Verifier.java | 15 +- .../main/org/apache/sis/referencing/CRS.java | 677 ++++++++++++++---- .../sis/referencing/MultiRegisterOperations.java | 1 + .../sis/referencing/cs/CoordinateSystems.java | 4 +- .../apache/sis/referencing/internal/Resources.java | 2 +- .../sis/referencing/internal/Resources.properties | 2 +- .../referencing/internal/Resources_fr.properties | 2 +- .../internal/shared/CoordinateOperations.java | 8 - .../internal/shared/DirectPositionView.java | 3 +- .../internal/shared/ExtendedPrecisionMatrix.java | 2 +- .../sis/referencing/internal/shared/Formulas.java | 9 - .../operation/CoordinateOperationContext.java | 257 +++++-- .../operation/CoordinateOperationFinder.java | 66 +- .../operation/CoordinateOperationRegistry.java | 92 +-- .../operation/InverseOperationMethod.java | 6 +- .../operation/MismatchedDatumException.java | 8 +- .../MissingSourceDimensionsException.java | 121 ++++ .../referencing/operation/SubOperationInfo.java | 321 +++++---- .../operation/TransformedCoordinateSet.java | 5 +- .../sis/referencing/operation/matrix/Matrices.java | 46 +- .../referencing/operation/matrix/MatrixSIS.java | 7 +- .../matrix/NoninvertibleMatrixException.java | 8 +- .../matrix/UnderdeterminedMatrixException.java | 81 +++ .../referencing/operation/matrix/package-info.java | 2 +- .../operation/projection/AuthalicConversion.java | 14 +- .../operation/projection/ConformalProjection.java | 8 +- .../operation/projection/MeridianArcBased.java | 33 +- .../transform/AbstractLinearTransform.java | 69 +- .../operation/transform/AbstractMathTransform.java | 5 + .../operation/transform/ConcatenatedTransform.java | 1 + .../operation/transform/CopyTransform.java | 16 +- .../operation/transform/IdentityTransform.java | 1 - .../operation/transform/LinearTransform1D.java | 49 +- .../operation/transform/MathTransforms.java | 4 +- .../operation/transform/ProjectiveTransform.java | 37 +- .../operation/transform/ScaleTransform.java | 3 +- .../operation/transform/TransformJoiner.java | 4 +- .../operation/transform/TranslationTransform.java | 3 +- .../sis/parameter/DefaultParameterValueTest.java | 2 +- .../test/org/apache/sis/referencing/CRSTest.java | 11 + .../referencing/operation/matrix/MatricesTest.java | 5 +- .../transform/ProjectiveTransformTest.java | 13 +- .../sis/storage/geotiff/MultiResolutionImage.java | 30 +- .../apache/sis/storage/geotiff/NativeMetadata.java | 4 +- .../apache/sis/storage/geotiff/reader/Type.java | 2 +- .../apache/sis/storage/netcdf/base/Convention.java | 25 +- .../apache/sis/storage/netcdf/base/DataType.java | 50 +- .../sis/storage/netcdf/base/GridMapping.java | 6 +- .../sis/storage/netcdf/base/RasterResource.java | 6 +- .../apache/sis/storage/netcdf/base/Variable.java | 8 +- .../sis/storage/netcdf/base/DataTypeTest.java | 25 +- .../sis/storage/sql/feature/FeatureAnalyzer.java | 4 +- .../sis/storage/sql/feature/ValueGetter.java | 8 +- .../apache/sis/io/stream/HyperRectangleReader.java | 20 +- .../org/apache/sis/storage/aggregate/Group.java | 2 +- .../apache/sis/storage/base/MetadataBuilder.java | 2 +- .../apache/sis/storage/base/TiledGridCoverage.java | 2 + .../sis/io/stream/HyperRectangleReaderTest.java | 4 +- .../org/apache/sis/converter/ArrayConverter.java | 6 +- .../apache/sis/converter/ConverterRegistry.java | 6 +- .../org/apache/sis/converter/NumberConverter.java | 10 +- .../org/apache/sis/converter/StringConverter.java | 6 +- .../org/apache/sis/converter/SystemRegistry.java | 5 +- .../main/org/apache/sis/io/CompoundFormat.java | 4 +- .../main/org/apache/sis/io/DefaultFormat.java | 29 +- .../main/org/apache/sis/math/ArrayVector.java | 46 +- .../org/apache/sis/math/ConcatenatedVector.java | 7 +- .../main/org/apache/sis/math/Fraction.java | 6 +- .../org/apache/sis/math/LinearlyDerivedVector.java | 5 +- .../main/org/apache/sis/math/NumberType.java | 791 +++++++++++++++++++++ .../main/org/apache/sis/math/PackedVector.java | 3 +- .../main/org/apache/sis/math/Statistics.java | 2 +- .../main/org/apache/sis/math/Vector.java | 75 +- .../org/apache/sis/measure/MeasurementRange.java | 18 +- .../main/org/apache/sis/measure/NumberRange.java | 60 +- .../main/org/apache/sis/measure/Range.java | 4 +- .../main/org/apache/sis/measure/RangeFormat.java | 19 +- .../main/org/apache/sis/measure/UnitRegistry.java | 4 +- .../package-info.java => pending/jdk/JDK12.java} | 31 +- .../apache/sis/setup/InstallationResources.java | 7 +- .../apache/sis/setup/OptionalInstallations.java | 60 +- .../main/org/apache/sis/setup/package-info.java | 2 +- .../main/org/apache/sis/util/Classes.java | 3 +- .../main/org/apache/sis/util/Locales.java | 2 +- .../main/org/apache/sis/util/Localized.java | 2 +- .../main/org/apache/sis/util/Numbers.java | 427 ++++------- .../main/org/apache/sis/util/collection/Cache.java | 4 +- .../org/apache/sis/util/collection/Containers.java | 2 +- .../org/apache/sis/util/collection/DerivedMap.java | 2 +- .../org/apache/sis/util/collection/RangeSet.java | 16 +- .../sis/util/collection/TreeTableFormat.java | 4 +- .../sis/util/collection/WeakValueHashMap.java | 4 +- .../sis/util/internal/shared/AbstractMap.java | 2 +- .../apache/sis/util/internal/shared/Cloner.java | 2 +- .../apache/sis/util/internal/shared/Strings.java | 18 + .../main/org/apache/sis/util/logging/Logging.java | 2 +- .../main/org/apache/sis/util/resources/Errors.java | 4 +- .../apache/sis/util/resources/Errors.properties | 2 +- .../apache/sis/util/resources/Errors_fr.properties | 2 +- .../test/org/apache/sis/math/NumberTypeTest.java | 201 ++++++ .../test/org/apache/sis/test/Assertions.java | 2 +- .../test/org/apache/sis/util/NumbersTest.java | 121 +--- .../org/apache/sis/geometries/math/DataType.java | 27 +- .../org/apache/sis/storage/isobmff/Reader.java | 4 +- .../apache/sis/storage/isobmff/gimi/ModelCRS.java | 2 +- netbeans-project/nbproject/project.xml | 1 + optional/src/org.apache.sis.gui/bundle/bin/sis | 2 +- .../src/org.apache.sis.gui/bundle/bin/sis_shell | 2 +- optional/src/org.apache.sis.gui/bundle/bin/sisfx | 2 +- .../src/org.apache.sis.gui/bundle/conf/imports.jsh | 2 +- .../org/apache/sis/gui/coverage/CellFormat.java | 4 +- .../main/module-info.java | 11 +- .../apache/sis/storage/gdal/GDALStoreProvider.java | 2 + .../org/apache/sis/storage/gdal/package-info.java | 4 +- 186 files changed, 4760 insertions(+), 1951 deletions(-) diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java index bd26960b06,ca2d90fdd4..8e0e4c8bca --- 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 @@@ -1206,8 -1187,8 +1211,8 @@@ public class CoordinateOperationFinder if (isIdentity(step3)) return concatenate(step1, step2); if (canHide(step1.getName())) return concatenate(concatenate(step1, step2), step3); if (canHide(step3.getName())) return concatenate(step1, concatenate(step2, step3)); - final Map<String,?> properties = defaultName(step1.getSourceCRS(), step3.getTargetCRS()); + final Map<String, ?> properties = defaultName(step1.getSourceCRS(), step3.getTargetCRS()); - return factory.createConcatenatedOperation(properties, null, null, step1, step2, step3); + return factory.createConcatenatedOperation(properties, step1, step2, step3); } /** @@@ -1313,9 -1298,11 +1322,12 @@@ * @param crs the CRS having a conversion that cannot be inverted. * @return a default error message. */ - private String canNotInvert(final DerivedCRS crs) { + @SuppressWarnings("deprecation") + private String canNotInvert(final GeneralDerivedCRS crs) { - return resources().getString(Resources.Keys.NonInvertibleOperation_1, label(crs.getConversionFromBase())); + final Locale locale = getLocale(); + return Resources.forLocale(locale).getString( + Resources.Keys.NonInvertibleOperation_1, + CRSPair.label(crs.getConversionFromBase(), locale)); } /**
