This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sis.git
commit fc71c638d0fbda405e220c6e6161187224b8315a Merge: 7cb56fed2e 4a2e1aefb5 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Mon Jun 5 11:03:19 2023 +0200 Merge branch 'geoapi-3.1'. .../org/apache/sis/coverage/SampleDimension.java | 7 +++++ .../sis/internal/coverage/SampleDimensions.java | 6 ++-- .../java/org/apache/sis/coverage/CategoryTest.java | 3 +- .../apache/sis/coverage/SampleDimensionTest.java | 3 +- .../org/apache/sis/image/ResamplingGridTest.java | 3 +- .../sis/internal/feature/j2d/FactoryTest.java | 2 +- .../internal/feature/jts/ShapeConverterTest.java | 3 +- .../sis/internal/filter/sqlmm/SQLMMTest.java | 3 +- .../apache/sis/test/feature/FeatureComparator.java | 3 +- .../{test => xml}/DocumentComparatorTest.java | 2 +- .../java/org/apache/sis/metadata/ValueMapTest.java | 3 +- .../iso/lineage/DefaultProcessStepTest.java | 3 +- .../quality/AbstractPositionalAccuracyTest.java | 3 +- .../apache/sis/test/xml/DocumentComparator.java | 3 +- .../java/org/apache/sis/util/iso/TypesTest.java | 3 +- .../org/apache/sis/geometry/AbstractEnvelope.java | 21 ++++++++++++- .../apache/sis/io/wkt/GeodeticObjectParser.java | 18 ++++++++---- .../sis/referencing/cs/CoordinateSystems.java | 4 +-- .../sis/referencing/cs/DefaultSphericalCS.java | 32 ++++++++++++++++++-- .../referencing/factory/GeodeticObjectFactory.java | 34 ++++++++++++++++++++++ .../referencing/factory/sql/EPSGDataAccess.java | 5 ++++ .../operation/projection/AzimuthalEquidistant.java | 2 +- .../operation/projection/Initializer.java | 6 ++-- .../referencing/operation/projection/Mercator.java | 7 +++-- .../operation/projection/NormalizedProjection.java | 11 ++++--- .../operation/projection/ProjectionVariant.java | 6 ++++ .../org/apache/sis/geometry/ArrayEnvelopeTest.java | 15 ++++++++-- .../referencing/j2d/AbstractShapeTest.java | 2 +- .../referencing/j2d/ShapeUtilitiesTest.java | 3 +- .../provider/DatumShiftGridCompressedTest.java | 2 +- .../FranceGeocentricInterpolationTest.java | 3 +- .../provider/GeocentricTranslationTest.java | 3 +- .../sis/referencing/GeodeticCalculatorTest.java | 4 ++- .../sis/referencing/StandardDefinitionsTest.java | 3 +- .../sis/referencing/factory/TestFactorySource.java | 3 +- .../operation/projection/InitializerTest.java | 2 +- .../operation/projection/MercatorTest.java | 3 +- .../transform/LinearInterpolator1DTest.java | 3 +- .../operation/transform/LinearTransformTest.java | 2 +- .../operation/transform/MathTransformTestCase.java | 3 +- .../operation/transform/ScaleTransformTest.java | 3 +- .../integration/CoordinateReferenceSystemTest.java | 3 +- .../java/org/apache/sis/measure/NumberRange.java | 4 +-- .../test/java/org/apache/sis/math/VectorTest.java | 3 +- .../org/apache/sis/measure/QuantitiesTest.java | 3 +- .../sis/profile/france/FrenchProfileTest.java | 3 +- .../sis/internal/geotiff/SchemaModifier.java | 2 +- .../org/apache/sis/storage/geotiff/CRSBuilder.java | 16 +++++----- .../sis/storage/geotiff/CompressedSubset.java | 4 +-- .../org/apache/sis/storage/geotiff/DataCube.java | 18 ++++++++++++ .../org/apache/sis/storage/geotiff/DataSubset.java | 33 ++++++++++++++++++++- .../sis/storage/geotiff/ImageFileDirectory.java | 13 +++++++-- .../org/apache/sis/internal/netcdf/CRSBuilder.java | 13 +++++++-- .../apache/sis/internal/netcdf/VariableTest.java | 2 +- .../storage/netcdf/NetcdfStoreProviderTest.java | 3 +- .../apache/sis/storage/netcdf/NetcdfStoreTest.java | 2 +- .../sis/internal/sql/postgis/PostgresTest.java | 3 +- .../sis/internal/storage/esri/RasterStore.java | 5 ++-- .../apache/sis/internal/storage/xml/StoreTest.java | 3 +- .../apache/sis/storage/StorageConnectorTest.java | 3 +- 60 files changed, 303 insertions(+), 83 deletions(-) diff --cc core/sis-feature/src/test/java/org/apache/sis/internal/filter/sqlmm/SQLMMTest.java index 8c7e96b2f4,91d36f196c..4ab04c2ab7 --- a/core/sis-feature/src/test/java/org/apache/sis/internal/filter/sqlmm/SQLMMTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/internal/filter/sqlmm/SQLMMTest.java @@@ -29,11 -28,14 +29,12 @@@ import org.apache.sis.referencing.Commo import org.apache.sis.test.TestCase; import org.junit.Test; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; + import static org.opengis.test.Assert.assertInstanceOf; // Branch-dependent imports -import org.opengis.filter.Literal; -import org.opengis.feature.Feature; -import org.opengis.filter.Expression; -import org.opengis.filter.FilterFactory; +import org.apache.sis.feature.AbstractFeature; +import org.apache.sis.filter.Expression; /** diff --cc core/sis-feature/src/test/java/org/apache/sis/test/feature/FeatureComparator.java index 339aeec378,e5c5151828..627c1c88cc --- a/core/sis-feature/src/test/java/org/apache/sis/test/feature/FeatureComparator.java +++ b/core/sis-feature/src/test/java/org/apache/sis/test/feature/FeatureComparator.java @@@ -31,15 -31,17 +31,16 @@@ import org.apache.sis.internal.util.Col import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.Deprecable; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; + import static org.opengis.test.Assert.assertInstanceOf; // Branch-dependent imports -import org.opengis.feature.Feature; -import org.opengis.feature.FeatureType; -import org.opengis.feature.FeatureAssociationRole; -import org.opengis.feature.PropertyType; -import org.opengis.feature.AttributeType; -import org.opengis.feature.IdentifiedType; -import org.opengis.feature.Operation; +import org.apache.sis.feature.AbstractFeature; +import org.apache.sis.feature.DefaultFeatureType; +import org.apache.sis.feature.DefaultAssociationRole; +import org.apache.sis.feature.DefaultAttributeType; +import org.apache.sis.feature.AbstractIdentifiedType; +import org.apache.sis.feature.AbstractOperation; /** diff --cc core/sis-metadata/src/test/java/org/apache/sis/util/iso/TypesTest.java index 0a4a2de38c,da06d0ef0e..b1290f619a --- a/core/sis-metadata/src/test/java/org/apache/sis/util/iso/TypesTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/util/iso/TypesTest.java @@@ -36,11 -37,9 +36,12 @@@ import org.apache.sis.util.DefaultInter import org.apache.sis.test.TestCase; import org.junit.Test; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; + import static org.opengis.test.Assert.assertInstanceOf; +// Branch-dependent imports +import static org.apache.sis.test.GeoapiAssert.PENDING_NEXT_GEOAPI_RELEASE; + /** * Tests the {@link Types} class. diff --cc core/sis-referencing/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java index 2bb244c086,9ed19d4ffb..010a5b55ee --- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java @@@ -92,6 -91,6 +92,7 @@@ import static java.util.Collections.sin // Branch-dependent imports import org.opengis.referencing.ReferenceIdentifier; ++import org.apache.sis.referencing.factory.GeodeticObjectFactory; /** @@@ -931,6 -930,14 +932,17 @@@ class GeodeticObjectParser extends Math dimension = (axes.length < 2) ? 2 : 3; // For error message. break; } + case WKTKeywords.spherical: { + switch (axes.length) { - case 2: return csFactory.createSphericalCS(csProperties, axes[0], axes[1]); ++ case 2: if (csFactory instanceof GeodeticObjectFactory) { ++ return ((GeodeticObjectFactory) csFactory).createSphericalCS(csProperties, axes[0], axes[1]); ++ } ++ break; + case 3: return csFactory.createSphericalCS(csProperties, axes[0], axes[1], axes[2]); + } + dimension = (axes.length < 2) ? 2 : 3; // For error message. + break; + } case WKTKeywords.Cartesian: { switch (axes.length) { case 2: return csFactory.createCartesianCS(csProperties, axes[0], axes[1]); @@@ -967,13 -974,9 +979,9 @@@ if (axes.length != (dimension = 3)) break; return csFactory.createCylindricalCS(csProperties, axes[0], axes[1], axes[2]); } - case WKTKeywords.spherical: { - if (axes.length != (dimension = 3)) break; - return csFactory.createSphericalCS(csProperties, axes[0], axes[1], axes[2]); - } case WKTKeywords.parametric: { if (axes.length != (dimension = 1)) break; - return csFactory.createParametricCS(csProperties, axes[0]); + return ServicesForMetadata.createParametricCS(csProperties, axes[0], csFactory); } default: { warning(parent, WKTKeywords.CS, Errors.formatInternational(Errors.Keys.UnknownType_1, type), null); diff --cc core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java index fa93328a32,f53cf7812e..201310557c --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java @@@ -479,6 -479,41 +479,40 @@@ public class GeodeticObjectFactory exte return unique("createSphericalCS", cs); } + /** + * Creates a spherical coordinate system without radius. + * This coordinate system can be used with geocentric, engineering and derived CRS. + * + * <h4>Dependencies</h4> + * The components needed by this method can be created by the following methods: + * <ol> + * <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li> + * </ol> + * + * The default implementation creates a {@link DefaultSphericalCS} instance. + * + * @param properties name and other properties to give to the new object. + * @param axis0 the first axis (e.g. “Spherical latitude”). + * @param axis1 the second axis (e.g. “Spherical longitude”). + * @throws FactoryException if the object creation failed. + * + * @see DefaultSphericalCS#DefaultSphericalCS(Map, CoordinateSystemAxis, CoordinateSystemAxis) + * + * @since 1.4 + */ - @Override + public SphericalCS createSphericalCS(final Map<String,?> properties, + final CoordinateSystemAxis axis0, + final CoordinateSystemAxis axis1) throws FactoryException + { + final DefaultSphericalCS cs; + try { + cs = new DefaultSphericalCS(complete(properties), axis0, axis1); + } catch (IllegalArgumentException exception) { + throw new InvalidGeodeticParameterException(exception); + } + return unique("createSphericalCS", cs); + } + /** * Creates a geographic coordinate reference system. It can be (<var>latitude</var>, <var>longitude</var>) * or (<var>longitude</var>, <var>latitude</var>), optionally with an ellipsoidal height. diff --cc core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java index 7ecabe99d0,5f0eb61e0e..3a41de5541 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java @@@ -122,11 -123,6 +122,12 @@@ import static org.apache.sis.util.Utili import static org.apache.sis.internal.util.StandardDateFormat.UTC; import static org.apache.sis.internal.referencing.ServicesForMetadata.CONNECTION; +// Branch-dependent imports +import org.apache.sis.referencing.cs.DefaultParametricCS; +import org.apache.sis.referencing.datum.DefaultParametricDatum; +import org.apache.sis.internal.referencing.ServicesForMetadata; ++import org.apache.sis.referencing.factory.GeodeticObjectFactory; + /** * <cite>Data Access Object</cite> (DAO) creating geodetic objects from a JDBC connection to an EPSG database. @@@ -2201,6 -2197,7 +2202,10 @@@ codes: for (int i=0; i<codes.length; i } case WKTKeywords.spherical: { switch (dimension) { - case 2: cs = csFactory.createSphericalCS(properties, axes[0], axes[1]); break; ++ case 2: if (csFactory instanceof GeodeticObjectFactory) { ++ cs = ((GeodeticObjectFactory) csFactory).createSphericalCS(properties, axes[0], axes[1]); ++ } ++ break; case 3: cs = csFactory.createSphericalCS(properties, axes[0], axes[1], axes[2]); break; } break; diff --cc core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java index c29e9c163c,b7e81bbe91..5895abfc8b --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java @@@ -46,7 -47,10 +46,9 @@@ import net.sf.geographiclib.GeodesicDat import org.junit.Test; import static java.lang.StrictMath.*; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; + import static org.opengis.test.Assert.assertBetween; + import static org.opengis.test.Assert.assertInstanceOf; -import static org.opengis.test.Assert.assertAxisDirectionsEqual; import static org.apache.sis.internal.metadata.ReferencingServices.AUTHALIC_RADIUS; diff --cc core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/MercatorTest.java index 5bb4ed40d8,6b54409d30..eb4fd775db --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/MercatorTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/MercatorTest.java @@@ -35,13 -37,10 +35,14 @@@ import org.junit.Test import static java.lang.Double.*; import static java.lang.StrictMath.*; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; + import static org.opengis.test.Assert.assertBetween; import static org.apache.sis.referencing.operation.projection.ConformalProjectionTest.LN_INFINITY; +// Branch-specific imports +import static org.junit.Assume.assumeTrue; +import static org.apache.sis.test.GeoapiAssert.PENDING_NEXT_GEOAPI_RELEASE; + /** * Tests the {@link Mercator} projection. diff --cc core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearTransformTest.java index a9ccc1f8e2,c458838d25..2422748819 --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearTransformTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearTransformTest.java @@@ -26,11 -26,8 +26,11 @@@ import org.junit.Test import org.junit.runner.RunWith; import org.apache.sis.test.DependsOn; import org.apache.sis.test.TestRunner; - import static org.opengis.test.Assert.*; + import static org.opengis.test.Assert.assertInstanceOf; +// Branch-dependent imports +import org.junit.Ignore; + /** * Tests various implementation of the {@link LinearTransform} interface by inheriting the tests defined diff --cc core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformTestCase.java index 71a6d2a63e,e49512b43e..dae7791920 --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformTestCase.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformTestCase.java @@@ -40,8 -43,13 +40,9 @@@ import org.opengis.test.Validators import org.apache.sis.test.TestUtilities; import org.apache.sis.referencing.Assertions; import org.apache.sis.referencing.operation.matrix.MatrixTestCase; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; + import static org.opengis.test.Assert.assertInstanceOf; -// Branch-dependent imports -import org.opengis.test.CalculationType; - /** * Base class for tests of {@link AbstractMathTransform} implementations. diff --cc core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/ScaleTransformTest.java index 3c3099ac49,afa9d5c7f6..96e9aa5f13 --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/ScaleTransformTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/ScaleTransformTest.java @@@ -24,10 -24,11 +24,11 @@@ import org.apache.sis.internal.util.Dou import org.apache.sis.test.DependsOnMethod; import org.apache.sis.test.DependsOn; -import org.opengis.test.Assert; +import static org.apache.sis.test.GeoapiAssert.assertMatrixEquals; import org.junit.Test; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; + import static org.opengis.test.Assert.assertInstanceOf; /** diff --cc storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/CRSBuilder.java index 4a2f5cb5ab,97d0ca7164..43ba5eaa80 --- a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/CRSBuilder.java +++ b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/CRSBuilder.java @@@ -60,9 -60,6 +60,10 @@@ import org.apache.sis.util.ArraysExt import org.apache.sis.measure.NumberRange; import org.apache.sis.measure.Units; +// Branch-dependent imports ++import org.apache.sis.referencing.factory.GeodeticObjectFactory; +import org.apache.sis.referencing.operation.DefaultCoordinateOperationFactory; + /** * Temporary object for building a coordinate reference system from the variables in a netCDF file. @@@ -685,7 -682,11 +686,13 @@@ previous: for (int i=components.size( * found that the {@link #coordinateSystem} does not have compatible axes. */ @Override void createCS(CSFactory factory, Map<String,?> properties, CoordinateSystemAxis[] axes) throws FactoryException { - coordinateSystem = factory.createSphericalCS(properties, axes[0], axes[1], axes[2]); + if (axes.length > 2) { + coordinateSystem = factory.createSphericalCS(properties, axes[0], axes[1], axes[2]); ++ } else if (factory instanceof GeodeticObjectFactory) { ++ coordinateSystem = ((GeodeticObjectFactory) factory).createSphericalCS(properties, axes[0], axes[1]); + } else { - coordinateSystem = factory.createSphericalCS(properties, axes[0], axes[1]); ++ throw new FactoryException("Unsupported factory implementation."); + } } /** diff --cc storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/VariableTest.java index 8f2a85cd6d,6c25c83c9a..e0cfb48ba9 --- a/storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/VariableTest.java +++ b/storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/VariableTest.java @@@ -26,9 -26,10 +26,9 @@@ import org.apache.sis.storage.DataStore import org.apache.sis.internal.netcdf.ucar.DecoderWrapper; import org.apache.sis.measure.Units; import org.apache.sis.test.DependsOn; -import org.opengis.test.dataset.TestData; import org.junit.Test; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; /** diff --cc storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java index 986fefab29,ab496dd799..ad0f0f9716 --- a/storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java +++ b/storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java @@@ -29,10 -29,11 +29,11 @@@ import org.apache.sis.storage.DataStore import org.apache.sis.storage.DataStoreMock; import org.apache.sis.util.Version; import org.apache.sis.test.DependsOn; -import org.opengis.test.dataset.TestData; +import org.apache.sis.internal.netcdf.TestData; import org.junit.Test; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; + import static org.opengis.test.Assert.assertInstanceOf; /** diff --cc storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/NetcdfStoreTest.java index 258e676dad,e2c6a78c75..f2283edb46 --- a/storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/NetcdfStoreTest.java +++ b/storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/NetcdfStoreTest.java @@@ -22,10 -22,10 +22,10 @@@ import org.apache.sis.storage.DataStore import org.apache.sis.test.TestCase; import org.apache.sis.test.DependsOn; import org.apache.sis.util.Version; -import org.opengis.test.dataset.TestData; +import org.apache.sis.internal.netcdf.TestData; import org.junit.Test; - import static org.opengis.test.Assert.*; + import static org.junit.Assert.*; /**