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 2023/04/16 17:14:12 UTC

[sis] 01/01: 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.

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 <ma...@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());
      }
  
      /**