You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2026/05/20 16:36:48 UTC
(sis) 01/01: Merge geoapi-4.0 into geoapi-3.1. The main work are related to improvement in GeoHEIF support.
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 3b34cf323f7961d7ca76ecbaf9df478c84b32e24
Merge: 60f07fc246 0d5e5d119d
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Wed May 20 18:34:47 2026 +0200
Merge geoapi-4.0 into geoapi-3.1.
The main work are related to improvement in GeoHEIF support.
.../main/org/apache/sis/console/CommandRunner.java | 4 +-
.../apache/sis/console/FormattedOutputCommand.java | 2 +-
.../org/apache/sis/console/TranslateCommand.java | 2 +-
.../coverage/grid/CoordinateOperationFinder.java | 44 +-
.../apache/sis/coverage/grid/GridCRSBuilder.java | 128 +++++-
.../apache/sis/coverage/grid/GridGeometryTest.java | 48 ++
.../org/apache/sis/metadata/MetadataStandard.java | 2 +-
.../org/apache/sis/metadata/TitleProperty.java | 2 +-
.../main/org/apache/sis/metadata/TreeNode.java | 90 +++-
.../org/apache/sis/metadata/TreeNodeChildren.java | 44 +-
.../org/apache/sis/metadata/TreeTableView.java | 67 +--
.../apache/sis/metadata/ValueExistencePolicy.java | 104 +++--
.../main/org/apache/sis/metadata/package-info.java | 2 +-
.../org/apache/sis/xml/PooledUnmarshaller.java | 8 +-
.../main/org/apache/sis/xml/TransformedEvent.java | 2 +-
.../main/org/apache/sis/xml/XML.java | 4 +-
.../main/org/apache/sis/xml/bind/gcx/Anchor.java | 9 +-
.../sis/xml/internal/shared/InputFactory.java | 42 +-
.../main/org/apache/sis/xml/package-info.java | 24 +-
.../apache/sis/metadata/TreeNodeChildrenTest.java | 14 +-
.../test/org/apache/sis/metadata/TreeNodeTest.java | 11 +-
.../apache/sis/metadata/TreeTableFormatTest.java | 15 +-
.../org/apache/sis/metadata/TreeTableViewTest.java | 3 +-
.../sis/xml/internal/shared/InputFactoryTest.java | 8 +-
.../main/org/apache/sis/io/wkt/WKTFormat.java | 4 +-
.../sis/referencing/cs/CoordinateSystems.java | 2 +-
.../referencing/datum/DefaultDatumEnsemble.java | 30 +-
.../apache/sis/referencing/datum/package-info.java | 2 +-
.../factory/CommonAuthorityFactory.java | 6 +-
.../referencing/factory/FactoryDataException.java | 2 +-
.../referencing/factory/GeodeticObjectFactory.java | 2 +-
...xception.java => InternalFactoryException.java} | 28 +-
.../internal/ParameterizedTransformBuilder.java | 4 +-
.../internal/shared/CoordinateOperations.java | 4 +-
.../internal/shared/OperationMethodExt.java | 73 +++
.../operation/AbstractCoordinateOperation.java | 8 +-
.../operation/AbstractSingleOperation.java | 4 +-
.../operation/CoordinateOperationContext.java | 2 +-
.../operation/CoordinateOperationFinder.java | 69 ++-
.../operation/CoordinateOperationRegistry.java | 14 +-
.../operation/DefaultConcatenatedOperation.java | 4 +-
.../DefaultCoordinateOperationFactory.java | 19 +-
.../sis/referencing/operation/DefaultFormula.java | 9 +-
.../operation/DefaultOperationMethod.java | 4 +-
.../referencing/operation/gridded/LoadedGrid.java | 2 +-
.../operation/projection/ZonedGridSystem.java | 3 +-
.../provider/FranceGeocentricInterpolation.java | 3 +-
.../GeocentricAffineBetweenGeographic.java | 3 +-
.../operation/provider/GeocentricToGeographic.java | 3 +-
.../operation/provider/Geographic3Dto2D.java | 3 +-
.../operation/provider/Spherical2Dto3D.java | 3 +-
.../operation/provider/VerticalOffset.java | 3 +-
.../transform/DefaultMathTransformFactory.java | 3 +-
.../transform/EllipsoidToRadiusTransform.java | 3 +-
.../operation/transform/MathTransformProvider.java | 31 +-
.../test/org/apache/sis/io/wkt/WKTFormatTest.java | 21 +-
.../operation/DefaultTransformationTest.java | 3 +-
.../main/org/apache/sis/storage/landsat/Band.java | 4 +-
.../org/apache/sis/storage/landsat/BandGroup.java | 2 +-
.../apache/sis/storage/landsat/LandsatStore.java | 2 +-
.../apache/sis/storage/landsat/MetadataReader.java | 2 +-
.../storage/landsat/LandsatStoreProviderTest.java | 2 +-
.../apache/sis/storage/geotiff/Compression.java | 2 +-
.../apache/sis/storage/geotiff/FormatModifier.java | 2 +-
.../apache/sis/storage/geotiff/GeoTiffStore.java | 4 +-
.../apache/sis/storage/geotiff/NativeMetadata.java | 106 ++++-
.../org/apache/sis/storage/geotiff/Writer.java | 2 +-
.../geotiff/reader/GridGeometryBuilder.java | 2 +-
.../geotiff/reader/ImageMetadataBuilder.java | 2 +-
.../sis/storage/geotiff/reader/Localization.java | 3 +-
.../sis/storage/geotiff/reader/XMLMetadata.java | 5 +-
.../sis/storage/geotiff/writer/GeoEncoder.java | 2 +-
.../storage/geotiff/reader/XMLMetadataTest.java | 2 +-
.../apache/sis/storage/netcdf/MetadataReader.java | 2 +-
.../org/apache/sis/storage/netcdf/NetcdfStore.java | 2 +-
.../sis/storage/netcdf/NetcdfStoreProvider.java | 2 +-
.../apache/sis/storage/netcdf/base/Decoder.java | 2 +-
.../sis/storage/netcdf/base/RasterResource.java | 2 +-
.../sis/storage/netcdf/classic/ChannelDecoder.java | 2 +-
.../sis/storage/netcdf/ucar/DecoderWrapper.java | 2 +-
.../main/org/apache/sis/storage/sql/SQLStore.java | 4 +-
.../apache/sis/storage/sql/feature/Database.java | 2 +-
.../sis/storage/sql/feature/SchemaModifier.java | 4 +-
.../sis/storage/sql/postgis/PostgresTest.java | 2 +-
.../main/org/apache/sis/storage/gpx/Store.java | 2 +-
.../main/org/apache/sis/storage/gpx/Types.java | 2 +-
.../sis/storage/xml/stream/StaxDataStore.java | 41 +-
.../org/apache/sis/storage/gpx/ReaderTest.java | 2 +-
.../org/apache/sis/storage/gpx/UpdaterTest.java | 2 +-
.../org/apache/sis/storage/gpx/WriterTest.java | 2 +-
.../org.apache.sis.storage/main/module-info.java | 13 +
.../apache/sis/io/stream/InternalOptionKey.java | 2 +-
.../org/apache/sis/storage/AbstractFeatureSet.java | 2 +-
.../sis/storage/AbstractGridCoverageResource.java | 2 +-
.../org/apache/sis/storage/AbstractResource.java | 2 +-
.../org/apache/sis/storage/CoverageSubset.java | 2 +-
.../main/org/apache/sis/storage/DataOptionKey.java | 83 +---
.../main/org/apache/sis/storage/DataStore.java | 3 +-
.../org/apache/sis/storage/DataStoreProvider.java | 13 +
.../org/apache/sis/storage/DataStoreRegistry.java | 2 +-
.../main/org/apache/sis/storage/FeatureSubset.java | 2 +-
.../sis/storage/InternalDataStoreException.java | 9 +-
.../main/org/apache/sis/storage/OptionKey.java | 297 ++++++++++++
.../org/apache/sis/storage/StorageConnector.java | 19 +-
.../storage/aggregate/AggregatedFeatureSet.java | 2 +-
.../sis/storage/aggregate/AggregatedResource.java | 2 +-
.../aggregate/BandAggregateGridResource.java | 2 +-
.../aggregate/ConcatenatedGridResource.java | 2 +-
.../sis/storage/aggregate/GroupAggregate.java | 2 +-
.../main/org/apache/sis/storage/base/CodeType.java | 12 +-
.../sis/storage/base/DocumentedStoreProvider.java | 2 +-
.../org/apache/sis/storage/base/PRJDataStore.java | 2 +-
.../org/apache/sis/storage/base/URIDataStore.java | 12 +-
.../sis/storage/base/URIDataStoreProvider.java | 14 +-
.../org/apache/sis/storage/base/package-info.java | 2 +-
.../main/org/apache/sis/storage/csv/Store.java | 9 +-
.../org/apache/sis/storage/csv/StoreProvider.java | 6 +-
.../org/apache/sis/storage/csv/package-info.java | 2 +-
.../apache/sis/storage/esri/AsciiGridStore.java | 6 +-
.../org/apache/sis/storage/esri/RasterStore.java | 2 +-
.../main/org/apache/sis/storage/folder/Store.java | 7 +-
.../apache/sis/storage/folder/StoreProvider.java | 4 +-
.../apache/sis/storage/folder/WritableStore.java | 2 +-
.../apache/sis/storage/image/WorldFileStore.java | 4 +-
.../apache/sis/storage/image/WritableStore.java | 2 +-
.../storage/{base => metadata}/LegalSymbols.java | 3 +-
.../{base => metadata}/MetadataBuilder.java | 3 +-
.../{base => metadata}/MetadataFetcher.java | 8 +-
.../{base => metadata}/ResourceLineage.java | 2 +-
.../storage/{base => metadata}/package-info.java | 4 +-
.../sis/storage/modifier/CoverageModifier.java | 10 +-
.../org/apache/sis/storage/tiling/TileMatrix.java | 2 +-
.../apache/sis/storage/tiling/TileMatrixSet.java | 2 +-
.../main/org/apache/sis/storage/wkt/Store.java | 4 +-
.../main/org/apache/sis/storage/xml/Store.java | 4 +-
.../org/apache/sis/storage/DataOptionKeyTest.java | 46 --
.../org/apache/sis/storage}/OptionKeyTest.java | 23 +-
.../apache/sis/storage/StorageConnectorTest.java | 1 -
.../apache/sis/storage/csv/StoreProviderTest.java | 2 +-
.../test/org/apache/sis/storage/csv/StoreTest.java | 5 +-
.../apache/sis/storage/esri/WritableStoreTest.java | 2 +-
.../sis/storage/image/WorldFileStoreTest.java | 2 +-
.../{base => metadata}/MetadataBuilderTest.java | 2 +-
.../main/org/apache/sis/io/CompoundFormat.java | 77 ++--
.../main/org/apache/sis/io/LineAppender.java | 6 +-
.../main/org/apache/sis/math/StatisticsFormat.java | 14 +-
.../main/org/apache/sis/setup/GeometryLibrary.java | 2 +-
.../main/org/apache/sis/setup/OptionKey.java | 46 +-
.../main/org/apache/sis/setup/package-info.java | 5 +-
.../sis/util/AbstractInternationalString.java | 22 +-
.../main/org/apache/sis/util/Exceptions.java | 6 +-
.../org/apache/sis/util/collection/TreeTable.java | 18 +-
.../sis/util/collection/TreeTableFormat.java | 67 +--
.../apache/sis/util/internal/shared/Constants.java | 2 +-
.../sis/util/internal/shared/PropertyFormat.java | 74 +--
.../internal/shared/TreeFormatCustomization.java | 51 ---
.../sis/util/internal/shared/TreeTableForGUI.java | 42 ++
.../org/apache/sis/util/resources/Vocabulary.java | 10 +
.../sis/util/resources/Vocabulary.properties | 2 +
.../sis/util/resources/Vocabulary_fr.properties | 2 +
.../org/apache/sis/geometries/scene/SceneNode.java | 76 +++
.../main/org/apache/sis/geometries/scene/Skin.java | 1 +
.../sis/geometries/scene/physics/Collider.java | 83 ++++
.../geometries/scene/physics/ColliderGeometry.java | 65 +++
.../geometries/scene/physics/CollisionFilter.java | 85 ++++
.../apache/sis/geometries/scene/physics/Joint.java | 360 +++++++++++++++
.../sis/geometries/scene/physics/Motion.java | 180 ++++++++
.../geometries/scene/physics/PhysicalMaterial.java | 130 ++++++
.../sis/geometries/scene/physics/Trigger.java | 87 ++++
.../storage/coveragejson/CoverageJsonStore.java | 2 +-
.../sis/storage/geoheif/CoverageBuilder.java | 9 +-
.../apache/sis/storage/geoheif/GeoHeifStore.java | 5 +-
.../sis/storage/geoheif/UncompressedImage.java | 2 +-
.../main/org/apache/sis/storage/isobmff/Box.java | 4 +-
.../apache/sis/storage/isobmff/BoxRegistry.java | 9 +
.../apache/sis/storage/isobmff/ContainerBox.java | 15 +-
.../org/apache/sis/storage/isobmff/Extension.java | 20 +-
.../org/apache/sis/storage/isobmff/FullBox.java | 41 +-
.../{gimi/package-info.java => Incomplete.java} | 19 +-
.../sis/storage/isobmff/MainBoxRegistry.java | 2 +-
.../apache/sis/storage/isobmff/NodeSummary.java | 59 +++
.../org/apache/sis/storage/isobmff/Reader.java | 19 +-
.../main/org/apache/sis/storage/isobmff/Root.java | 2 +-
.../org/apache/sis/storage/isobmff/TreeNode.java | 507 +++++++++++++++------
.../storage/isobmff/base/ColourInformation.java | 2 +-
.../sis/storage/isobmff/base/CombinaisonType.java | 2 +-
.../apache/sis/storage/isobmff/base/Copyright.java | 3 +-
.../sis/storage/isobmff/base/EntityToGroup.java | 2 +
.../storage/isobmff/base/FDItemInfoExtension.java | 4 +-
.../apache/sis/storage/isobmff/base/FileType.java | 2 +-
.../apache/sis/storage/isobmff/base/GroupList.java | 2 +-
.../sis/storage/isobmff/base/HandlerReference.java | 2 +-
.../storage/isobmff/base/IdentifiedMediaData.java | 2 +-
.../apache/sis/storage/isobmff/base/ItemInfo.java | 17 +-
.../sis/storage/isobmff/base/ItemInfoEntry.java | 9 +-
.../sis/storage/isobmff/base/ItemLocation.java | 2 +-
.../sis/storage/isobmff/base/ItemProperties.java | 40 +-
.../isobmff/base/ItemPropertyAssociation.java | 41 +-
.../isobmff/base/ItemPropertyContainer.java | 2 +-
.../sis/storage/isobmff/base/ItemReference.java | 5 +-
.../org/apache/sis/storage/isobmff/base/Meta.java | 5 +-
.../org/apache/sis/storage/isobmff/base/Movie.java | 2 +-
.../sis/storage/isobmff/base/MovieHeader.java | 5 +-
.../sis/storage/isobmff/base/OriginalFileType.java | 2 +-
.../sis/storage/isobmff/base/PrimaryItem.java | 2 +-
.../isobmff/base/ProgressiveDownloadInfo.java | 5 +-
.../isobmff/base/SingleItemTypeReference.java | 2 +-
.../org/apache/sis/storage/isobmff/base/Track.java | 2 +-
.../sis/storage/isobmff/base/TrackHeader.java | 27 +-
.../apache/sis/storage/isobmff/base/UserData.java | 2 +-
.../storage/isobmff/{gimi => geo}/ModelCRS.java | 9 +-
.../isobmff/{gimi => geo}/ModelTiePoint.java | 29 +-
.../isobmff/{gimi => geo}/ModelTransformation.java | 6 +-
.../isobmff/geo/TiledImageConfiguration.java | 164 +++++++
.../isobmff/{gimi => geo}/UnknownProperty.java | 4 +-
.../isobmff/{gimi => geo}/package-info.java | 2 +-
.../isobmff/gimi/TiledImageConfiguration.java | 56 ---
.../sis/storage/isobmff/image/CreationTime.java | 1 +
.../storage/isobmff/image/ModificationTime.java | 1 +
.../sis/storage/isobmff/image/UserDescription.java | 3 +-
.../sis/storage/isobmff/mpeg/ChromaLocation.java | 5 +-
.../apache/sis/storage/isobmff/mpeg/Component.java | 1 +
.../isobmff/mpeg/ComponentReferenceLevel.java | 5 +-
.../isobmff/mpeg/DepthMappingInformation.java | 5 +-
.../storage/isobmff/mpeg/DisparityInformation.java | 5 +-
.../sis/storage/isobmff/mpeg/FieldInterlace.java | 5 +-
.../storage/isobmff/mpeg/FieldInterlaceType.java | 5 +-
.../isobmff/mpeg/FramePackingInformation.java | 5 +-
.../mpeg/PolarizationPatternDefinition.java | 5 +-
.../storage/isobmff/mpeg/SensorBadPixelsMap.java | 5 +-
.../mpeg/SensorNonUniformityCorrection.java | 5 +-
.../sis/storage/isobmff/mpeg/TAIClockInfo.java | 6 +-
.../sis/storage/isobmff/mpeg/TAITimeStamp.java | 5 +-
.../isobmff/mpeg/UncompressedFrameConfig.java | 2 +-
.../storage/isobmff/video/ContentDescribes.java | 5 +-
.../isobmff/{gimi => geo}/ExtensionTest.java | 4 +-
.../org/apache/sis/storage/geopackage/Content.java | 2 +-
.../sis/storage/geopackage/GpkgStoreProvider.java | 2 +-
.../apache/sis/storage/geopackage/Initializer.java | 2 +-
.../sis/storage/geopackage/GpkgStoreTest.java | 2 +-
.../conformance/CoreConformanceTest.java | 2 +-
.../main/org/apache/sis/storage/gsf/GSFStore.java | 2 +-
.../sis/storage/shapefile/ShapefileProvider.java | 13 +-
.../sis/storage/shapefile/ShapefileStore.java | 39 +-
.../apache/sis/storage/shapefile/dbf/DBFField.java | 2 +-
.../sis/storage/shapefile/shp/ShapeRecord.java | 1 +
.../sis/storage/shapefile/ShapefileStoreTest.java | 32 ++
.../sis/storage/shapefile/dbf/DBFIOTest.java | 2 +-
.../apache/sis/storage/shapefile/dbf/Snippets.java | 2 +-
.../test/org/apache/sis/storage/shapefile/noid.cpg | 1 +
.../test/org/apache/sis/storage/shapefile/noid.dbf | Bin 0 -> 147 bytes
.../test/org/apache/sis/storage/shapefile/noid.prj | 1 +
.../test/org/apache/sis/storage/shapefile/noid.shp | Bin 0 -> 128 bytes
.../test/org/apache/sis/storage/shapefile/noid.shx | Bin 0 -> 108 bytes
.../sis/storage/shapefile/shp/ShapeIOTest.java | 2 +-
.../apache/sis/storage/shapefile/shp/Snippets.java | 2 +-
.../apache/sis/gui/coverage/BandRangeTable.java | 6 +-
.../sis/gui/coverage/ImagePropertyExplorer.java | 12 +-
.../org/apache/sis/gui/dataset/FeatureTable.java | 19 +-
.../sis/gui/internal/IdentityValueFactory.java | 4 +-
.../sis/gui/internal/PropertyValueFormats.java | 4 +-
.../sis/gui/internal/PropertyValueFormatter.java | 2 +-
.../org/apache/sis/gui/metadata/MetadataTree.java | 157 +++++--
.../sis/gui/metadata/StandardMetadataTree.java | 10 +-
.../org/apache/sis/gui/metadata/package-info.java | 2 +-
.../org/apache/sis/storage/gdal/GDALStore.java | 4 +-
.../apache/sis/storage/gdal/GDALStoreProvider.java | 2 +-
.../org/apache/sis/storage/gdal/TiledResource.java | 2 +-
268 files changed, 3675 insertions(+), 1373 deletions(-)
diff --cc endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/TreeNodeChildrenTest.java
index 41e599d38c,b38e966ce3..e59dfb3026
--- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/TreeNodeChildrenTest.java
+++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/TreeNodeChildrenTest.java
@@@ -69,9 -72,9 +69,9 @@@ public final class TreeNodeChildrenTes
* └─Other citation details…… Some other details</pre>
*/
static DefaultCitation metadataWithoutCollections() {
- final DefaultCitation citation = new DefaultCitation("Some title");
+ final var citation = new DefaultCitation("Some title");
citation.setEdition(new SimpleInternationalString("Some edition"));
- citation.setOtherCitationDetails(Set.of(new SimpleInternationalString("Some other details")));
+ citation.setOtherCitationDetails(new SimpleInternationalString("Some other details"));
return citation;
}
diff --cc endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/TreeTableFormatTest.java
index 3a76924aa9,ad562b03ac..998111f276
--- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/TreeTableFormatTest.java
+++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/TreeTableFormatTest.java
@@@ -106,13 -107,13 +107,13 @@@ public final class TreeTableFormatTest
*/
@Test
public void testProcessing() {
- final DefaultCitation titled = new DefaultCitation("Some specification");
- final DefaultCitation coded = new DefaultCitation();
- final DefaultCitation untitled = new DefaultCitation();
+ final var titled = new DefaultCitation("Some specification");
+ final var coded = new DefaultCitation();
+ final var untitled = new DefaultCitation();
titled .setPresentationForms(Set.of(PresentationForm.DOCUMENT_HARDCOPY));
coded .setPresentationForms(Set.of(PresentationForm.IMAGE_HARDCOPY));
- untitled.setCitedResponsibleParties(Set.of(new DefaultResponsibility(Role.AUTHOR, null, null)));
+ untitled.setCitedResponsibleParties(Set.of(new DefaultResponsibleParty(Role.AUTHOR)));
- final DefaultProcessing processing = new DefaultProcessing();
+ final var processing = new DefaultProcessing();
processing.setDocumentations(List.of(titled, coded, untitled));
final String text = format.format(processing.asTreeTable());
assertMultilinesEquals(
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
index af00add12d,baa510d453..611c8d7e25
--- 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
@@@ -1150,8 -1129,8 +1153,8 @@@ public class CoordinateOperationFinder
if (isAxisChange1 && mt1.getSourceDimensions() == mt1.getTargetDimensions()) main = step2;
if (isAxisChange2 && mt2.getSourceDimensions() == mt2.getTargetDimensions()) main = step1;
}
- if (main instanceof SingleOperation) {
+ if (AbstractCoordinateOperation.isSingleOperation(main)) {
- final SingleOperation op = (SingleOperation) main;
+ final var op = (SingleOperation) main;
main = createFromMathTransform(
new HashMap<>(IdentifiedObjects.getProperties(main)),
sourceCRS,
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
index a9d6d160bf,d64f692bd4..0a1ffe8197
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
@@@ -1033,8 -1023,8 +1033,8 @@@ class CoordinateOperationRegistry
* For example the "Affine" set of parameters depend on the number of dimensions.
* The capability to resize an operation method is specific to Apache SIS.
*/
- if (operation instanceof SingleOperation) {
+ if (AbstractCoordinateOperation.isSingleOperation(operation)) {
- final SingleOperation single = (SingleOperation) operation;
+ final var single = (SingleOperation) operation;
properties.put(CoordinateOperations.PARAMETERS_KEY, single.getParameterValues());
if (method == null) {
method = single.getMethod();