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));
      }
  
      /**

Reply via email to