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 33688738c620102d6ce5fdb5a36e3d0d91f95261 Merge: 1437fa191c 175b9f0ced Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Sun Apr 16 19:12:56 2023 +0200 Merge branch 'geoapi-4.0' into geoapi-3.1. The main work since previous merge is the integration of the "feat/resource-processor" branch. It brings "band aggregation" operations on images, grid coverages and grid resources. .../apache/sis/gui/coverage/CoverageCanvas.java | 59 +- .../apache/sis/gui/coverage/CoverageControls.java | 5 +- .../apache/sis/gui/coverage/CoverageStyling.java | 120 ++- .../org/apache/sis/gui/map/ValuesFormatter.java | 7 +- .../apache/sis/internal/gui/ImageConverter.java | 13 +- .../apache/sis/internal/gui/control/ColorCell.java | 33 +- .../internal/gui/control/ColorColumnHandler.java | 31 +- .../apache/sis/internal/gui/control/ColorRamp.java | 51 +- .../sis/internal/gui/control/ValueColorMapper.java | 12 - .../sis/internal/gui/control/package-info.java | 2 +- .../sis/gui/coverage/CoverageStylingApp.java | 5 +- .../apache/sis/cloud/aws/s3/CachedByteChannel.java | 2 +- .../org/apache/sis/coverage/BandedCoverage.java | 9 +- .../java/org/apache/sis/coverage/Category.java | 4 +- .../org/apache/sis/coverage/SampleDimension.java | 109 ++- .../coverage/grid/BandAggregateGridCoverage.java | 323 +++++++ .../sis/coverage/grid/BufferedGridCoverage.java | 22 +- .../sis/coverage/grid/ConvertedGridCoverage.java | 2 +- .../coverage/grid/CoordinateOperationFinder.java | 5 +- .../apache/sis/coverage/grid/DefaultEvaluator.java | 12 +- .../sis/coverage/grid/DerivedGridCoverage.java | 27 +- .../apache/sis/coverage/grid/DimensionReducer.java | 5 +- .../sis/coverage/grid/DimensionalityReduction.java | 989 +++++++++++++++++++++ .../sis/coverage/grid/DisjointExtentException.java | 9 +- .../coverage/grid/FractionalGridCoordinates.java | 6 +- .../org/apache/sis/coverage/grid/GridCoverage.java | 84 +- .../apache/sis/coverage/grid/GridCoverage2D.java | 2 + .../sis/coverage/grid/GridCoverageBuilder.java | 26 +- .../sis/coverage/grid/GridCoverageProcessor.java | 451 +++++++++- .../org/apache/sis/coverage/grid/GridExtent.java | 261 +++--- .../org/apache/sis/coverage/grid/GridGeometry.java | 10 +- .../apache/sis/coverage/grid/GridOrientation.java | 2 +- .../apache/sis/coverage/grid/ImageRenderer.java | 103 ++- .../sis/coverage/grid/ReducedGridCoverage.java | 160 ++++ .../sis/coverage/grid/ResampledGridCoverage.java | 3 +- .../apache/sis/coverage/grid/SliceGeometry.java | 25 +- .../java/org/apache/sis/filter/LogicalFilter.java | 5 +- .../java/org/apache/sis/image/AnnotatedImage.java | 12 +- .../org/apache/sis/image/BandAggregateImage.java | 338 +++++++ .../java/org/apache/sis/image/BandSelectImage.java | 152 +++- .../org/apache/sis/image/BandSharedRaster.java | 181 ++++ .../java/org/apache/sis/image/BandSharing.java | 377 ++++++++ .../apache/sis/image/BandedSampleConverter.java | 180 ++-- .../main/java/org/apache/sis/image/Colorizer.java | 348 ++++++++ .../java/org/apache/sis/image/ComputedImage.java | 88 +- .../java/org/apache/sis/image/ImageAdapter.java | 6 +- .../java/org/apache/sis/image/ImageProcessor.java | 408 ++++++++- .../java/org/apache/sis/image/Interpolation.java | 6 +- .../main/java/org/apache/sis/image/MaskImage.java | 2 +- .../org/apache/sis/image/MultiSourceImage.java | 148 +++ .../org/apache/sis/image/MultiSourceLayout.java | 414 +++++++++ .../org/apache/sis/image/MultiSourcePrefetch.java | 178 ++++ .../java/org/apache/sis/image/PlanarImage.java | 95 +- .../java/org/apache/sis/image/RecoloredImage.java | 47 +- .../java/org/apache/sis/image/ResampledImage.java | 10 +- .../org/apache/sis/image/SourceAlignedImage.java | 8 +- .../main/java/org/apache/sis/image/Transferer.java | 55 +- .../java/org/apache/sis/image/UserProperties.java | 124 +++ .../java/org/apache/sis/image/Visualization.java | 244 +++-- .../apache/sis/image/WritableComputedImage.java | 177 ++++ .../java/org/apache/sis/index/tree/PointTree.java | 2 +- .../sis/internal/coverage/CommonDomainFinder.java | 376 ++++++++ .../sis/internal/coverage/MultiSourceArgument.java | 623 +++++++++++++ .../sis/internal/coverage}/RangeArgument.java | 46 +- .../sis/internal/coverage/SampleDimensions.java | 56 +- .../j2d/{Colorizer.java => ColorModelBuilder.java} | 256 ++++-- .../internal/coverage/j2d/ColorModelFactory.java | 336 ++++--- .../sis/internal/coverage/j2d/ColorModelType.java | 2 +- .../sis/internal/coverage/j2d/ColorsForRange.java | 166 +++- .../sis/internal/coverage/j2d/ImageLayout.java | 34 +- .../sis/internal/coverage/j2d/ImageUtilities.java | 78 +- .../coverage/j2d/MultiBandsIndexColorModel.java | 23 +- .../sis/internal/coverage/j2d/ObservableImage.java | 289 ++++++ .../sis/internal/coverage/j2d/RasterFactory.java | 34 +- .../internal/coverage/j2d/SampleModelFactory.java | 2 +- .../internal/coverage/j2d/ScaledColorModel.java | 15 +- .../internal/coverage/j2d/ScaledColorSpace.java | 31 +- .../internal/coverage/j2d/WritableTiledImage.java | 8 +- .../sis/internal/coverage/j2d/WriteSupport.java | 100 --- .../apache/sis/internal/coverage/package-info.java | 2 +- .../org/apache/sis/internal/feature/Resources.java | 40 + .../sis/internal/feature/Resources.properties | 8 + .../sis/internal/feature/Resources_fr.properties | 8 + .../apache/sis/internal/filter/CopyVisitor.java | 712 +++++++++++++++ .../apache/sis/internal/filter/EditVisitor.java | 56 ++ .../apache/sis/internal/filter/package-info.java | 2 +- .../sis/internal/filter/sqlmm/SpatialFunction.java | 23 +- .../grid/BandAggregateGridCoverageTest.java | 183 ++++ .../coverage/grid/ConvertedGridCoverageTest.java | 24 +- .../coverage/grid/DimensionalityReductionTest.java | 194 ++++ .../apache/sis/coverage/grid/GridGeometryTest.java | 40 +- .../apache/sis/image/BandAggregateImageTest.java | 536 +++++++++++ .../org/apache/sis/image/BandSelectImageTest.java | 79 +- .../org/apache/sis/image/ImageProcessorTest.java | 62 +- .../apache/sis/image/StatisticsCalculatorTest.java | 2 +- .../java/org/apache/sis/image/TiledImageMock.java | 66 +- .../sis/internal/coverage}/RangeArgumentTest.java | 18 +- ...lorizerTest.java => ColorModelBuilderTest.java} | 20 +- .../sis/internal/filter/CopyVisitorTest.java | 77 ++ .../sis/internal/filter/FilterFactoryMock.java | 562 ++++++++++++ .../apache/sis/internal/filter/FunctionMock.java | 91 ++ .../sis/internal/filter/ValueReferenceMock.java | 82 ++ .../apache/sis/test/suite/FeatureTestSuite.java | 9 +- .../apache/sis/internal/metadata/sql/Dialect.java | 31 +- .../org/apache/sis/util/iso/DefaultScopedName.java | 2 +- .../java/org/apache/sis/test/sql/TestDatabase.java | 24 +- .../sis/internal/map/coverage/RenderingData.java | 26 +- .../java/org/apache/sis/geometry/Envelopes.java | 2 +- .../referencing/provider/DatumShiftGridLoader.java | 4 +- .../apache/sis/parameter/ParameterValueList.java | 2 +- .../main/java/org/apache/sis/referencing/CRS.java | 40 +- .../referencing/factory/sql/AuthorityCodes.java | 2 +- .../operation/DefaultPassThroughOperation.java | 141 +-- .../operation/builder/LinearTransformBuilder.java | 2 +- .../referencing/operation/projection/Mercator.java | 4 +- .../operation/transform/MathTransforms.java | 37 + .../operation/transform/PassThroughTransform.java | 127 ++- .../operation/transform/TransformSeparator.java | 55 +- .../operation/transform/MathTransformTestCase.java | 4 +- .../transform/PassThroughTransformTest.java | 65 +- .../apache/sis/internal/system/Configuration.java | 2 +- .../org/apache/sis/internal/util/Numerics.java | 13 + .../java/org/apache/sis/measure/NumberRange.java | 7 +- .../main/java/org/apache/sis/measure/Range.java | 23 +- .../java/org/apache/sis/measure/SystemUnit.java | 2 +- .../java/org/apache/sis/util/ArgumentChecks.java | 112 ++- .../main/java/org/apache/sis/util/ArraysExt.java | 140 +-- .../src/main/java/org/apache/sis/util/Version.java | 2 +- .../sis/util/collection/WeakValueHashMap.java | 89 +- .../java/org/apache/sis/util/package-info.java | 2 +- .../org/apache/sis/util/resources/Vocabulary.java | 5 + .../sis/util/resources/Vocabulary.properties | 1 + .../sis/util/resources/Vocabulary_fr.properties | 1 + .../java/org/apache/sis/measure/RangeTest.java | 17 +- .../org/apache/sis/measure/UnitFormatTest.java | 2 +- .../java/org/apache/sis/measure/UnitsTest.java | 2 +- .../org/apache/sis/util/ArgumentChecksTest.java | 6 +- .../java/org/apache/sis/util/ArraysExtTest.java | 32 +- .../apache/sis/storage/geotiff/GeoCodesTest.java | 1 - .../org/apache/sis/internal/netcdf/Convention.java | 3 +- .../org/apache/sis/internal/netcdf/Raster.java | 11 +- .../apache/sis/internal/netcdf/RasterResource.java | 6 +- .../apache/sis/internal/sql/feature/Database.java | 31 +- .../sis/internal/sql/feature/ValueGetter.java | 139 ++- .../sis/internal/sql/feature/package-info.java | 2 +- .../apache/sis/internal/sql/postgis/Postgres.java | 9 +- .../sis/internal/sql/postgis/RasterReader.java | 3 +- .../sis/internal/sql/postgis/package-info.java | 2 +- .../sql/feature/TemporalValueGetterTest.java | 238 +++++ .../org/apache/sis/storage/sql/SQLStoreTest.java | 104 +-- .../apache/sis/storage/sql/TestOnAllDatabases.java | 99 +++ .../org/apache/sis/test/suite/SQLTestSuite.java | 1 + .../sis/internal/storage/GridResourceWrapper.java | 4 + .../sis/internal/storage/MemoryFeatureSet.java | 10 +- .../sis/internal/storage/MemoryGridResource.java | 44 +- .../org/apache/sis/internal/storage/Resources.java | 14 +- .../sis/internal/storage/Resources.properties | 2 - .../sis/internal/storage/Resources_fr.properties | 2 - .../sis/internal/storage/TiledGridCoverage.java | 2 +- .../sis/internal/storage/TiledGridResource.java | 4 +- .../sis/internal/storage/esri/AsciiGridStore.java | 2 +- .../sis/internal/storage/esri/RasterStore.java | 18 +- .../sis/internal/storage/esri/RawRasterReader.java | 6 +- .../sis/internal/storage/esri/RawRasterStore.java | 2 +- .../apache/sis/internal/storage/folder/Store.java | 2 +- .../internal/storage/image/WorldFileResource.java | 2 +- .../sis/internal/storage/io/IOUtilities.java | 6 +- .../org/apache/sis/storage/AbstractFeatureSet.java | 14 +- .../sis/storage/AbstractGridCoverageResource.java | 14 +- .../org/apache/sis/storage/AbstractResource.java | 20 +- .../java/org/apache/sis/storage/CoverageQuery.java | 123 ++- .../org/apache/sis/storage/CoverageSubset.java | 186 ++-- .../java/org/apache/sis/storage/FeatureSubset.java | 4 +- .../apache/sis/storage/GridCoverageResource.java | 6 +- .../org/apache/sis/storage/StorageConnector.java | 44 +- .../storage/aggregate/AggregatedFeatureSet.java | 13 +- .../sis/storage/aggregate/AggregatedResource.java | 22 +- .../aggregate/BandAggregateGridResource.java | 450 ++++++++++ .../storage/aggregate/ConcatenatedFeatureSet.java | 8 +- .../aggregate/ConcatenatedGridCoverage.java | 2 +- .../aggregate/ConcatenatedGridResource.java | 99 ++- .../sis/storage/aggregate/CoverageAggregator.java | 252 +++++- .../apache/sis/storage/aggregate/GridSlice.java | 79 +- .../sis/storage/aggregate/GridSliceLocator.java | 3 +- .../org/apache/sis/storage/aggregate/Group.java | 4 +- .../sis/storage/aggregate/GroupAggregate.java | 33 +- .../apache/sis/storage/aggregate/GroupByCRS.java | 4 +- .../sis/storage/aggregate/GroupBySample.java | 8 +- .../sis/storage/aggregate/GroupByTransform.java | 8 +- .../sis/storage/aggregate/JoinFeatureSet.java | 10 +- .../sis/storage/aggregate/MergeStrategy.java | 7 +- .../internal/storage/MemoryGridResourceTest.java | 2 - .../org/apache/sis/storage/CoverageSubsetTest.java | 130 +++ .../aggregate/BandAggregateGridResourceTest.java | 228 +++++ .../storage/aggregate/CoverageAggregatorTest.java | 6 +- ...AggregatorTest.java => OpaqueGridResource.java} | 35 +- .../apache/sis/test/suite/StorageTestSuite.java | 3 +- 197 files changed, 13406 insertions(+), 2171 deletions(-) diff --cc core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java index 38890ea54a,fd62fcd1b8..b346aadd96 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java @@@ -76,8 -71,18 +74,18 @@@ public class DefaultPassThroughOperatio * @see #getOperation() */ @SuppressWarnings("serial") // Most SIS implementations are serializable. - private CoordinateOperation operation; + private SingleOperation operation; + /** + * Zero-based indices of the modified source coordinates. + * + * <p><b>Consider this field as final!</b> + * This field is modified only at unmarshalling time by {@link #setIndices(int[])}</p> + * + * @see #getModifiedCoordinates() + */ + private int[] modifiedCoordinates; + /** * Constructs a pass-through operation from a set of properties. * The properties given in argument follow the same rules than for the @@@ -114,13 -119,30 +122,30 @@@ public DefaultPassThroughOperation(final Map<String,?> properties, final CoordinateReferenceSystem sourceCRS, final CoordinateReferenceSystem targetCRS, - final CoordinateOperation operation, + final SingleOperation operation, final int firstAffectedCoordinate, final int numTrailingCoordinates) + { + this(properties, sourceCRS, targetCRS, operation, operation.getMathTransform(), firstAffectedCoordinate, numTrailingCoordinates); + } + + /** + * Work around for RFE #4093999 in Sun's bug database + * ("Relax constraint on placement of this()/super() call in constructors"). + */ + private DefaultPassThroughOperation(final Map<String,?> properties, + final CoordinateReferenceSystem sourceCRS, + final CoordinateReferenceSystem targetCRS, - final CoordinateOperation operation, ++ final SingleOperation operation, + final MathTransform subTransform, + final int firstAffectedCoordinate, + final int numTrailingCoordinates) { super(properties, sourceCRS, targetCRS, null, - MathTransforms.passThrough(firstAffectedCoordinate, operation.getMathTransform(), numTrailingCoordinates)); + MathTransforms.passThrough(firstAffectedCoordinate, subTransform, numTrailingCoordinates)); this.operation = operation; + modifiedCoordinates = ArraysExt.range(firstAffectedCoordinate, + firstAffectedCoordinate + subTransform.getSourceDimensions()); } /**