This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/sis.git
commit 485bf63bb32bb21f4db964143401eca02ec85489 Merge: 6027cd3d71 5dab0950ea Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Mon May 20 14:38:04 2024 +0200 Merge branch 'geoapi-3.1'. This commit contains one incompatible change: the `org.opengis.referencing.datum.PixelInCell` code list has been replaced by the `org.apache.sis.coverage.grid.PixelInCell` enumeration, except in `ImageDatum`. This is in preparation for the code list removal from ISO 19111:2019. .../org/apache/sis/coverage/CoverageCombiner.java | 2 +- .../org/apache/sis/coverage/RegionOfInterest.java | 2 +- .../coverage/grid/CoordinateOperationFinder.java | 1 - .../apache/sis/coverage/grid/DefaultEvaluator.java | 1 - .../sis/coverage/grid/DimensionalityReduction.java | 11 +- .../apache/sis/coverage/grid/DomainLinearizer.java | 1 - .../coverage/grid/FractionalGridCoordinates.java | 1 - .../apache/sis/coverage/grid/GridCoverage2D.java | 1 - .../sis/coverage/grid/GridCoverageProcessor.java | 1 - .../apache/sis/coverage/grid/GridDerivation.java | 1 - .../org/apache/sis/coverage/grid/GridExtent.java | 3 +- .../apache/sis/coverage/grid/GridExtentCRS.java | 1 - .../org/apache/sis/coverage/grid/GridGeometry.java | 11 +- .../apache/sis/coverage/grid/GridOrientation.java | 1 - .../org/apache/sis/coverage/grid/PixelInCell.java | 115 +++++++++++++++++++++ .../apache/sis/coverage/grid/PixelTranslation.java | 29 +----- .../sis/coverage/grid/ResampledGridCoverage.java | 1 - .../apache/sis/coverage/grid/SliceGeometry.java | 1 - .../sis/coverage/privy/CommonDomainFinder.java | 2 +- .../sis/coverage/privy/MultiSourceArgument.java | 2 +- .../main/org/apache/sis/image/ImageCombiner.java | 2 +- .../main/org/apache/sis/image/ImageProcessor.java | 2 +- .../main/org/apache/sis/image/ResampledImage.java | 4 +- .../grid/BandAggregateGridCoverageTest.java | 1 - .../coverage/grid/BufferedGridCoverageTest.java | 1 - .../coverage/grid/ConvertedGridCoverageTest.java | 1 - .../sis/coverage/grid/DimensionAppenderTest.java | 1 - .../coverage/grid/DimensionalityReductionTest.java | 1 - .../sis/coverage/grid/GridCoverage2DTest.java | 1 - .../sis/coverage/grid/GridCoverageBuilderTest.java | 1 - .../sis/coverage/grid/GridDerivationTest.java | 1 - .../apache/sis/coverage/grid/GridGeometryTest.java | 1 - .../sis/coverage/grid/PixelTranslationTest.java | 1 - .../coverage/grid/ResampledGridCoverageTest.java | 2 +- .../coverage/grid/TranslatedGridCoverageTest.java | 1 - .../test/org/apache/sis/util/iso/TypesTest.java | 5 - .../coverage/MultiResolutionCoverageLoader.java | 2 +- .../org/apache/sis/map/coverage/RenderingData.java | 2 +- .../main/org/apache/sis/portrayal/Canvas.java | 2 +- .../org/apache/sis/portrayal/CanvasExtent.java | 2 +- .../MultiResolutionCoverageLoaderTest.java | 2 +- .../apache/sis/referencing/cs/DefaultAffineCS.java | 3 - .../sis/referencing/cs/DefaultCartesianCS.java | 3 - .../sis/referencing/datum/DatumShiftGrid.java | 2 +- .../referencing/operation/SubOperationInfo.java | 2 +- .../operation/builder/LinearTransformBuilder.java | 2 +- .../operation/builder/LocalizationGridBuilder.java | 4 +- .../sis/referencing/operation/gridded/Tile.java | 13 ++- .../referencing/operation/provider/Robinson.java | 12 ++- .../referencing/operation/provider/Sinusoidal.java | 13 ++- .../apache/sis/referencing/crs/HardCodedCRS.java | 2 +- .../sis/storage/geotiff/MultiResolutionImage.java | 2 +- .../geotiff/reader/GridGeometryBuilder.java | 2 +- .../sis/storage/geotiff/writer/GeoEncoder.java | 2 +- .../org/apache/sis/storage/netcdf/base/Grid.java | 2 +- .../sis/storage/netcdf/base/GridAdjustment.java | 2 +- .../sis/storage/netcdf/base/GridMapping.java | 2 +- .../sis/storage/sql/postgis/RasterFormat.java | 2 +- .../sis/storage/aggregate/CoverageAggregator.java | 2 +- .../sis/storage/aggregate/DimensionAppender.java | 2 +- .../apache/sis/storage/aggregate/GridSlice.java | 2 +- .../sis/storage/base/MemoryGridResource.java | 2 +- .../apache/sis/storage/base/TiledGridCoverage.java | 2 +- .../apache/sis/storage/esri/AsciiGridStore.java | 2 +- .../apache/sis/storage/esri/RawRasterStore.java | 2 +- .../org/apache/sis/storage/esri/WritableStore.java | 2 +- .../apache/sis/storage/image/WorldFileStore.java | 2 +- .../org/apache/sis/storage/tiling/TileMatrix.java | 2 +- .../org/apache/sis/storage/CoverageQueryTest.java | 2 +- .../aggregate/BandAggregateGridResourceTest.java | 2 +- .../sis/storage/base/MemoryGridResourceTest.java | 2 +- .../sis/storage/coveragejson/CoverageResource.java | 2 +- .../apache/sis/gui/coverage/CoverageCanvas.java | 2 +- .../apache/sis/gui/coverage/GridSliceSelector.java | 2 +- .../sis/gui/coverage/StyledRenderingData.java | 2 +- .../main/org/apache/sis/gui/map/MapCanvas.java | 2 +- .../org/apache/sis/gui/map/OperationFinder.java | 2 +- .../main/org/apache/sis/gui/map/StatusBar.java | 2 +- .../gui/referencing/RecentReferenceSystems.java | 2 +- .../apache/sis/gui/coverage/CoverageCanvasApp.java | 2 +- 80 files changed, 206 insertions(+), 132 deletions(-) diff --cc endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java index 0000000000,0e94ee071d..cd33d042c1 mode 000000,100644..100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/PixelInCell.java @@@ -1,0 -1,129 +1,115 @@@ + /* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.sis.coverage.grid; + -import org.opengis.util.ControlledVocabulary; + import org.opengis.metadata.spatial.PixelOrientation; + + + /** + * Whether a "grid to real world" transform gives the coordinates of the cell corner or cell center. + * This enumeration is equivalent to a subset of {@link PixelOrientation}, + * but applicable to any number of dimensions. + * + * @author Martin Desruisseaux (Geomatys) + * @version 1.5 + * + * @see PixelOrientation + * + * @since 1.5 + */ -public enum PixelInCell implements ControlledVocabulary { ++public enum PixelInCell { + /** + * "Real world" coordinates give the location of the cell center. + * + * @see PixelOrientation#CENTER + */ + CELL_CENTER("cell center", PixelOrientation.CENTER, 0), + + /** + * "Real world" coordinates give the location of the cell corner having smallest coordinate values. + * For a two-dimensional image having row indices (<var>y</var> coordinates) increasing downward, + * this the upper-left corner. + * + * @see PixelOrientation#UPPER_LEFT + */ + CELL_CORNER("cell corner", PixelOrientation.UPPER_LEFT, -0.5); + + /** + * The identifier in legacy ISO 19111 specification. + */ + private final String identifier; + + /** + * The two-dimensional pixel orientation which is equivalent to this enumeration value. + * This equivalence can be used for converting <var>n</var>-dimensional parameters to + * the more specific two-dimensional case. + * + * <table class="sis"> + * <caption>Pixel orientation equivalences</caption> + * <tr><th>Pixel in cell</th><th>Pixel orientation</th></tr> + * <tr><td>{@link #CELL_CENTER}</td><td>{@link PixelOrientation#CENTER}</td></tr> + * <tr><td>{@link #CELL_CORNER}</td><td>{@link PixelOrientation#UPPER_LEFT}</td></tr> + * </table> + * + * @see PixelTranslation#getPixelOrientation(PixelInCell) + */ + final PixelOrientation orientation; + + /** + * The position relative to the cell center, in fractional number of cells. + * This is typically used for <var>n</var>-dimensional grids, where the number of dimension is unknown. + * The translation is determined from the following table, with the same value applied to all dimensions: + * + * <table class="sis"> + * <caption>Translations</caption> + * <tr><th>Pixel in cell</th><th>offset</th></tr> + * <tr><td>{@link #CELL_CENTER}</td><td>{@code 0.0}</td></tr> + * <tr><td>{@link #CELL_CORNER}</td><td>{@code -0.5}</td></tr> + * </table> + * + * @see PixelTranslation#getPixelTranslation(PixelInCell) + */ + final double translationFromCentre; + + /** + * Creates a new enumeration value. + */ + private PixelInCell(final String identifier, final PixelOrientation orientation, final double translationFromCentre) { + this.identifier = identifier; + this.orientation = orientation; + this.translationFromCentre = translationFromCentre; + } + + /** + * Returns the identifier declared in the legacy ISO 19111 specification. + * + * @return the legacy ISO/OGC identifier for this constant. + */ - @Override + public String identifier() { + return identifier; + } + + /** + * Returns all the names of this enumeration value. The returned array contains + * the {@linkplain #name() name} and the {@linkplain #identifier() identifier}. + * + * @return all names of this constant. This array is never null and never empty. + */ - @Override + public String[] names() { + return new String[] {name(), identifier}; + } - - /** - * Returns the enumeration of the same kind as this item. - * This is equivalent to {@link #values()}. - * - * @return the enumeration of the same kind as this item. - */ - @Override - public ControlledVocabulary[] family() { - return values(); - } + } diff --cc endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/TypesTest.java index 4cb5582b2e,056bf5d03e..baa5a79d47 --- a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/TypesTest.java +++ b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/util/iso/TypesTest.java @@@ -140,15 -153,8 +140,10 @@@ public final class TypesTest extends Te assertSame(ImagingCondition.SEMI_DARKNESS, Types.forCodeName(ImagingCondition.class, "semi-darkness", null)); assertNull(Types.forCodeName(ImagingCondition.class, "darkness", null)); - assertSame(Restriction.LICENCE, Types.forCodeName(Restriction.class, "licence", null)); - assertSame(Restriction.LICENCE, Types.forCodeName(Restriction.class, "license", null)); + assertSame(PixelInCell.CELL_CORNER, Types.forCodeName(PixelInCell.class, "cell corner", null)); + assertSame(PixelInCell.CELL_CORNER, Types.forCodeName(PixelInCell.class, "cellCorner", null)); + assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cell center", null)); + assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cellCenter", null)); - - if (PENDING_NEXT_GEOAPI_RELEASE) { - assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cell centre", null)); - assertSame(PixelInCell.CELL_CENTER, Types.forCodeName(PixelInCell.class, "cellCentre", null)); - } } /**