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/08/14 17:16:58 UTC
(sis) branch geoapi-3.1 updated (e3537fc7c1 -> b7f39770a2)
This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a change to branch geoapi-3.1
in repository https://gitbox.apache.org/repos/asf/sis.git
from e3537fc7c1 Merge branch 'geoapi-4.0' into geoapi-3.1. Contains a fix in netCDF parsing of GDAL's "GeoTransform" attribute.
add 2058a95f8e Avoid a `NullPointerException` to pollute the logs.
add f4ad53d657 Documentation, minor formatting, suppression of a warning.
add 5a3b53f3e1 Fix of a `ClassCastException` during the merge of two metadata. If the source metadata is a class that implements more than one metadata interface (for example, the GPX metadata), use the type of the target class or use the type of the property for resolving the ambiguity.
add a8171ac1d1 Add a safety for a `String[]` sometime represented by UCAR library as `Object[]`.
add 722c224375 feat(sql): handle LIKE filter in SQL storage. https://github.com/apache/sis/pull/47
add 42a8abce5b Mave `Envelopes.transform(CoordinateOperation, …)` more tolerant to the case where the envelope CRS does not match the coordinate operation source CRS.
add e3288548dd Be more conservative when creating an EngineeringCRS for a GridExtent. Such engineering CRS are not expected to be always present.
add 233de2b767 feat(Geometry): add scene light objects
add b9ba379a4f Clarify which exceptions are thrown when using reflection on metadata object. Make `Merger` and `equals(…)` more robust against `ClassCastException`.
add 03badce557 feat(Material): separate material in dedicated subclasses instead of a Map of properties
add 5107e0afa6 Fix an `IndexOutOfBoundsException` when the CRS component which is present in only the target CRS is not the last one.
add 541e44693f Rename the `org.apache.sis.storage.coveragejson` module as `org.apache.sis.storage.json`.
add c43101db20 migrate(coveragejson): replace jsonb bindings by jackson
add 00a4e72526 Create an initially empty `org.apache.sis.referencing.dggs` module in the "incubator" group of modules. This is proposed for initial work from OGC TestBed, before to be potentially dispatched to other modules.
add 59f2edce98 feat(DGGS): add DGGS API
add 41b8832d0e feat(GridExtent): add getLatticePointCount method
add e34709ee6a feat(DGGS): add code operation and coverage test
add 5512328878 Minor formatting of comments.
add b2c6b5ee02 Rename `ObservableImage` as `WritableUntiledImage` and merge with `ImageRenderer.Untiled`. The goal is to avoid incorrect inheritance of the `GridGeometry` property in sub-images.
add 6a8700ed32 Deferred computation of `GridGeometry` image property should take in account the image bounds.
add d40d280725 Add test case for `RenderingData`.
add e117aa6ca4 feat(Geometry): add place-holder for HAT arrays
add 164b33a7a8 chore(Scene): move scene classes to a separate package outside the geometry package
add 66e8d26354 chore(DGGS): code cleaning, remove some unused utilities
add 752a1562e7 feat(GeoJSON): add binding for GeoJSON, JSON-FG and MovingFeatures
add f5dd64c5b3 feat(Geometry): add base polyhedron classes used by DGGRS
add b2a7b2c97b feat(Geometry): add SphericalTriangle
add 926b0a4071 feat(Geometry): add spherical triangle area and spherical excess methods
add 7bd94f14bb feat(Vector): add method to convert between lat/lon and unit vector
add 7a3f369924 feat(Geometry): add great circle arc
add 76386d6d1c Modify `RenderingDataTest` for using the image mock.
add 64af795f40 Fix unintentional crop when showing a large non-pyramided image with an initial zoom for avoiding to load the full image.
add 1464fabd87 Introduce an artificial tiling when reading a large untiled TIFF or HEIF image. This is an attempt to avoid `OutOfMemoryError`. Temporarily disabled.
add fad2774533 feat(Geometry): add SphericalConvexPolygon
add f427b9b0e8 feat(Geometry): add polyhedrons faces and getFace method
add f72b42cb2b doc(DGGRS): add links to ZIRS informations
add 35c19eef1f fix(Geometry): fix small error in uml mapping and method parameters
add c2ecd1f664 Fix a mismatched dimension exception when showing coverage values below the cursor.
add c773a3c2e7 Provided more information about the `RenderedImage` layout in its `toString()` representation. This is an attempt to provide more debugging help.
add b79a2bb608 Move `Summarizer` to an internal non-shared package. Refactor for removing an unnecessary inner class.
add 67cfdae67e Bug fixes in the application of artificial tiling on large untiled images.
add f6e6c072f0 Add a "todo" note about the use of `prefetch` in context of artificially tiled image. Minor edition as a side-effect of the review of the situation regarding prefetch.
add 29c988583b Move `TileReadListener` to a separated class and add a safety for reducing the risk of application freeze when reading a TIFF image made of thousands of thin strips.
add 6412d2decb Try harder to group the addition of removal of tile loading indicator. Adding or removing shapes one-by-one in JavaFX thread is very slow.
add 337b819bd6 Reduce the number of false reports of tile loading.
add aa236a8a8c Fix the initial zoom of large untiled images.
add ccf06de245 Fix a misspelling: `StoreListener.eventOccured` renamed `eventOccurred`. This is an incompatible change which cannot be made compatible easily, because the interface is sometime used in lambda expressions.
new b7f39770a2 Merge branch 'geoapi-4.0' into geoapi-3.1
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../apache/sis/buildtools/gradle/Dependency.java | 3 +-
.../org/apache/sis/console/HelpCommandTest.java | 1 +
.../org.apache.sis.feature/main/module-info.java | 5 +
.../sis/coverage/grid/ClippedGridCoverage.java | 4 +-
.../apache/sis/coverage/grid/GridCRSBuilder.java | 156 +++--
.../org/apache/sis/coverage/grid/GridCoverage.java | 17 +-
.../apache/sis/coverage/grid/GridCoverage2D.java | 100 ++-
.../sis/coverage/grid/GridCoverageBuilder.java | 6 +-
.../apache/sis/coverage/grid/GridDerivation.java | 2 +-
.../org/apache/sis/coverage/grid/GridExtent.java | 136 ++--
.../org/apache/sis/coverage/grid/GridGeometry.java | 43 +-
.../apache/sis/coverage/grid/ImageRenderer.java | 121 +---
.../apache/sis/coverage/grid/SliceGeometry.java | 3 +-
.../org/apache/sis/feature/AbstractFeature.java | 5 -
.../org/apache/sis/feature/internal/Resources.java | 15 +
.../sis/feature/internal/Resources.properties | 3 +
.../sis/feature/internal/Resources_fr.properties | 3 +
.../main/org/apache/sis/image/BandSelectImage.java | 4 +-
.../apache/sis/image/BandedSampleConverter.java | 6 +-
.../main/org/apache/sis/image/ComputedImage.java | 12 +-
.../main/org/apache/sis/image/ImageLayout.java | 38 +-
.../main/org/apache/sis/image/ImageOverlay.java | 2 +-
.../org/apache/sis/image/MultiSourcePrefetch.java | 5 +-
.../main/org/apache/sis/image/PlanarImage.java | 128 ++--
.../main/org/apache/sis/image/PrefetchedImage.java | 4 +-
.../org/apache/sis/image/SourceAlignedImage.java | 2 +-
.../apache/sis/image/WritableComputedImage.java | 8 +-
.../org/apache/sis/image/internal/Summarizer.java | 275 ++++++++
.../apache/sis/image/internal}/package-info.java | 14 +-
.../image/internal/shared/BatchComputedImage.java | 27 +-
.../image/internal/shared/ColorModelFactory.java | 54 +-
.../image/internal/shared/DeferredProperty.java | 47 +-
.../sis/image/internal/shared/ImageUtilities.java | 36 +-
.../sis/image/internal/shared/RasterFactory.java | 21 +-
.../sis/image/internal/shared/ReshapedImage.java | 115 +++-
.../image/internal/shared/ScaledColorSpace.java | 13 +-
.../sis/image/internal/shared/TileOpExecutor.java | 7 +-
.../sis/image/internal/shared/TiledImage.java | 6 +-
.../image/internal/shared/WritableTiledImage.java | 16 +-
...ervableImage.java => WritableUntiledImage.java} | 272 ++++++--
.../apache/sis/coverage/grid/GridExtentTest.java | 57 +-
.../coverage/grid/ResampledGridCoverageTest.java | 6 +-
.../test/org/apache/sis/image/ImageLayoutTest.java | 9 +
.../test/org/apache/sis/image/TiledImageMock.java | 71 ++-
.../image/internal/shared/ReshapedImageTest.java | 5 +-
.../org/apache/sis/metadata/AbstractMetadata.java | 6 +-
.../main/org/apache/sis/metadata/CacheKey.java | 9 +-
.../org/apache/sis/metadata/MetadataCopier.java | 2 +-
.../org/apache/sis/metadata/MetadataStandard.java | 393 ++++++++----
.../org/apache/sis/metadata/MetadataVisitor.java | 15 +-
.../apache/sis/metadata/ModifiableMetadata.java | 46 +-
.../org/apache/sis/metadata/PropertyAccessor.java | 3 +-
.../main/org/apache/sis/metadata/Pruner.java | 4 +-
.../main/org/apache/sis/metadata/StateChanger.java | 2 +-
.../main/org/apache/sis/metadata/TreeNode.java | 10 +-
.../apache/sis/metadata/UnresolvedTypePolicy.java} | 40 +-
.../apache/sis/metadata/internal/Resources.java | 5 +
.../sis/metadata/internal/Resources.properties | 1 +
.../sis/metadata/internal/Resources_fr.properties | 1 +
.../sis/metadata/internal/shared/Merger.java | 88 ++-
.../iso/extent/DefaultGeographicBoundingBox.java | 2 +-
.../main/org/apache/sis/metadata/package-info.java | 2 +-
.../sis/metadata/sql/internal/shared/Dialect.java | 43 +-
.../metadata/sql/internal/shared/SQLBuilder.java | 11 +-
.../sis/metadata/sql/internal/shared/Supports.java | 7 +-
.../org/apache/sis/util/iso/DefaultRecordType.java | 2 +-
.../apache/sis/xml/bind/cat/CodeListAdapter.java | 2 +-
.../test/org/apache/sis/metadata/HashCodeTest.java | 4 +-
.../apache/sis/metadata/InformationMapTest.java | 1 +
.../apache/sis/metadata/MetadataStandardTest.java | 28 +-
.../test/org/apache/sis/metadata/NameMapTest.java | 1 +
.../test/org/apache/sis/metadata/PrunerTest.java | 1 +
.../org/apache/sis/metadata/SpecialCasesTest.java | 1 +
.../apache/sis/metadata/TreeNodeChildrenTest.java | 2 +-
.../test/org/apache/sis/metadata/TypeMapTest.java | 1 +
.../sis/metadata/internal/shared/MergerTest.java | 24 +-
.../org/apache/sis/map/coverage/RenderingData.java | 24 +-
.../apache/sis/map/coverage/RenderingDataTest.java | 256 ++++++++
.../main/module-info.java | 1 +
.../main/org/apache/sis/geometry/Envelopes.java | 51 +-
.../org/apache/sis/parameter/MatrixParameters.java | 2 +-
.../sis/referencing/datum/DatumOrEnsemble.java | 2 +-
.../operation/CoordinateOperationContext.java | 6 +-
.../operation/CoordinateOperationFinder.java | 32 +-
.../referencing/operation/SubOperationInfo.java | 40 +-
.../operation/provider/DatumShiftMethod.java | 6 +-
.../transform/AbstractLinearTransform.java | 7 +-
.../operation/transform/PassThroughTransform.java | 6 +-
.../operation/transform/TransformJoiner.java | 11 +-
.../org/apache/sis/storage/geotiff/DataSubset.java | 2 +-
.../org/apache/sis/storage/netcdf/base/Axis.java | 23 +-
.../apache/sis/storage/netcdf/base/Variable.java | 7 +
.../sis/storage/netcdf/ucar/VariableWrapper.java | 22 +-
.../sis/storage/sql/feature/SelectionClause.java | 77 ++-
.../storage/sql/feature/SelectionClauseWriter.java | 35 +-
.../sis/storage/sql/postgis/RasterReader.java | 4 +-
.../org/apache/sis/storage/sql/SQLStoreTest.java | 20 +-
.../org/apache/sis/storage/gpx/MetadataTest.java | 8 +-
.../org/apache/sis/storage/gpx/ReaderTest.java | 85 ++-
.../org.apache.sis.storage/main/module-info.java | 6 +-
.../main/org/apache/sis/storage/DataStore.java | 4 +-
.../main/org/apache/sis/storage/Resource.java | 4 +-
.../sis/storage/aggregate/JoinFeatureSet.java | 7 +-
.../apache/sis/storage/aggregate/package-info.java | 2 +-
.../org/apache/sis/storage/esri/RasterStore.java | 13 +-
.../sis/storage/event/CascadedStoreEvent.java | 2 +-
.../apache/sis/storage/event/StoreListener.java | 6 +-
.../apache/sis/storage/event/StoreListeners.java | 16 +-
.../sis/storage/metadata/MetadataBuilder.java | 2 +-
.../sis/storage/tiling/ArtificiallyTiledImage.java | 261 ++++++++
.../apache/sis/storage/tiling/ImageTileMatrix.java | 2 +-
.../apache/sis/storage/tiling/TileReadEvent.java | 63 +-
.../sis/storage/tiling/TiledDeferredImage.java | 2 +-
.../sis/storage/tiling/TiledGridCoverage.java | 10 +-
.../storage/tiling/TiledGridCoverageResource.java | 547 +++++++++++++---
.../org/apache/sis/storage/DataStoreTestCase.java | 4 +-
.../sis/storage/event/StoreListenersTest.java | 6 +-
.../src/org.apache.sis.util/main/module-info.java | 2 +
.../main/org/apache/sis/math/Statistics.java | 3 +
.../main/org/apache/sis/util/Classes.java | 9 +-
.../sis/util/collection/WeakValueHashMap.java | 4 +-
.../apache/sis/util/internal/shared/Numerics.java | 2 +-
.../main/org/apache/sis/util/resources/Errors.java | 5 +
.../apache/sis/util/resources/Errors.properties | 1 +
.../apache/sis/util/resources/Errors_fr.properties | 1 +
.../sis/util/resources/IndexedResourceBundle.java | 14 +-
.../org/apache/sis/util/resources/Messages.java | 5 +
.../apache/sis/util/resources/Messages.properties | 1 +
.../sis/util/resources/Messages_fr.properties | 3 +-
.../org/apache/sis/util/resources/Vocabulary.java | 25 +-
.../sis/util/resources/Vocabulary.properties | 5 +-
.../sis/util/resources/Vocabulary_fr.properties | 7 +-
.../apache/sis/util/collection/RangeSetTest.java | 4 +-
incubator/build.gradle.kts | 33 +-
.../org.apache.sis.geometries.processor.Processor | 28 -
.../org.apache.sis.geometry/main/module-info.java | 30 +-
.../org/apache/sis/geometries/BoundaryType.java | 3 +-
.../sis/geometries/ParametricCurveSurface.java | 4 -
.../main/org/apache/sis/geometries/Polygon.java | 3 +-
.../main/org/apache/sis/geometries/Sphere.java | 18 +
.../geometries/csg/ConstructiveSolidGeometry.java | 39 +-
.../sis/geometries/ellipsoidal}/package-info.java | 6 +-
.../sis/geometries/math/ArrayFactoryHAT.java | 255 ++++++++
.../org/apache/sis/geometries/math/Vector3D.java | 29 +
.../geometries/operation/GeometryOperations.java | 33 +-
.../geometries/polyhedron/AbstractPolyhedron.java | 189 ++++++
.../sis/geometries/polyhedron/Dodecahedron.java | 90 +++
.../sis/geometries/polyhedron/Hexahedron.java | 68 ++
.../sis/geometries/polyhedron/Icosahedron.java | 90 +++
.../sis/geometries/polyhedron/Octahedron.java | 68 ++
.../polyhedron/RhombicTriacontahedron.java | 127 ++++
.../sis/geometries/polyhedron/Tetrahedron.java | 62 ++
.../polyhedron/TruncatedIcosahedron.java | 176 ++++++
.../{scene => polyhedron}/package-info.java | 17 +-
.../org/apache/sis/geometries/scene/Material.java | 628 ------------------
.../sis/geometries/spherical/GreatCircleArc.java | 79 +++
.../spherical/SphericalConvexPolygon.java | 85 +++
.../geometries/spherical/SphericalTriangle.java | 183 ++++++
.../sis/geometries/spherical}/package-info.java | 6 +-
.../org/apache/sis/geometries/spirals/Spiral.java | 2 +-
.../geometries/splinesurfaces/BSplineSurface.java | 1 -
.../sis/{geometries => }/scene/Animation.java | 2 +-
.../{geometries => }/scene/AnimationSampler.java | 2 +-
.../apache/sis/{geometries => }/scene/Camera.java | 2 +-
.../apache/sis/{geometries => }/scene/Model.java | 3 +-
.../sis/{geometries => }/scene/MorphTarget.java | 2 +-
.../apache/sis/{geometries => }/scene/Sampler.java | 2 +-
.../sis/{geometries => }/scene/SceneNode.java | 31 +-
.../main/org/apache/sis/scene/SceneUtilities.java} | 30 +-
.../apache/sis/{geometries => }/scene/Skin.java | 2 +-
.../apache/sis/{geometries => }/scene/Surface.java | 6 +-
.../apache/sis/{geometries => }/scene/Texture.java | 2 +-
.../org/apache/sis/scene/light/Directional.java | 107 ++++
.../main/org/apache/sis/scene/light/HDRI.java | 128 ++++
.../main/org/apache/sis/scene/light/Light.java | 77 +++
.../main/org/apache/sis/scene/light/Point.java | 131 ++++
.../main/org/apache/sis/scene/light/Quad.java | 157 +++++
.../main/org/apache/sis/scene/light/Ring.java | 172 +++++
.../main/org/apache/sis/scene/light/Spot.java | 154 +++++
.../org/apache/sis/scene/material/BlinnPhong.java | 198 ++++++
.../org/apache/sis/scene/material/Material.java | 209 ++++++
.../main/org/apache/sis/scene/material/PBR.java | 342 ++++++++++
.../main/org/apache/sis/scene/material/PBRSG.java | 203 ++++++
.../sis/{geometries => }/scene/package-info.java | 2 +-
.../{geometries => }/scene/physics/Collider.java | 2 +-
.../scene/physics/ColliderGeometry.java | 2 +-
.../scene/physics/CollisionFilter.java | 2 +-
.../sis/{geometries => }/scene/physics/Joint.java | 4 +-
.../sis/{geometries => }/scene/physics/Motion.java | 2 +-
.../scene/physics/PhysicalMaterial.java | 2 +-
.../{geometries => }/scene/physics/Trigger.java | 4 +-
.../scene/physics/package-info.java | 2 +-
.../apache/sis/geometries/math/Vector3DTest.java | 108 ++++
.../geometries/spherical/GreatCircleArcTest.java | 62 ++
.../spherical/SphericalConvexPolygonTest.java | 89 +++
.../spherical/SphericalTriangleTest.java | 145 +++++
.../org/apache/sis/scene/SceneUtilitiesTest.java | 62 ++
...g.dggs.DiscreteGlobalGridReferenceSystemFactory | 1 +
.../main/module-info.java | 41 ++
.../sis/referencing/dggs/DiscreteGlobalGrid.java | 139 ++++
.../dggs/DiscreteGlobalGridHierarchy.java | 135 ++++
.../dggs/DiscreteGlobalGridReferenceSystem.java | 157 +++++
.../DiscreteGlobalGridReferenceSystemFactory.java | 56 ++
.../dggs/DiscreteGlobalGridReferenceSystems.java | 221 +++++++
.../referencing/dggs/DiscreteGlobalGridSystem.java | 87 +++
.../sis/referencing/dggs/GridConstraints.java | 124 ++++
.../referencing/dggs/PolyhedronOrientation.java | 56 ++
.../referencing/dggs/PolyhedronParameters.java} | 24 +-
.../sis/referencing/dggs/RefinementLevel.java | 98 +++
.../sis/referencing/dggs/RefinementStrategy.java | 133 ++++
.../apache/sis/referencing/dggs/SubZoneOrder.java | 114 ++++
.../sis/referencing/dggs/ZonalReferenceSystem.java | 47 ++
.../main/org/apache/sis/referencing/dggs/Zone.java | 230 +++++++
.../shared/AbstractDiscreteGlobalGrid.java | 132 ++++
.../AbstractDiscreteGlobalGridHierarchy.java | 57 ++
.../shared/AbstractDiscreteGlobalGridSystem.java | 55 ++
.../dggs/internal/shared/AbstractZone.java | 145 +++++
.../dggs/internal/shared/AuthalicSphere.java | 134 ++++
.../shared/DefaultZonalReferenceSystem.java} | 35 +-
.../apache/sis/referencing/dggs/package-info.java | 35 +
.../apache/sis/referencing/dggs/s2/S2Coder.java | 83 +++
.../org/apache/sis/referencing/dggs/s2/S2Dgg.java | 138 ++++
.../org/apache/sis/referencing/dggs/s2/S2Dggh.java | 95 +++
.../apache/sis/referencing/dggs/s2/S2Dggrs.java | 131 ++++
.../org/apache/sis/referencing/dggs/s2/S2Dggs.java | 85 +++
.../apache/sis/referencing/dggs/s2/S2Factory.java | 55 ++
.../org/apache/sis/referencing/dggs/s2/S2Zone.java | 154 +++++
.../main/org/apache/sis/referencing/rs/Code.java | 197 ++++++
.../apache/sis/referencing/rs/CodeOperation.java | 104 +++
.../org/apache/sis/referencing/rs/CompoundRS.java | 207 ++++++
.../sis/referencing/rs/ReferenceSystems.java | 264 ++++++++
.../rs/internal/shared/CodeOperations.java | 518 +++++++++++++++
.../apache/sis/referencing/rs}/package-info.java | 7 +-
.../sis/storage/coverage/BandedCoverageExt.java} | 32 +-
.../storage/coverage/BandedCoverageResource.java | 226 +++++++
.../sis/storage/coverage/CoverageUtilities.java | 65 ++
.../apache/sis/storage/coverage/FeatureExt.java | 241 +++++++
.../dggs/DiscreteGlobalGridCoverageProcessor.java | 702 +++++++++++++++++++++
.../storage/dggs/DiscreteGlobalGridGeometry.java | 400 ++++++++++++
.../storage/dggs/DiscreteGlobalGridResource.java | 128 ++++
.../storage/dggs/DiscreteGlobalGridSystems.java | 325 ++++++++++
.../storage/dggs/DiscreteGlobalGridTransform.java | 411 ++++++++++++
.../shared/AbstractDiscreteGlobalGridCoverage.java | 164 +++++
.../shared/ArrayDiscreteGlobalGridCoverage.java | 171 +++++
...ingTiledDiscreteGlobalGridCoverageResource.java | 160 +++++
.../internal/shared/ComputedZoneIndexList.java | 162 +++++
.../FeatureSetAsDiscreteGlobalGridResource.java | 181 ++++++
.../shared/GridAsDiscreteGlobalGridResource.java | 140 ++++
.../shared/IndexedDiscreteGlobalGridCoverage.java | 266 ++++++++
.../shared/MemoryDiscreteGlobalGridResource.java | 73 +++
.../shared/RasterDiscreteGlobalGridCoverage.java | 172 +++++
.../shared/TiledDiscreteGlobalGridCoverage.java | 315 +++++++++
.../TiledDiscreteGlobalGridCoverageResource.java | 120 ++++
...leTiledDiscreteGlobalGridCoverageResource.java} | 15 +-
.../sis/storage/image/internal/ImageBuilder.java | 226 +++++++
.../sis/storage/image/internal/MergeOperator.java} | 7 +-
.../org/apache/sis/storage/rs/CodeIterator.java | 125 ++++
.../org/apache/sis/storage/rs/CodeTransform.java} | 17 +-
.../org/apache/sis/storage/rs/CodedCoverage.java | 204 ++++++
.../org/apache/sis/storage/rs/CodedCoverages.java | 60 ++
.../org/apache/sis/storage/rs/CodedGeometry.java | 384 +++++++++++
.../org/apache/sis/storage/rs/CodedResource.java | 177 ++++++
.../sis/storage/rs/CompoundCodedGeometry.java | 103 +++
.../sis/storage/rs/WritableCodeIterator.java | 91 +++
.../rs/internal/shared/AbstractCodedCoverage.java | 397 ++++++++++++
.../rs/internal/shared/AddDimCodedCoverage.java | 201 ++++++
.../rs/internal/shared/AddDimCodedResource.java | 108 ++++
.../rs/internal/shared/ArrayCodedCoverage.java | 203 ++++++
.../storage/rs/internal/shared/CodeTransforms.java | 458 ++++++++++++++
.../internal/shared/CodedCoverageAsFeatureSet.java | 282 +++++++++
.../rs/internal/shared/CompoundCodedCoverage.java | 118 ++++
.../rs/internal/shared/CompoundCodedResource.java | 254 ++++++++
.../rs/internal/shared/GridAsCodedResource.java | 306 +++++++++
.../rs/internal/shared/MemoryCodedResource.java | 65 ++
.../rs/internal/shared/ResampledCodedCoverage.java | 159 +++++
.../storage/rs/internal/shared/SubTransform.java | 47 ++
.../sis/storage/rs/internal/shared/s2/Factory.java | 323 ++++++++++
.../sis/storage/rs/internal/shared/s2/S2.java | 268 ++++++++
.../sis/storage/rs/internal/shared/s2/Wrapper.java | 97 +++
.../sis/referencing/dggs/AbstractDggrsTest.java | 252 ++++++++
.../org/apache/sis/referencing/dggs/s2/S2Test.java | 61 ++
.../sis/referencing/rs/CodeOperationTest.java | 175 +++++
.../rs/ArrayReferencedGridCoverageTest.java | 184 ++++++
.../coveragejson/binding/CategoryEncoding.java | 82 ---
.../storage/coveragejson/binding/Dictionary.java | 73 ---
.../sis/storage/coveragejson/binding/I18N.java | 125 ----
.../storage/coveragejson/binding/Parameters.java | 78 ---
.../sis/storage/coveragejson/binding/Ranges.java | 74 ---
.../org.apache.sis.storage.DataStoreProvider | 0
.../main/module-info.java | 27 +-
.../storage/coveragejson/CoverageJsonStore.java | 17 +-
.../coveragejson/CoverageJsonStoreProvider.java | 0
.../sis/storage/coveragejson/CoverageResource.java | 18 +-
.../sis/storage/coveragejson/binding/Axe.java | 9 +-
.../sis/storage/coveragejson/binding/Axes.java | 16 +-
.../sis/storage/coveragejson/binding/Category.java | 10 +-
.../coveragejson/binding/CategoryEncoding.java} | 16 +-
.../sis/storage/coveragejson/binding/Coverage.java | 47 +-
.../coveragejson/binding/CoverageCollection.java | 10 +-
.../coveragejson/binding/CoverageJsonObject.java | 37 +-
.../sis/storage/coveragejson/binding/Domain.java | 7 +-
.../coveragejson/binding/GeographicCRS.java | 7 +-
.../sis/storage/coveragejson/binding/I18N.java | 77 +++
.../storage/coveragejson/binding/IdentifierRS.java | 10 +-
.../sis/storage/coveragejson/binding/NdArray.java | 7 +-
.../coveragejson/binding/ObservedProperty.java | 9 +-
.../storage/coveragejson/binding/Parameter.java | 7 +-
.../coveragejson/binding/ParameterGroup.java | 7 +-
.../storage/coveragejson/binding/ProjectedCRS.java | 7 +-
.../binding/ReferenceSystemConnection.java | 9 +-
.../sis/storage/coveragejson/binding/Symbol.java | 9 +-
.../coveragejson/binding/TargetConcept.java | 9 +-
.../storage/coveragejson/binding/TemporalRS.java | 7 +-
.../sis/storage/coveragejson/binding/TileSet.java | 9 +-
.../storage/coveragejson/binding/TiledNdArray.java | 9 +-
.../sis/storage/coveragejson/binding/Unit.java | 9 +-
.../storage/coveragejson/binding/VerticalCRS.java | 7 +-
.../storage/coveragejson/binding/package-info.java | 0
.../sis/storage/coveragejson/package-info.java | 0
.../org/apache/sis/storage/geojson/GeoJSON.java | 165 +++++
.../apache/sis/storage/geojson/GeoJSONMapper.java | 481 ++++++++++++++
.../storage/geojson/binding/GeoJSONFeature.java | 318 ++++++++++
.../geojson/binding/GeoJSONFeatureCollection.java | 322 ++++++++++
.../storage/geojson/binding/GeoJSONGeometry.java | 134 ++++
.../geojson/binding/GeoJSONGeometryCollection.java | 84 +++
.../storage/geojson/binding/GeoJSONLineString.java | 85 +++
.../geojson/binding/GeoJSONMultiLineString.java | 85 +++
.../storage/geojson/binding/GeoJSONMultiPoint.java | 85 +++
.../geojson/binding/GeoJSONMultiPolygon.java | 85 +++
.../sis/storage/geojson/binding/GeoJSONObject.java | 104 +++
.../sis/storage/geojson/binding/GeoJSONPoint.java | 88 +++
.../storage/geojson/binding/GeoJSONPolygon.java | 85 +++
.../geojson/binding/JSONFGCircularString.java | 88 +++
.../geojson/binding/JSONFGCompoundCurve.java | 88 +++
.../storage/geojson/binding/JSONFGCoordRefSys.java | 131 ++++
.../geojson/binding/JSONFGCurvePolygon.java | 89 +++
.../storage/geojson/binding/JSONFGMeasures.java | 123 ++++
.../storage/geojson/binding/JSONFGMultiCurve.java | 89 +++
.../geojson/binding/JSONFGMultiPolyhedron.java | 85 +++
.../storage/geojson/binding/JSONFGMultiPrism.java | 85 +++
.../geojson/binding/JSONFGMultiSurface.java | 88 +++
.../storage/geojson/binding/JSONFGPolyhedron.java | 86 +++
.../sis/storage/geojson/binding/JSONFGPrism.java | 127 ++++
.../sis/storage/geojson/binding/JSONFGTime.java | 124 ++++
.../sis/storage/geojson/binding}/package-info.java | 12 +-
.../sis/storage/json/DataTransferObject.java | 100 +++
.../movingfeature/binding/MFCoordRefSys.java | 110 ++++
.../movingfeature/binding/MFMovingFeature.java | 277 ++++++++
.../binding/MFMovingFeatureCollection.java | 270 ++++++++
.../binding/MFMovingGeometryBase.java | 101 +++
.../binding/MFMovingGeometryCollection.java | 93 +++
.../movingfeature/binding/MFMovingLineString.java | 87 +++
.../movingfeature/binding/MFMovingPoint.java | 86 +++
.../movingfeature/binding/MFMovingPointCloud.java | 89 +++
.../movingfeature/binding/MFMovingPolygon.java | 88 +++
.../movingfeature/binding/MFOrientation.java | 103 +++
.../movingfeature/binding/MFTemporalGeometry.java | 128 ++++
.../binding/MFTemporalPrimitiveGeometry.java | 152 +++++
.../binding/MFTemporalPropertyGroup.java | 94 +++
.../binding/MFTemporalPropertyValue.java | 186 ++++++
.../movingfeature/binding}/package-info.java | 11 +-
.../main/org/apache/sis/storage/ogcjson/Link.java | 280 ++++++++
.../apache/sis/storage/ogcjson}/package-info.java | 6 +-
.../coveragejson/CoverageJsonStoreTest.java | 0
.../storage/coveragejson/binding/BindingTest.java | 69 +-
.../sis/storage/coveragejson/binding/LICENSE.md | 0
.../storage/coveragejson/binding/axe_bounds.json | 0
.../storage/coveragejson/binding/axe_polygon.json | 0
.../storage/coveragejson/binding/axe_regular.json | 0
.../storage/coveragejson/binding/axe_tuples.json | 0
.../binding/coverage_vertical_profile.json | 0
.../binding/coverage_vertical_profile_nocs.json | 0
.../coveragejson/binding/coveragecollection.json | 0
.../storage/coveragejson/binding/domain_grid.json | 0
.../coveragejson/binding/domain_trajectory.json | 0
.../coveragejson/binding/domaintype_grid.json | 0
.../binding/domaintype_multipoint.json | 0
.../binding/domaintype_multipointseries.json | 0
.../binding/domaintype_multipolygon.json | 0
.../binding/domaintype_multipolygonseries.json | 0
.../coveragejson/binding/domaintype_point.json | 0
.../binding/domaintype_pointseries.json | 0
.../coveragejson/binding/domaintype_polygon.json | 0
.../binding/domaintype_polygonseries.json | 0
.../coveragejson/binding/domaintype_section.json | 0
.../binding/domaintype_trajectory.json | 0
.../binding/domaintype_vertical_profile.json | 0
.../binding/geographiccrs_longlat.json | 0
.../binding/geographiccrs_longlatheight.json | 0
.../sis/storage/coveragejson/binding/ndarray.json | 0
.../binding/parameter_categoricaldata.json | 0
.../binding/parameter_continuousdata.json | 0
.../binding/parametergroup_uncertainty.json | 0
.../binding/parametergroup_vectorquantity.json | 0
.../binding/projectedcrs_britishnationalgrid.json | 0
.../binding/reference_system_connection.json | 0
.../storage/coveragejson/binding/temporalrs.json | 0
.../storage/coveragejson/binding/tiledndarray.json | 0
.../coveragejson/binding/verticalcrs_navd88.json | 0
.../sis/storage/coveragejson/coverage_xyzt.json | 0
.../sis/storage/geojson/binding/BindingTest.java} | 13 +-
.../storage/geojson/binding/geojson_feature.json | 10 +
.../geojson/binding/geojson_featurecollection.json | 48 ++
.../binding/geojson_geometrycollection.json | 13 +
.../geojson/binding/geojson_linestring.json | 7 +
.../geojson/binding/geojson_multilinestring.json | 13 +
.../geojson/binding/geojson_multipoint.json | 7 +
.../geojson/binding/geojson_multipolygon.json | 30 +
.../sis/storage/geojson/binding/geojson_point.json | 4 +
.../storage/geojson/binding/geojson_polygon.json | 12 +
.../binding/jsonfg_circularstring_measures.json | 13 +
.../binding/jsonfg_circularstring_no_measures.json | 8 +
.../binding/jsonfg_compoundcurve_measures.json | 25 +
.../binding/jsonfg_compoundcurve_no_measures.json | 20 +
.../geojson/binding/jsonfg_coordrefsys.json | 18 +
.../binding/jsonfg_curvepolygon_measures.json | 20 +
.../binding/jsonfg_curvepolygon_no_measures.json | 15 +
.../storage/geojson/binding/jsonfg_feature.json | 49 ++
.../jsonfg_geometrycollection_measures.json | 21 +
.../jsonfg_geometrycollection_no_measures.json | 16 +
.../binding/jsonfg_linestring_measures.json | 12 +
.../binding/jsonfg_linestring_no_measures.json | 7 +
.../binding/jsonfg_multicurve_measures.json | 25 +
.../binding/jsonfg_multicurve_no_measures.json | 20 +
.../binding/jsonfg_multilinestring_measures.json | 18 +
.../jsonfg_multilinestring_no_measures.json | 13 +
.../binding/jsonfg_multipoint_measures.json | 12 +
.../binding/jsonfg_multipoint_no_measures.json | 7 +
.../binding/jsonfg_multipolygon_measures.json | 35 +
.../binding/jsonfg_multipolygon_no_measures.json | 30 +
.../binding/jsonfg_multipolyhedron_measures.json | 23 +
.../jsonfg_multipolyhedron_no_measures.json | 18 +
.../binding/jsonfg_multiprism_measures.json | 27 +
.../binding/jsonfg_multiprism_no_measures.json | 22 +
.../binding/jsonfg_multisurface_measures.json | 37 ++
.../binding/jsonfg_multisurface_no_measures.json | 32 +
.../geojson/binding/jsonfg_point_measures.json | 9 +
.../geojson/binding/jsonfg_point_no_measures.json | 4 +
.../geojson/binding/jsonfg_polygon_measures.json | 17 +
.../binding/jsonfg_polygon_no_measures.json | 12 +
.../binding/jsonfg_polyhedron_measures.json | 21 +
.../binding/jsonfg_polyhedron_no_measures.json | 16 +
.../geojson/binding/jsonfg_prism_measures.json | 22 +
.../geojson/binding/jsonfg_prism_no_measures.json | 17 +
.../storage/geojson/binding/jsonfg_time_date.json | 15 +
.../geojson/binding/jsonfg_time_interval.json | 18 +
.../binding/jsonfg_time_interval_open_end.json | 18 +
.../binding/jsonfg_time_interval_open_start.json | 18 +
.../geojson/binding/jsonfg_time_timestamp.json | 15 +
.../sis/storage/json/AbstractBindingTest.java | 76 +++
.../movingfeature/binding/BindingTest.java} | 13 +-
netbeans-project/ivy.xml | 6 +
netbeans-project/nbproject/project.properties | 2 +-
.../apache/sis/gui/coverage/CoverageCanvas.java | 211 ++-----
.../apache/sis/gui/coverage/CoverageControls.java | 2 +-
.../apache/sis/gui/coverage/CoverageExplorer.java | 2 +-
.../org/apache/sis/gui/coverage/GridControls.java | 2 +-
.../main/org/apache/sis/gui/coverage/GridView.java | 2 +-
.../apache/sis/gui/coverage/RectangleMerger.java | 111 ++++
.../sis/gui/coverage/StyledRenderingData.java | 5 +
.../apache/sis/gui/coverage/TileReadListener.java | 327 ++++++++++
.../org/apache/sis/gui/dataset/WindowHandler.java | 2 +-
.../org/apache/sis/gui/internal/LogHandler.java | 2 +-
.../apache/sis/gui/internal/ShapeConverter.java | 5 +-
.../org/apache/sis/gui/map/EvanescentPane.java | 1 +
.../main/org/apache/sis/gui/map/MapCanvas.java | 40 +-
.../main/org/apache/sis/gui/map/MultiCanvas.java | 2 +-
.../org/apache/sis/gui/map/ValuesFormatter.java | 7 +-
.../org/apache/sis/gui/map/ValuesUnderCursor.java | 2 +-
.../org/apache/sis/storage/gdal/TiledResource.java | 16 +-
settings.gradle.kts | 1 +
471 files changed, 28807 insertions(+), 2775 deletions(-)
create mode 100644 endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/internal/Summarizer.java
copy endorsed/src/{org.apache.sis.storage/main/org/apache/sis/storage/aggregate => org.apache.sis.feature/main/org/apache/sis/image/internal}/package-info.java (72%)
rename endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/internal/shared/{ObservableImage.java => WritableUntiledImage.java} (53%)
copy endorsed/src/{org.apache.sis.feature/test/org/apache/sis/image/ImageLayoutTest.java => org.apache.sis.metadata/main/org/apache/sis/metadata/UnresolvedTypePolicy.java} (56%)
create mode 100644 endorsed/src/org.apache.sis.portrayal/test/org/apache/sis/map/coverage/RenderingDataTest.java
create mode 100644 endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/tiling/ArtificiallyTiledImage.java
delete mode 100644 incubator/src/org.apache.sis.geometry/main/META-INF/services/org.apache.sis.geometries.processor.Processor
copy incubator/src/{org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson => org.apache.sis.geometry/main/org/apache/sis/geometries/ellipsoidal}/package-info.java (81%)
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/math/ArrayFactoryHAT.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/polyhedron/AbstractPolyhedron.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/polyhedron/Dodecahedron.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/polyhedron/Hexahedron.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/polyhedron/Icosahedron.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/polyhedron/Octahedron.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/polyhedron/RhombicTriacontahedron.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/polyhedron/Tetrahedron.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/polyhedron/TruncatedIcosahedron.java
copy incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/{scene => polyhedron}/package-info.java (60%)
delete mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/scene/Material.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/spherical/GreatCircleArc.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/spherical/SphericalConvexPolygon.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/spherical/SphericalTriangle.java
copy incubator/src/{org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson => org.apache.sis.geometry/main/org/apache/sis/geometries/spherical}/package-info.java (82%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/Animation.java (98%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/AnimationSampler.java (98%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/Camera.java (99%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/Model.java (98%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/MorphTarget.java (98%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/Sampler.java (99%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/SceneNode.java (96%)
copy incubator/src/{org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/Identifiers.java => org.apache.sis.geometry/main/org/apache/sis/scene/SceneUtilities.java} (54%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/Skin.java (98%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/Surface.java (95%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/Texture.java (99%)
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/light/Directional.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/light/HDRI.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/light/Light.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/light/Point.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/light/Quad.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/light/Ring.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/light/Spot.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/material/BlinnPhong.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/material/Material.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/material/PBR.java
create mode 100644 incubator/src/org.apache.sis.geometry/main/org/apache/sis/scene/material/PBRSG.java
copy incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/package-info.java (96%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/physics/Collider.java (98%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/physics/ColliderGeometry.java (97%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/physics/CollisionFilter.java (98%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/physics/Joint.java (98%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/physics/Motion.java (99%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/physics/PhysicalMaterial.java (98%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/physics/Trigger.java (96%)
rename incubator/src/org.apache.sis.geometry/main/org/apache/sis/{geometries => }/scene/physics/package-info.java (96%)
create mode 100644 incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/math/Vector3DTest.java
create mode 100644 incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/spherical/GreatCircleArcTest.java
create mode 100644 incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/spherical/SphericalConvexPolygonTest.java
create mode 100644 incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/spherical/SphericalTriangleTest.java
create mode 100644 incubator/src/org.apache.sis.geometry/test/org/apache/sis/scene/SceneUtilitiesTest.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/META-INF/services/org.apache.sis.referencing.dggs.DiscreteGlobalGridReferenceSystemFactory
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/module-info.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/DiscreteGlobalGrid.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/DiscreteGlobalGridHierarchy.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/DiscreteGlobalGridReferenceSystem.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/DiscreteGlobalGridReferenceSystemFactory.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/DiscreteGlobalGridReferenceSystems.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/DiscreteGlobalGridSystem.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/GridConstraints.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/PolyhedronOrientation.java
copy incubator/src/{org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/Identifiers.java => org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/PolyhedronParameters.java} (66%)
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/RefinementLevel.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/RefinementStrategy.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/SubZoneOrder.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/ZonalReferenceSystem.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/Zone.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/internal/shared/AbstractDiscreteGlobalGrid.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/internal/shared/AbstractDiscreteGlobalGridHierarchy.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/internal/shared/AbstractDiscreteGlobalGridSystem.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/internal/shared/AbstractZone.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/internal/shared/AuthalicSphere.java
copy incubator/src/{org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/Identifiers.java => org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/internal/shared/DefaultZonalReferenceSystem.java} (51%)
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/package-info.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/s2/S2Coder.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/s2/S2Dgg.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/s2/S2Dggh.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/s2/S2Dggrs.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/s2/S2Dggs.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/s2/S2Factory.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/dggs/s2/S2Zone.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/Code.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/CodeOperation.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/CompoundRS.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/ReferenceSystems.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/internal/shared/CodeOperations.java
copy incubator/src/{org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson => org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs}/package-info.java (82%)
copy incubator/src/{org.apache.sis.geometry/main/org/apache/sis/geometries/spirals/Spiral.java => org.apache.sis.referencing.dggs/main/org/apache/sis/storage/coverage/BandedCoverageExt.java} (50%)
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/coverage/BandedCoverageResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/coverage/CoverageUtilities.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/coverage/FeatureExt.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/DiscreteGlobalGridCoverageProcessor.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/DiscreteGlobalGridGeometry.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/DiscreteGlobalGridResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/DiscreteGlobalGridSystems.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/DiscreteGlobalGridTransform.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/AbstractDiscreteGlobalGridCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/ArrayDiscreteGlobalGridCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/CachingTiledDiscreteGlobalGridCoverageResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/ComputedZoneIndexList.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/FeatureSetAsDiscreteGlobalGridResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/GridAsDiscreteGlobalGridResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/IndexedDiscreteGlobalGridCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/MemoryDiscreteGlobalGridResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/RasterDiscreteGlobalGridCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/TiledDiscreteGlobalGridCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/TiledDiscreteGlobalGridCoverageResource.java
copy incubator/src/{org.apache.sis.geometry/main/org/apache/sis/geometries/csg/ConstructiveSolidGeometry.java => org.apache.sis.referencing.dggs/main/org/apache/sis/storage/dggs/internal/shared/WritableTiledDiscreteGlobalGridCoverageResource.java} (58%)
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/image/internal/ImageBuilder.java
copy incubator/src/{org.apache.sis.geometry/main/org/apache/sis/geometries/csg/ConstructiveSolidGeometry.java => org.apache.sis.referencing.dggs/main/org/apache/sis/storage/image/internal/MergeOperator.java} (83%)
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/CodeIterator.java
copy incubator/src/{org.apache.sis.geometry/main/org/apache/sis/geometries/csg/ConstructiveSolidGeometry.java => org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/CodeTransform.java} (65%)
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/CodedCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/CodedCoverages.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/CodedGeometry.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/CodedResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/CompoundCodedGeometry.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/WritableCodeIterator.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/AbstractCodedCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/AddDimCodedCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/AddDimCodedResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/ArrayCodedCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/CodeTransforms.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/CodedCoverageAsFeatureSet.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/CompoundCodedCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/CompoundCodedResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/GridAsCodedResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/MemoryCodedResource.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/ResampledCodedCoverage.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/SubTransform.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/s2/Factory.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/s2/S2.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/storage/rs/internal/shared/s2/Wrapper.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/test/org/apache/sis/referencing/dggs/AbstractDggrsTest.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/test/org/apache/sis/referencing/dggs/s2/S2Test.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/test/org/apache/sis/referencing/rs/CodeOperationTest.java
create mode 100644 incubator/src/org.apache.sis.referencing.dggs/test/org/apache/sis/storage/rs/ArrayReferencedGridCoverageTest.java
delete mode 100644 incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/CategoryEncoding.java
delete mode 100644 incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/Dictionary.java
delete mode 100644 incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/I18N.java
delete mode 100644 incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/Parameters.java
delete mode 100644 incubator/src/org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/Ranges.java
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/META-INF/services/org.apache.sis.storage.DataStoreProvider (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/module-info.java (62%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/CoverageJsonStore.java (91%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/CoverageJsonStoreProvider.java (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/CoverageResource.java (98%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/Axe.java (95%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/Axes.java (80%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/Category.java (90%)
rename incubator/src/{org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson/binding/Identifiers.java => org.apache.sis.storage.json/main/org/apache/sis/storage/coveragejson/binding/CategoryEncoding.java} (67%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/Coverage.java (80%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/CoverageCollection.java (93%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/CoverageJsonObject.java (64%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/Domain.java (95%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/GeographicCRS.java (94%)
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/coveragejson/binding/I18N.java
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/IdentifierRS.java (92%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/NdArray.java (95%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/ObservedProperty.java (91%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/Parameter.java (93%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/ParameterGroup.java (94%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/ProjectedCRS.java (93%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/ReferenceSystemConnection.java (91%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/Symbol.java (89%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/TargetConcept.java (88%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/TemporalRS.java (94%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/TileSet.java (92%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/TiledNdArray.java (92%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/Unit.java (91%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/VerticalCRS.java (92%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/binding/package-info.java (100%)
copy incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/main/org/apache/sis/storage/coveragejson/package-info.java (100%)
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/GeoJSON.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/GeoJSONMapper.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONFeature.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONFeatureCollection.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONGeometry.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONGeometryCollection.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONLineString.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONMultiLineString.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONMultiPoint.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONMultiPolygon.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONObject.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONPoint.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/GeoJSONPolygon.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGCircularString.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGCompoundCurve.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGCoordRefSys.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGCurvePolygon.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGMeasures.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGMultiCurve.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGMultiPolyhedron.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGMultiPrism.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGMultiSurface.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGPolyhedron.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGPrism.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding/JSONFGTime.java
copy incubator/src/{org.apache.sis.geometry/main/org/apache/sis/geometries/scene => org.apache.sis.storage.json/main/org/apache/sis/storage/geojson/binding}/package-info.java (71%)
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/json/DataTransferObject.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFCoordRefSys.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFMovingFeature.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFMovingFeatureCollection.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFMovingGeometryBase.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFMovingGeometryCollection.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFMovingLineString.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFMovingPoint.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFMovingPointCloud.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFMovingPolygon.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFOrientation.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFTemporalGeometry.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFTemporalPrimitiveGeometry.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFTemporalPropertyGroup.java
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding/MFTemporalPropertyValue.java
rename incubator/src/{org.apache.sis.geometry/main/org/apache/sis/geometries/scene => org.apache.sis.storage.json/main/org/apache/sis/storage/movingfeature/binding}/package-info.java (71%)
create mode 100644 incubator/src/org.apache.sis.storage.json/main/org/apache/sis/storage/ogcjson/Link.java
rename incubator/src/{org.apache.sis.storage.coveragejson/main/org/apache/sis/storage/coveragejson => org.apache.sis.storage.json/main/org/apache/sis/storage/ogcjson}/package-info.java (86%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/CoverageJsonStoreTest.java (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/BindingTest.java (74%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/LICENSE.md (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/axe_bounds.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/axe_polygon.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/axe_regular.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/axe_tuples.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/coverage_vertical_profile.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/coverage_vertical_profile_nocs.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/coveragecollection.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domain_grid.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domain_trajectory.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_grid.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_multipoint.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_multipointseries.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_multipolygon.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_multipolygonseries.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_point.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_pointseries.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_polygon.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_polygonseries.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_section.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_trajectory.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/domaintype_vertical_profile.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/geographiccrs_longlat.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/geographiccrs_longlatheight.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/ndarray.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/parameter_categoricaldata.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/parameter_continuousdata.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/parametergroup_uncertainty.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/parametergroup_vectorquantity.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/projectedcrs_britishnationalgrid.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/reference_system_connection.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/temporalrs.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/tiledndarray.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/binding/verticalcrs_navd88.json (100%)
rename incubator/src/{org.apache.sis.storage.coveragejson => org.apache.sis.storage.json}/test/org/apache/sis/storage/coveragejson/coverage_xyzt.json (100%)
copy incubator/src/{org.apache.sis.geometry/main/org/apache/sis/geometries/csg/ConstructiveSolidGeometry.java => org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/BindingTest.java} (67%)
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/geojson_feature.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/geojson_featurecollection.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/geojson_geometrycollection.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/geojson_linestring.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/geojson_multilinestring.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/geojson_multipoint.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/geojson_multipolygon.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/geojson_point.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/geojson_polygon.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_circularstring_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_circularstring_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_compoundcurve_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_compoundcurve_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_coordrefsys.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_curvepolygon_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_curvepolygon_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_feature.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_geometrycollection_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_geometrycollection_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_linestring_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_linestring_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multicurve_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multicurve_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multilinestring_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multilinestring_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multipoint_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multipoint_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multipolygon_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multipolygon_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multipolyhedron_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multipolyhedron_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multiprism_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multiprism_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multisurface_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_multisurface_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_point_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_point_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_polygon_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_polygon_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_polyhedron_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_polyhedron_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_prism_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_prism_no_measures.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_time_date.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_time_interval.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_time_interval_open_end.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_time_interval_open_start.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/geojson/binding/jsonfg_time_timestamp.json
create mode 100644 incubator/src/org.apache.sis.storage.json/test/org/apache/sis/storage/json/AbstractBindingTest.java
copy incubator/src/{org.apache.sis.geometry/main/org/apache/sis/geometries/csg/ConstructiveSolidGeometry.java => org.apache.sis.storage.json/test/org/apache/sis/storage/movingfeature/binding/BindingTest.java} (66%)
create mode 100644 optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/RectangleMerger.java
create mode 100644 optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/TileReadListener.java
(sis) 01/01: Merge branch 'geoapi-4.0' into geoapi-3.1
Posted by de...@apache.org.
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 b7f39770a226034d9fddcd1593a36db65b33954c
Merge: e3537fc7c1 ccf06de245
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Fri Aug 14 19:16:38 2026 +0200
Merge branch 'geoapi-4.0' into geoapi-3.1
.../apache/sis/buildtools/gradle/Dependency.java | 3 +-
.../org/apache/sis/console/HelpCommandTest.java | 1 +
.../org.apache.sis.feature/main/module-info.java | 5 +
.../sis/coverage/grid/ClippedGridCoverage.java | 4 +-
.../apache/sis/coverage/grid/GridCRSBuilder.java | 156 +++--
.../org/apache/sis/coverage/grid/GridCoverage.java | 17 +-
.../apache/sis/coverage/grid/GridCoverage2D.java | 100 ++-
.../sis/coverage/grid/GridCoverageBuilder.java | 6 +-
.../apache/sis/coverage/grid/GridDerivation.java | 2 +-
.../org/apache/sis/coverage/grid/GridExtent.java | 136 ++--
.../org/apache/sis/coverage/grid/GridGeometry.java | 43 +-
.../apache/sis/coverage/grid/ImageRenderer.java | 121 +---
.../apache/sis/coverage/grid/SliceGeometry.java | 3 +-
.../org/apache/sis/feature/AbstractFeature.java | 5 -
.../org/apache/sis/feature/internal/Resources.java | 15 +
.../sis/feature/internal/Resources.properties | 3 +
.../sis/feature/internal/Resources_fr.properties | 3 +
.../main/org/apache/sis/image/BandSelectImage.java | 4 +-
.../apache/sis/image/BandedSampleConverter.java | 6 +-
.../main/org/apache/sis/image/ComputedImage.java | 12 +-
.../main/org/apache/sis/image/ImageLayout.java | 38 +-
.../main/org/apache/sis/image/ImageOverlay.java | 2 +-
.../org/apache/sis/image/MultiSourcePrefetch.java | 5 +-
.../main/org/apache/sis/image/PlanarImage.java | 128 ++--
.../main/org/apache/sis/image/PrefetchedImage.java | 4 +-
.../org/apache/sis/image/SourceAlignedImage.java | 2 +-
.../apache/sis/image/WritableComputedImage.java | 8 +-
.../org/apache/sis/image/internal/Summarizer.java | 275 ++++++++
.../apache/sis/image/internal}/package-info.java | 14 +-
.../image/internal/shared/BatchComputedImage.java | 27 +-
.../image/internal/shared/ColorModelFactory.java | 54 +-
.../image/internal/shared/DeferredProperty.java | 47 +-
.../sis/image/internal/shared/ImageUtilities.java | 36 +-
.../sis/image/internal/shared/RasterFactory.java | 21 +-
.../sis/image/internal/shared/ReshapedImage.java | 115 +++-
.../image/internal/shared/ScaledColorSpace.java | 13 +-
.../sis/image/internal/shared/TileOpExecutor.java | 7 +-
.../sis/image/internal/shared/TiledImage.java | 6 +-
.../image/internal/shared/WritableTiledImage.java | 16 +-
...ervableImage.java => WritableUntiledImage.java} | 272 ++++++--
.../apache/sis/coverage/grid/GridExtentTest.java | 57 +-
.../coverage/grid/ResampledGridCoverageTest.java | 6 +-
.../test/org/apache/sis/image/ImageLayoutTest.java | 9 +
.../test/org/apache/sis/image/TiledImageMock.java | 71 ++-
.../image/internal/shared/ReshapedImageTest.java | 5 +-
.../org/apache/sis/metadata/AbstractMetadata.java | 6 +-
.../main/org/apache/sis/metadata/CacheKey.java | 9 +-
.../org/apache/sis/metadata/MetadataCopier.java | 2 +-
.../org/apache/sis/metadata/MetadataStandard.java | 393 ++++++++----
.../org/apache/sis/metadata/MetadataVisitor.java | 15 +-
.../apache/sis/metadata/ModifiableMetadata.java | 46 +-
.../org/apache/sis/metadata/PropertyAccessor.java | 3 +-
.../main/org/apache/sis/metadata/Pruner.java | 4 +-
.../main/org/apache/sis/metadata/StateChanger.java | 2 +-
.../main/org/apache/sis/metadata/TreeNode.java | 10 +-
.../apache/sis/metadata/UnresolvedTypePolicy.java} | 40 +-
.../apache/sis/metadata/internal/Resources.java | 5 +
.../sis/metadata/internal/Resources.properties | 1 +
.../sis/metadata/internal/Resources_fr.properties | 1 +
.../sis/metadata/internal/shared/Merger.java | 88 ++-
.../iso/extent/DefaultGeographicBoundingBox.java | 2 +-
.../main/org/apache/sis/metadata/package-info.java | 2 +-
.../sis/metadata/sql/internal/shared/Dialect.java | 43 +-
.../metadata/sql/internal/shared/SQLBuilder.java | 11 +-
.../sis/metadata/sql/internal/shared/Supports.java | 7 +-
.../org/apache/sis/util/iso/DefaultRecordType.java | 2 +-
.../apache/sis/xml/bind/cat/CodeListAdapter.java | 2 +-
.../test/org/apache/sis/metadata/HashCodeTest.java | 4 +-
.../apache/sis/metadata/InformationMapTest.java | 1 +
.../apache/sis/metadata/MetadataStandardTest.java | 28 +-
.../test/org/apache/sis/metadata/NameMapTest.java | 1 +
.../test/org/apache/sis/metadata/PrunerTest.java | 1 +
.../org/apache/sis/metadata/SpecialCasesTest.java | 1 +
.../apache/sis/metadata/TreeNodeChildrenTest.java | 2 +-
.../test/org/apache/sis/metadata/TypeMapTest.java | 1 +
.../sis/metadata/internal/shared/MergerTest.java | 24 +-
.../org/apache/sis/map/coverage/RenderingData.java | 24 +-
.../apache/sis/map/coverage/RenderingDataTest.java | 256 ++++++++
.../main/module-info.java | 1 +
.../main/org/apache/sis/geometry/Envelopes.java | 51 +-
.../org/apache/sis/parameter/MatrixParameters.java | 2 +-
.../sis/referencing/datum/DatumOrEnsemble.java | 2 +-
.../operation/CoordinateOperationContext.java | 6 +-
.../operation/CoordinateOperationFinder.java | 32 +-
.../referencing/operation/SubOperationInfo.java | 40 +-
.../operation/provider/DatumShiftMethod.java | 6 +-
.../transform/AbstractLinearTransform.java | 7 +-
.../operation/transform/PassThroughTransform.java | 6 +-
.../operation/transform/TransformJoiner.java | 11 +-
.../org/apache/sis/storage/geotiff/DataSubset.java | 2 +-
.../org/apache/sis/storage/netcdf/base/Axis.java | 23 +-
.../apache/sis/storage/netcdf/base/Variable.java | 7 +
.../sis/storage/netcdf/ucar/VariableWrapper.java | 22 +-
.../sis/storage/sql/feature/SelectionClause.java | 77 ++-
.../storage/sql/feature/SelectionClauseWriter.java | 35 +-
.../sis/storage/sql/postgis/RasterReader.java | 4 +-
.../org/apache/sis/storage/sql/SQLStoreTest.java | 20 +-
.../org/apache/sis/storage/gpx/MetadataTest.java | 8 +-
.../org/apache/sis/storage/gpx/ReaderTest.java | 85 ++-
.../org.apache.sis.storage/main/module-info.java | 6 +-
.../main/org/apache/sis/storage/DataStore.java | 4 +-
.../main/org/apache/sis/storage/Resource.java | 4 +-
.../sis/storage/aggregate/JoinFeatureSet.java | 7 +-
.../apache/sis/storage/aggregate/package-info.java | 2 +-
.../org/apache/sis/storage/esri/RasterStore.java | 13 +-
.../sis/storage/event/CascadedStoreEvent.java | 2 +-
.../apache/sis/storage/event/StoreListener.java | 6 +-
.../apache/sis/storage/event/StoreListeners.java | 16 +-
.../sis/storage/metadata/MetadataBuilder.java | 2 +-
.../sis/storage/tiling/ArtificiallyTiledImage.java | 261 ++++++++
.../apache/sis/storage/tiling/ImageTileMatrix.java | 2 +-
.../apache/sis/storage/tiling/TileReadEvent.java | 63 +-
.../sis/storage/tiling/TiledDeferredImage.java | 2 +-
.../sis/storage/tiling/TiledGridCoverage.java | 10 +-
.../storage/tiling/TiledGridCoverageResource.java | 547 +++++++++++++---
.../org/apache/sis/storage/DataStoreTestCase.java | 4 +-
.../sis/storage/event/StoreListenersTest.java | 6 +-
.../src/org.apache.sis.util/main/module-info.java | 2 +
.../main/org/apache/sis/math/Statistics.java | 3 +
.../main/org/apache/sis/util/Classes.java | 9 +-
.../sis/util/collection/WeakValueHashMap.java | 4 +-
.../apache/sis/util/internal/shared/Numerics.java | 2 +-
.../main/org/apache/sis/util/resources/Errors.java | 5 +
.../apache/sis/util/resources/Errors.properties | 1 +
.../apache/sis/util/resources/Errors_fr.properties | 1 +
.../sis/util/resources/IndexedResourceBundle.java | 14 +-
.../org/apache/sis/util/resources/Messages.java | 5 +
.../apache/sis/util/resources/Messages.properties | 1 +
.../sis/util/resources/Messages_fr.properties | 3 +-
.../org/apache/sis/util/resources/Vocabulary.java | 25 +-
.../sis/util/resources/Vocabulary.properties | 5 +-
.../sis/util/resources/Vocabulary_fr.properties | 7 +-
.../apache/sis/util/collection/RangeSetTest.java | 4 +-
incubator/build.gradle.kts | 33 +-
.../org.apache.sis.geometries.processor.Processor | 28 -
.../org.apache.sis.geometry/main/module-info.java | 30 +-
.../org/apache/sis/geometries/BoundaryType.java | 3 +-
.../sis/geometries/ParametricCurveSurface.java | 4 -
.../main/org/apache/sis/geometries/Polygon.java | 3 +-
.../main/org/apache/sis/geometries/Sphere.java | 18 +
.../geometries/csg/ConstructiveSolidGeometry.java | 39 +-
.../sis/geometries/ellipsoidal}/package-info.java | 6 +-
.../sis/geometries/math/ArrayFactoryHAT.java | 255 ++++++++
.../org/apache/sis/geometries/math/Vector3D.java | 29 +
.../geometries/operation/GeometryOperations.java | 33 +-
.../geometries/polyhedron/AbstractPolyhedron.java | 189 ++++++
.../sis/geometries/polyhedron/Dodecahedron.java | 90 +++
.../sis/geometries/polyhedron/Hexahedron.java | 68 ++
.../sis/geometries/polyhedron/Icosahedron.java | 90 +++
.../sis/geometries/polyhedron/Octahedron.java | 68 ++
.../polyhedron/RhombicTriacontahedron.java | 127 ++++
.../sis/geometries/polyhedron/Tetrahedron.java | 62 ++
.../polyhedron/TruncatedIcosahedron.java | 176 ++++++
.../{scene => polyhedron}/package-info.java | 17 +-
.../org/apache/sis/geometries/scene/Material.java | 628 ------------------
.../sis/geometries/spherical/GreatCircleArc.java | 79 +++
.../spherical/SphericalConvexPolygon.java | 85 +++
.../geometries/spherical/SphericalTriangle.java | 183 ++++++
.../sis/geometries/spherical}/package-info.java | 6 +-
.../org/apache/sis/geometries/spirals/Spiral.java | 2 +-
.../geometries/splinesurfaces/BSplineSurface.java | 1 -
.../sis/{geometries => }/scene/Animation.java | 2 +-
.../{geometries => }/scene/AnimationSampler.java | 2 +-
.../apache/sis/{geometries => }/scene/Camera.java | 2 +-
.../apache/sis/{geometries => }/scene/Model.java | 3 +-
.../sis/{geometries => }/scene/MorphTarget.java | 2 +-
.../apache/sis/{geometries => }/scene/Sampler.java | 2 +-
.../sis/{geometries => }/scene/SceneNode.java | 31 +-
.../main/org/apache/sis/scene/SceneUtilities.java} | 30 +-
.../apache/sis/{geometries => }/scene/Skin.java | 2 +-
.../apache/sis/{geometries => }/scene/Surface.java | 6 +-
.../apache/sis/{geometries => }/scene/Texture.java | 2 +-
.../org/apache/sis/scene/light/Directional.java | 107 ++++
.../main/org/apache/sis/scene/light/HDRI.java | 128 ++++
.../main/org/apache/sis/scene/light/Light.java | 77 +++
.../main/org/apache/sis/scene/light/Point.java | 131 ++++
.../main/org/apache/sis/scene/light/Quad.java | 157 +++++
.../main/org/apache/sis/scene/light/Ring.java | 172 +++++
.../main/org/apache/sis/scene/light/Spot.java | 154 +++++
.../org/apache/sis/scene/material/BlinnPhong.java | 198 ++++++
.../org/apache/sis/scene/material/Material.java | 209 ++++++
.../main/org/apache/sis/scene/material/PBR.java | 342 ++++++++++
.../main/org/apache/sis/scene/material/PBRSG.java | 203 ++++++
.../sis/{geometries => }/scene/package-info.java | 2 +-
.../{geometries => }/scene/physics/Collider.java | 2 +-
.../scene/physics/ColliderGeometry.java | 2 +-
.../scene/physics/CollisionFilter.java | 2 +-
.../sis/{geometries => }/scene/physics/Joint.java | 4 +-
.../sis/{geometries => }/scene/physics/Motion.java | 2 +-
.../scene/physics/PhysicalMaterial.java | 2 +-
.../{geometries => }/scene/physics/Trigger.java | 4 +-
.../scene/physics/package-info.java | 2 +-
.../apache/sis/geometries/math/Vector3DTest.java | 108 ++++
.../geometries/spherical/GreatCircleArcTest.java | 62 ++
.../spherical/SphericalConvexPolygonTest.java | 89 +++
.../spherical/SphericalTriangleTest.java | 145 +++++
.../org/apache/sis/scene/SceneUtilitiesTest.java | 62 ++
...g.dggs.DiscreteGlobalGridReferenceSystemFactory | 1 +
.../main/module-info.java | 41 ++
.../sis/referencing/dggs/DiscreteGlobalGrid.java | 139 ++++
.../dggs/DiscreteGlobalGridHierarchy.java | 135 ++++
.../dggs/DiscreteGlobalGridReferenceSystem.java | 157 +++++
.../DiscreteGlobalGridReferenceSystemFactory.java | 56 ++
.../dggs/DiscreteGlobalGridReferenceSystems.java | 221 +++++++
.../referencing/dggs/DiscreteGlobalGridSystem.java | 87 +++
.../sis/referencing/dggs/GridConstraints.java | 124 ++++
.../referencing/dggs/PolyhedronOrientation.java | 56 ++
.../referencing/dggs/PolyhedronParameters.java} | 24 +-
.../sis/referencing/dggs/RefinementLevel.java | 98 +++
.../sis/referencing/dggs/RefinementStrategy.java | 133 ++++
.../apache/sis/referencing/dggs/SubZoneOrder.java | 114 ++++
.../sis/referencing/dggs/ZonalReferenceSystem.java | 47 ++
.../main/org/apache/sis/referencing/dggs/Zone.java | 230 +++++++
.../shared/AbstractDiscreteGlobalGrid.java | 132 ++++
.../AbstractDiscreteGlobalGridHierarchy.java | 57 ++
.../shared/AbstractDiscreteGlobalGridSystem.java | 55 ++
.../dggs/internal/shared/AbstractZone.java | 145 +++++
.../dggs/internal/shared/AuthalicSphere.java | 134 ++++
.../shared/DefaultZonalReferenceSystem.java} | 35 +-
.../apache/sis/referencing/dggs/package-info.java | 35 +
.../apache/sis/referencing/dggs/s2/S2Coder.java | 83 +++
.../org/apache/sis/referencing/dggs/s2/S2Dgg.java | 138 ++++
.../org/apache/sis/referencing/dggs/s2/S2Dggh.java | 95 +++
.../apache/sis/referencing/dggs/s2/S2Dggrs.java | 131 ++++
.../org/apache/sis/referencing/dggs/s2/S2Dggs.java | 85 +++
.../apache/sis/referencing/dggs/s2/S2Factory.java | 55 ++
.../org/apache/sis/referencing/dggs/s2/S2Zone.java | 154 +++++
.../main/org/apache/sis/referencing/rs/Code.java | 197 ++++++
.../apache/sis/referencing/rs/CodeOperation.java | 104 +++
.../org/apache/sis/referencing/rs/CompoundRS.java | 207 ++++++
.../sis/referencing/rs/ReferenceSystems.java | 264 ++++++++
.../rs/internal/shared/CodeOperations.java | 518 +++++++++++++++
.../apache/sis/referencing/rs}/package-info.java | 7 +-
.../sis/storage/coverage/BandedCoverageExt.java} | 32 +-
.../storage/coverage/BandedCoverageResource.java | 226 +++++++
.../sis/storage/coverage/CoverageUtilities.java | 65 ++
.../apache/sis/storage/coverage/FeatureExt.java | 241 +++++++
.../dggs/DiscreteGlobalGridCoverageProcessor.java | 702 +++++++++++++++++++++
.../storage/dggs/DiscreteGlobalGridGeometry.java | 400 ++++++++++++
.../storage/dggs/DiscreteGlobalGridResource.java | 128 ++++
.../storage/dggs/DiscreteGlobalGridSystems.java | 325 ++++++++++
.../storage/dggs/DiscreteGlobalGridTransform.java | 411 ++++++++++++
.../shared/AbstractDiscreteGlobalGridCoverage.java | 164 +++++
.../shared/ArrayDiscreteGlobalGridCoverage.java | 171 +++++
...ingTiledDiscreteGlobalGridCoverageResource.java | 160 +++++
.../internal/shared/ComputedZoneIndexList.java | 162 +++++
.../FeatureSetAsDiscreteGlobalGridResource.java | 181 ++++++
.../shared/GridAsDiscreteGlobalGridResource.java | 140 ++++
.../shared/IndexedDiscreteGlobalGridCoverage.java | 266 ++++++++
.../shared/MemoryDiscreteGlobalGridResource.java | 73 +++
.../shared/RasterDiscreteGlobalGridCoverage.java | 172 +++++
.../shared/TiledDiscreteGlobalGridCoverage.java | 315 +++++++++
.../TiledDiscreteGlobalGridCoverageResource.java | 120 ++++
...leTiledDiscreteGlobalGridCoverageResource.java} | 15 +-
.../sis/storage/image/internal/ImageBuilder.java | 226 +++++++
.../sis/storage/image/internal/MergeOperator.java} | 7 +-
.../org/apache/sis/storage/rs/CodeIterator.java | 125 ++++
.../org/apache/sis/storage/rs/CodeTransform.java} | 17 +-
.../org/apache/sis/storage/rs/CodedCoverage.java | 204 ++++++
.../org/apache/sis/storage/rs/CodedCoverages.java | 60 ++
.../org/apache/sis/storage/rs/CodedGeometry.java | 384 +++++++++++
.../org/apache/sis/storage/rs/CodedResource.java | 177 ++++++
.../sis/storage/rs/CompoundCodedGeometry.java | 103 +++
.../sis/storage/rs/WritableCodeIterator.java | 91 +++
.../rs/internal/shared/AbstractCodedCoverage.java | 397 ++++++++++++
.../rs/internal/shared/AddDimCodedCoverage.java | 201 ++++++
.../rs/internal/shared/AddDimCodedResource.java | 108 ++++
.../rs/internal/shared/ArrayCodedCoverage.java | 203 ++++++
.../storage/rs/internal/shared/CodeTransforms.java | 458 ++++++++++++++
.../internal/shared/CodedCoverageAsFeatureSet.java | 282 +++++++++
.../rs/internal/shared/CompoundCodedCoverage.java | 118 ++++
.../rs/internal/shared/CompoundCodedResource.java | 254 ++++++++
.../rs/internal/shared/GridAsCodedResource.java | 306 +++++++++
.../rs/internal/shared/MemoryCodedResource.java | 65 ++
.../rs/internal/shared/ResampledCodedCoverage.java | 159 +++++
.../storage/rs/internal/shared/SubTransform.java | 47 ++
.../sis/storage/rs/internal/shared/s2/Factory.java | 323 ++++++++++
.../sis/storage/rs/internal/shared/s2/S2.java | 268 ++++++++
.../sis/storage/rs/internal/shared/s2/Wrapper.java | 97 +++
.../sis/referencing/dggs/AbstractDggrsTest.java | 252 ++++++++
.../org/apache/sis/referencing/dggs/s2/S2Test.java | 61 ++
.../sis/referencing/rs/CodeOperationTest.java | 175 +++++
.../rs/ArrayReferencedGridCoverageTest.java | 184 ++++++
.../coveragejson/binding/CategoryEncoding.java | 82 ---
.../storage/coveragejson/binding/Dictionary.java | 73 ---
.../sis/storage/coveragejson/binding/I18N.java | 125 ----
.../storage/coveragejson/binding/Parameters.java | 78 ---
.../sis/storage/coveragejson/binding/Ranges.java | 74 ---
.../org.apache.sis.storage.DataStoreProvider | 0
.../main/module-info.java | 27 +-
.../storage/coveragejson/CoverageJsonStore.java | 17 +-
.../coveragejson/CoverageJsonStoreProvider.java | 0
.../sis/storage/coveragejson/CoverageResource.java | 18 +-
.../sis/storage/coveragejson/binding/Axe.java | 9 +-
.../sis/storage/coveragejson/binding/Axes.java | 16 +-
.../sis/storage/coveragejson/binding/Category.java | 10 +-
.../coveragejson/binding/CategoryEncoding.java} | 16 +-
.../sis/storage/coveragejson/binding/Coverage.java | 47 +-
.../coveragejson/binding/CoverageCollection.java | 10 +-
.../coveragejson/binding/CoverageJsonObject.java | 37 +-
.../sis/storage/coveragejson/binding/Domain.java | 7 +-
.../coveragejson/binding/GeographicCRS.java | 7 +-
.../sis/storage/coveragejson/binding/I18N.java | 77 +++
.../storage/coveragejson/binding/IdentifierRS.java | 10 +-
.../sis/storage/coveragejson/binding/NdArray.java | 7 +-
.../coveragejson/binding/ObservedProperty.java | 9 +-
.../storage/coveragejson/binding/Parameter.java | 7 +-
.../coveragejson/binding/ParameterGroup.java | 7 +-
.../storage/coveragejson/binding/ProjectedCRS.java | 7 +-
.../binding/ReferenceSystemConnection.java | 9 +-
.../sis/storage/coveragejson/binding/Symbol.java | 9 +-
.../coveragejson/binding/TargetConcept.java | 9 +-
.../storage/coveragejson/binding/TemporalRS.java | 7 +-
.../sis/storage/coveragejson/binding/TileSet.java | 9 +-
.../storage/coveragejson/binding/TiledNdArray.java | 9 +-
.../sis/storage/coveragejson/binding/Unit.java | 9 +-
.../storage/coveragejson/binding/VerticalCRS.java | 7 +-
.../storage/coveragejson/binding/package-info.java | 0
.../sis/storage/coveragejson/package-info.java | 0
.../org/apache/sis/storage/geojson/GeoJSON.java | 165 +++++
.../apache/sis/storage/geojson/GeoJSONMapper.java | 481 ++++++++++++++
.../storage/geojson/binding/GeoJSONFeature.java | 318 ++++++++++
.../geojson/binding/GeoJSONFeatureCollection.java | 322 ++++++++++
.../storage/geojson/binding/GeoJSONGeometry.java | 134 ++++
.../geojson/binding/GeoJSONGeometryCollection.java | 84 +++
.../storage/geojson/binding/GeoJSONLineString.java | 85 +++
.../geojson/binding/GeoJSONMultiLineString.java | 85 +++
.../storage/geojson/binding/GeoJSONMultiPoint.java | 85 +++
.../geojson/binding/GeoJSONMultiPolygon.java | 85 +++
.../sis/storage/geojson/binding/GeoJSONObject.java | 104 +++
.../sis/storage/geojson/binding/GeoJSONPoint.java | 88 +++
.../storage/geojson/binding/GeoJSONPolygon.java | 85 +++
.../geojson/binding/JSONFGCircularString.java | 88 +++
.../geojson/binding/JSONFGCompoundCurve.java | 88 +++
.../storage/geojson/binding/JSONFGCoordRefSys.java | 131 ++++
.../geojson/binding/JSONFGCurvePolygon.java | 89 +++
.../storage/geojson/binding/JSONFGMeasures.java | 123 ++++
.../storage/geojson/binding/JSONFGMultiCurve.java | 89 +++
.../geojson/binding/JSONFGMultiPolyhedron.java | 85 +++
.../storage/geojson/binding/JSONFGMultiPrism.java | 85 +++
.../geojson/binding/JSONFGMultiSurface.java | 88 +++
.../storage/geojson/binding/JSONFGPolyhedron.java | 86 +++
.../sis/storage/geojson/binding/JSONFGPrism.java | 127 ++++
.../sis/storage/geojson/binding/JSONFGTime.java | 124 ++++
.../sis/storage/geojson/binding}/package-info.java | 12 +-
.../sis/storage/json/DataTransferObject.java | 100 +++
.../movingfeature/binding/MFCoordRefSys.java | 110 ++++
.../movingfeature/binding/MFMovingFeature.java | 277 ++++++++
.../binding/MFMovingFeatureCollection.java | 270 ++++++++
.../binding/MFMovingGeometryBase.java | 101 +++
.../binding/MFMovingGeometryCollection.java | 93 +++
.../movingfeature/binding/MFMovingLineString.java | 87 +++
.../movingfeature/binding/MFMovingPoint.java | 86 +++
.../movingfeature/binding/MFMovingPointCloud.java | 89 +++
.../movingfeature/binding/MFMovingPolygon.java | 88 +++
.../movingfeature/binding/MFOrientation.java | 103 +++
.../movingfeature/binding/MFTemporalGeometry.java | 128 ++++
.../binding/MFTemporalPrimitiveGeometry.java | 152 +++++
.../binding/MFTemporalPropertyGroup.java | 94 +++
.../binding/MFTemporalPropertyValue.java | 186 ++++++
.../movingfeature/binding}/package-info.java | 11 +-
.../main/org/apache/sis/storage/ogcjson/Link.java | 280 ++++++++
.../apache/sis/storage/ogcjson}/package-info.java | 6 +-
.../coveragejson/CoverageJsonStoreTest.java | 0
.../storage/coveragejson/binding/BindingTest.java | 69 +-
.../sis/storage/coveragejson/binding/LICENSE.md | 0
.../storage/coveragejson/binding/axe_bounds.json | 0
.../storage/coveragejson/binding/axe_polygon.json | 0
.../storage/coveragejson/binding/axe_regular.json | 0
.../storage/coveragejson/binding/axe_tuples.json | 0
.../binding/coverage_vertical_profile.json | 0
.../binding/coverage_vertical_profile_nocs.json | 0
.../coveragejson/binding/coveragecollection.json | 0
.../storage/coveragejson/binding/domain_grid.json | 0
.../coveragejson/binding/domain_trajectory.json | 0
.../coveragejson/binding/domaintype_grid.json | 0
.../binding/domaintype_multipoint.json | 0
.../binding/domaintype_multipointseries.json | 0
.../binding/domaintype_multipolygon.json | 0
.../binding/domaintype_multipolygonseries.json | 0
.../coveragejson/binding/domaintype_point.json | 0
.../binding/domaintype_pointseries.json | 0
.../coveragejson/binding/domaintype_polygon.json | 0
.../binding/domaintype_polygonseries.json | 0
.../coveragejson/binding/domaintype_section.json | 0
.../binding/domaintype_trajectory.json | 0
.../binding/domaintype_vertical_profile.json | 0
.../binding/geographiccrs_longlat.json | 0
.../binding/geographiccrs_longlatheight.json | 0
.../sis/storage/coveragejson/binding/ndarray.json | 0
.../binding/parameter_categoricaldata.json | 0
.../binding/parameter_continuousdata.json | 0
.../binding/parametergroup_uncertainty.json | 0
.../binding/parametergroup_vectorquantity.json | 0
.../binding/projectedcrs_britishnationalgrid.json | 0
.../binding/reference_system_connection.json | 0
.../storage/coveragejson/binding/temporalrs.json | 0
.../storage/coveragejson/binding/tiledndarray.json | 0
.../coveragejson/binding/verticalcrs_navd88.json | 0
.../sis/storage/coveragejson/coverage_xyzt.json | 0
.../sis/storage/geojson/binding/BindingTest.java} | 13 +-
.../storage/geojson/binding/geojson_feature.json | 10 +
.../geojson/binding/geojson_featurecollection.json | 48 ++
.../binding/geojson_geometrycollection.json | 13 +
.../geojson/binding/geojson_linestring.json | 7 +
.../geojson/binding/geojson_multilinestring.json | 13 +
.../geojson/binding/geojson_multipoint.json | 7 +
.../geojson/binding/geojson_multipolygon.json | 30 +
.../sis/storage/geojson/binding/geojson_point.json | 4 +
.../storage/geojson/binding/geojson_polygon.json | 12 +
.../binding/jsonfg_circularstring_measures.json | 13 +
.../binding/jsonfg_circularstring_no_measures.json | 8 +
.../binding/jsonfg_compoundcurve_measures.json | 25 +
.../binding/jsonfg_compoundcurve_no_measures.json | 20 +
.../geojson/binding/jsonfg_coordrefsys.json | 18 +
.../binding/jsonfg_curvepolygon_measures.json | 20 +
.../binding/jsonfg_curvepolygon_no_measures.json | 15 +
.../storage/geojson/binding/jsonfg_feature.json | 49 ++
.../jsonfg_geometrycollection_measures.json | 21 +
.../jsonfg_geometrycollection_no_measures.json | 16 +
.../binding/jsonfg_linestring_measures.json | 12 +
.../binding/jsonfg_linestring_no_measures.json | 7 +
.../binding/jsonfg_multicurve_measures.json | 25 +
.../binding/jsonfg_multicurve_no_measures.json | 20 +
.../binding/jsonfg_multilinestring_measures.json | 18 +
.../jsonfg_multilinestring_no_measures.json | 13 +
.../binding/jsonfg_multipoint_measures.json | 12 +
.../binding/jsonfg_multipoint_no_measures.json | 7 +
.../binding/jsonfg_multipolygon_measures.json | 35 +
.../binding/jsonfg_multipolygon_no_measures.json | 30 +
.../binding/jsonfg_multipolyhedron_measures.json | 23 +
.../jsonfg_multipolyhedron_no_measures.json | 18 +
.../binding/jsonfg_multiprism_measures.json | 27 +
.../binding/jsonfg_multiprism_no_measures.json | 22 +
.../binding/jsonfg_multisurface_measures.json | 37 ++
.../binding/jsonfg_multisurface_no_measures.json | 32 +
.../geojson/binding/jsonfg_point_measures.json | 9 +
.../geojson/binding/jsonfg_point_no_measures.json | 4 +
.../geojson/binding/jsonfg_polygon_measures.json | 17 +
.../binding/jsonfg_polygon_no_measures.json | 12 +
.../binding/jsonfg_polyhedron_measures.json | 21 +
.../binding/jsonfg_polyhedron_no_measures.json | 16 +
.../geojson/binding/jsonfg_prism_measures.json | 22 +
.../geojson/binding/jsonfg_prism_no_measures.json | 17 +
.../storage/geojson/binding/jsonfg_time_date.json | 15 +
.../geojson/binding/jsonfg_time_interval.json | 18 +
.../binding/jsonfg_time_interval_open_end.json | 18 +
.../binding/jsonfg_time_interval_open_start.json | 18 +
.../geojson/binding/jsonfg_time_timestamp.json | 15 +
.../sis/storage/json/AbstractBindingTest.java | 76 +++
.../movingfeature/binding/BindingTest.java} | 13 +-
netbeans-project/ivy.xml | 6 +
netbeans-project/nbproject/project.properties | 2 +-
.../apache/sis/gui/coverage/CoverageCanvas.java | 211 ++-----
.../apache/sis/gui/coverage/CoverageControls.java | 2 +-
.../apache/sis/gui/coverage/CoverageExplorer.java | 2 +-
.../org/apache/sis/gui/coverage/GridControls.java | 2 +-
.../main/org/apache/sis/gui/coverage/GridView.java | 2 +-
.../apache/sis/gui/coverage/RectangleMerger.java | 111 ++++
.../sis/gui/coverage/StyledRenderingData.java | 5 +
.../apache/sis/gui/coverage/TileReadListener.java | 327 ++++++++++
.../org/apache/sis/gui/dataset/WindowHandler.java | 2 +-
.../org/apache/sis/gui/internal/LogHandler.java | 2 +-
.../apache/sis/gui/internal/ShapeConverter.java | 5 +-
.../org/apache/sis/gui/map/EvanescentPane.java | 1 +
.../main/org/apache/sis/gui/map/MapCanvas.java | 40 +-
.../main/org/apache/sis/gui/map/MultiCanvas.java | 2 +-
.../org/apache/sis/gui/map/ValuesFormatter.java | 7 +-
.../org/apache/sis/gui/map/ValuesUnderCursor.java | 2 +-
.../org/apache/sis/storage/gdal/TiledResource.java | 16 +-
settings.gradle.kts | 1 +
471 files changed, 28807 insertions(+), 2775 deletions(-)
diff --cc endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
index 965cc63358,764ba76372..c692d2cbca
--- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
+++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
@@@ -31,7 -31,13 +31,10 @@@ import org.apache.sis.referencing.inter
import org.apache.sis.referencing.operation.matrix.Matrices;
import org.apache.sis.referencing.operation.matrix.MatrixSIS;
import org.apache.sis.referencing.operation.transform.MathTransforms;
+ import org.apache.sis.measure.NumberRange;
+ import org.apache.sis.util.Classes;
+ import org.apache.sis.util.internal.shared.Strings;
-// Specific to the geoapi-4.0 branch:
-import org.apache.sis.referencing.legacy.DefaultImageCRS;
-
/**
* Information about the operation from a source component to a target component in {@code CompoundCRS} instances.
diff --cc incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/CompoundRS.java
index 0000000000,7e8b8b26ee..c467a7e6f7
mode 000000,100644..100644
--- a/incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/CompoundRS.java
+++ b/incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/CompoundRS.java
@@@ -1,0 -1,207 +1,207 @@@
+ /*
+ * 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.referencing.rs;
+
+ import java.util.List;
+ import java.util.ArrayList;
+ import java.util.LinkedList;
+ import java.util.Collections;
+ import java.util.Objects;
-import org.apache.sis.metadata.iso.DefaultIdentifier;
++import org.apache.sis.referencing.NamedIdentifier;
+ import org.apache.sis.referencing.CRS;
+ import org.apache.sis.referencing.CommonCRS;
+ import org.apache.sis.referencing.gazetteer.ReferencingByIdentifiers;
+ import org.apache.sis.referencing.dggs.DiscreteGlobalGridReferenceSystem;
-import org.opengis.metadata.Identifier;
++import org.opengis.referencing.ReferenceIdentifier;
+ import org.opengis.referencing.ReferenceSystem;
+ import org.opengis.referencing.crs.CompoundCRS;
+ import org.opengis.referencing.crs.CoordinateReferenceSystem;
+ import org.opengis.referencing.crs.SingleCRS;
+ import org.opengis.util.FactoryException;
+
+
+ /**
+ * A <abbr>RS</abbr> describing the position of points through two or more independent <abbr>RS</abbr>s.
+ * Two <abbr>RS</abbr>s are independent of each other if coordinate values in one cannot be converted or
+ * transformed into coordinate values in the other.
+ *
+ * <p>This interface is a generalized version of CompoundCRS.</p>
+ *
+ * @author Johann Sorel (Geomatys)
+ */
+ public final class CompoundRS implements ReferenceSystem {
+
- private final Identifier name;
++ private final ReferenceIdentifier name;
+ private final List<ReferenceSystem> rss;
+ private final CoordinateReferenceSystem leaningCrs;
+
- public CompoundRS(Identifier name, List<ReferenceSystem> rss) {
++ public CompoundRS(ReferenceIdentifier name, List<ReferenceSystem> rss) {
+ if (rss.size() < 2) {
+ throw new IllegalArgumentException("Provide at least two systems to create a CompoundRS.");
+ }
+
+ if (name == null) {
+ final StringBuilder sb = new StringBuilder("CompundLS [");
+ for (int i = 0, n = rss.size(); i < n; i++) {
+ final ReferenceSystem cdt = rss.get(i);
+ if (i != 0) sb.append(',');
+ sb.append(cdt.getName().toString());
+ }
+ sb.append(']');
- name = new DefaultIdentifier(sb.toString());
++ name = new NamedIdentifier(null, sb.toString());
+ }
+ this.name = name;
+ this.rss = Collections.unmodifiableList(rss);
+
+ final List<CoordinateReferenceSystem> crss = new ArrayList<>(rss.size()+1);
+ for (int i = 0; i < rss.size(); i++) {
+ final ReferenceSystem srs = rss.get(i);
+ if (srs instanceof CoordinateReferenceSystem crs) {
+ crss.add(crs);
+ } else if (srs instanceof DiscreteGlobalGridReferenceSystem dggrs) {
+ crss.add(dggrs.getGridSystem().getCrs());
+ } else if (srs instanceof ReferencingByIdentifiers rbi) {
+ crss.add(CommonCRS.WGS84.normalizedGeographic());
+ } else {
+ throw new UnsupportedOperationException("todo");
+ }
+ }
+ try {
+ leaningCrs = CRS.compound(crss.toArray(CoordinateReferenceSystem[]::new));
+ } catch (FactoryException ex) {
+ throw new IllegalArgumentException(ex);
+ }
+ }
+
+ /**
+ * {@inheritDoc }
+ */
+ @Override
- public Identifier getName() {
++ public ReferenceIdentifier getName() {
+ return name;
+ }
+
+ /**
+ * Returns the ordered list of <abbr>RS</abbr> components.
+ * The returned list may contain nested compound <abbr>RS</abbr>.
+ * For a list without nesting, as required by ISO 19111, see {@link #getSingleComponents()}.
+ *
+ * @return the ordered list of components of this compound <abbr>RS</abbr>.
+ */
+ public List<ReferenceSystem> getComponents() {
+ return rss;
+ }
+
+ /**
+ * Returns the ordered list of <abbr>CRS</abbr> components, none of which itself compound.
+ * If this compound <abbr>CRS</abbr> contains nested compound <abbr>CRS</abbr> components,
+ * then those components are flattened recursively in a sequence of {@link SingleCRS} objects.
+ *
+ * @return the ordered list of components of this compound <abbr>CRS</abbr>, none of which itself compound.
+ *
+ * @since 3.1
+ */
+ public List<ReferenceSystem> getSingleComponents() {
+ var singles = new ArrayList<ReferenceSystem>(5);
+ flatten(singles, new LinkedList<>()); // Linked list is cheap to construct and efficient with 0 or 1 element.
+ return Collections.unmodifiableList(singles);
+ }
+
+
+ public synchronized CoordinateReferenceSystem getLeaningCrs() {
+ return leaningCrs;
+ }
+
+ /**
+ * Appends recursively all single components in the given list.
+ *
+ * @param singles the list where to add single components.
+ * @param safety a safety against infinite recursive method calls.
+ * @throws IllegalStateException if recursive components are detected.
+ */
+ private void flatten(final List<ReferenceSystem> singles, final List<Object> safety) {
+ for (ReferenceSystem rs : getComponents()) {
+ if (rs instanceof SingleCRS) {
+ singles.add((SingleCRS) rs);
+ } else if (rs instanceof ReferencingByIdentifiers) {
+ singles.add(rs);
+ } else if (rs instanceof CompoundRS) {
+ final CompoundRS r = (CompoundRS) rs;
+ for (Object previous : safety) {
+ if (previous == this) {
+ throw new IllegalStateException("Recursive components detected.");
+ }
+ }
+ safety.add(this);
+ singles.addAll(r.getSingleComponents());
+
+ } else if (rs instanceof CompoundCRS) {
+ final CompoundCRS r = (CompoundCRS) rs;
+ //todo CompoundCRS should be a CompoundRS
+ for (Object previous : safety) {
+ if (previous == this) {
+ throw new IllegalStateException("Recursive components detected.");
+ }
+ }
+ safety.add(this);
+ singles.addAll(r.getSingleComponents());
+ } else {
+ throw new IllegalArgumentException("Unknown reference system type : " + rs.getName());
+ }
+ }
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("CompoundRS[ " + name.toString()+" ");
+ final List<ReferenceSystem> components = getComponents();
+ for (int i = 0, n = components.size(); i < n; i++) {
+ if (i > 0)sb.append(',');
+ final ReferenceSystem rs = components.get(i);
+ sb.append(rs.toString().replaceAll("\n", " \n"));
+ }
+ sb.append(']');
+ return sb.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 5;
+ hash = 23 * hash + Objects.hashCode(this.name);
+ hash = 23 * hash + Objects.hashCode(this.rss);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final CompoundRS other = (CompoundRS) obj;
+ if (!Objects.equals(this.name, other.name)) {
+ return false;
+ }
+ return Objects.equals(this.rss, other.rss);
+ }
+
+ }
diff --cc incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/internal/shared/CodeOperations.java
index 0000000000,00bcba9af7..24e502c6e7
mode 000000,100644..100644
--- a/incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/internal/shared/CodeOperations.java
+++ b/incubator/src/org.apache.sis.referencing.dggs/main/org/apache/sis/referencing/rs/internal/shared/CodeOperations.java
@@@ -1,0 -1,518 +1,518 @@@
+ /*
+ * 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.referencing.rs.internal.shared;
+
+ import java.util.Arrays;
+ import org.apache.sis.referencing.CRS;
+ import org.apache.sis.referencing.NamedIdentifier;
+ import org.apache.sis.referencing.gazetteer.ReferencingByIdentifiers;
+ import org.apache.sis.referencing.rs.Code;
+ import org.apache.sis.referencing.rs.CodeOperation;
+ import org.apache.sis.referencing.rs.ReferenceSystems;
+ import org.apache.sis.util.iso.Names;
+ import org.opengis.geometry.DirectPosition;
-import org.opengis.metadata.Identifier;
++import org.opengis.referencing.ReferenceIdentifier;
+ import org.opengis.referencing.ReferenceSystem;
+ import org.opengis.referencing.crs.CoordinateReferenceSystem;
+ import org.opengis.referencing.gazetteer.Location;
+ import org.opengis.referencing.operation.CoordinateOperation;
+ import org.opengis.referencing.operation.MathTransform;
+ import org.opengis.referencing.operation.NoninvertibleTransformException;
+ import org.opengis.referencing.operation.TransformException;
+ import org.opengis.util.FactoryException;
+
+ /**
+ *
+ * @author Johann Sorel (Geomatys)
+ */
+ public final class CodeOperations {
+
+ private CodeOperations(){}
+
+ public static CodeOperation identity(ReferenceSystem sourceRs, ReferenceSystem targetRs) {
+ return new Identity(sourceRs, targetRs);
+ }
+
+ public static CodeOperation RbiToCrs(ReferencingByIdentifiers.Coder coder) throws FactoryException {
+ return new RbiToCrs(coder);
+ }
+
+ public static CodeOperation CrsToRbi(ReferencingByIdentifiers.Coder coder) throws FactoryException {
+ return new CrsToRbi(coder);
+ }
+
+ public static CodeOperation CrsToCrs(CoordinateOperation op) throws FactoryException {
+ return new CrsToCrs(op);
+ }
+
+ public static CodeOperation concatenate(CodeOperation op1, CodeOperation op2) throws FactoryException {
+ if (op1 instanceof Identity) return op2;
+ if (op2 instanceof Identity) return op1;
+ return new Concatenate(op1, op2);
+ }
+
+ public static CodeOperation concatenate(CodeOperation... ops) throws FactoryException {
+ if (ops.length == 1) return ops[0];
+ CodeOperation cop = concatenate(ops[0], ops[1]);
+ for (int i = 2; i < ops.length; i++) {
+ cop = concatenate(cop, ops[i]);
+ }
+ return cop;
+ }
+
+ public static CodeOperation compound(CodeOperation op1, CodeOperation op2) throws FactoryException {
+ return new Compound(op1, op2, null, null);
+ }
+
+ public static CodeOperation compound(CodeOperation... ops) throws FactoryException {
+ if (ops.length == 1) return ops[0];
+ CodeOperation cop = compound(ops[0], ops[1]);
+ for (int i = 2; i < ops.length; i++) {
+ cop = compound(cop, ops[i], null, null);
+ }
+ return cop;
+ }
+
+ public static CodeOperation reorder(ReferenceSystem sourceRs, ReferenceSystem targetRs, int[] targetMapping) {
+ return new Reorder(sourceRs, targetRs, targetMapping);
+ }
+
+ public static final class Identity implements CodeOperation {
+
+ private final ReferenceSystem sourceRs;
+ private final ReferenceSystem targetRs;
+
+ public Identity(ReferenceSystem sourceRs, ReferenceSystem targetRs) {
+ this.sourceRs = sourceRs;
+ this.targetRs = targetRs;
+ }
+
+ @Override
+ public ReferenceSystem getSourceRS() {
+ return sourceRs;
+ }
+
+ @Override
+ public ReferenceSystem getTargetRS() {
+ return targetRs;
+ }
+
+ @Override
+ public CodeOperation inverse() throws NoninvertibleTransformException {
+ return new Identity(targetRs, sourceRs);
+ }
+
+ @Override
+ public Code transform(Code source, Code target) throws TransformException {
+ if (target == null) return new Code(targetRs, source.getOrdinates());
+ target.setOrdinates(source.getOrdinates());
+ return target;
+ }
+
+ @Override
+ public void transform(Code[] source, int soffset, Code[] target, int toffset, int nb) throws TransformException {
+ for (int i = 0; i < nb; i++) {
+ target[toffset+i] = transform(source[soffset+i], target[toffset+i]);
+ }
+ }
+
+ @Override
- public Identifier getName() {
++ public ReferenceIdentifier getName() {
+ return new NamedIdentifier(Names.createLocalName(null, null, "Identity"));
+ }
+
+ @Override
+ public String toString() {
+ return "Identity";
+ }
+
+ }
+
+ public static final class Reorder implements CodeOperation {
+
+ private final ReferenceSystem sourceRs;
+ private final ReferenceSystem targetRs;
+ private final int[] targetMapping;
+
+ public Reorder(ReferenceSystem sourceRs, ReferenceSystem targetRs, int[] targetMapping) {
+ this.sourceRs = sourceRs;
+ this.targetRs = targetRs;
+ this.targetMapping = targetMapping;
+ }
+
+ @Override
+ public ReferenceSystem getSourceRS() {
+ return sourceRs;
+ }
+
+ @Override
+ public ReferenceSystem getTargetRS() {
+ return targetRs;
+ }
+
+ public int[] getTargetMapping() {
+ return targetMapping.clone();
+ }
+
+ @Override
+ public CodeOperation inverse() throws NoninvertibleTransformException {
+ if (targetMapping.length != ReferenceSystems.getDimension(sourceRs)) {
+ throw new NoninvertibleTransformException();
+ }
+ final int[] inv = new int[targetMapping.length];
+ for (int i = 0; i < targetMapping.length; i++) {
+ inv[targetMapping[i]] = i;
+ }
+ return new Reorder(targetRs, sourceRs, inv);
+ }
+
+ @Override
+ public Code transform(Code source, Code target) throws TransformException {
+ if (target == null) return new Code(targetRs);
+ target.setOrdinates(source.getOrdinates());
+ return target;
+ }
+
+ @Override
+ public void transform(Code[] source, int soffset, Code[] target, int toffset, int nb) throws TransformException {
+ for (int i = 0; i < nb; i++) {
+ target[toffset+i] = transform(source[soffset+i], target[toffset+i]);
+ }
+ }
+
+ @Override
- public Identifier getName() {
++ public ReferenceIdentifier getName() {
+ return new NamedIdentifier(Names.createLocalName(null, null, "Reorder"));
+ }
+
+ @Override
+ public String toString() {
+ return "Reorder \n targetMapping : "+ Arrays.toString(targetMapping);
+ }
+ }
+
+ public static final class RbiToCrs implements CodeOperation {
+
+ private final ReferencingByIdentifiers.Coder coder;
+ private final CoordinateReferenceSystem leaningCrs;
+
+ public RbiToCrs(ReferencingByIdentifiers.Coder coder, CoordinateReferenceSystem leaningCrs) {
+ this.coder = coder;
+ this.leaningCrs = leaningCrs;
+ }
+
+ public RbiToCrs(ReferencingByIdentifiers.Coder coder) throws FactoryException {
+ this(coder, ReferenceSystems.getLeaningCRS(coder.getReferenceSystem()));
+ }
+
+ @Override
+ public ReferenceSystem getSourceRS() {
+ return coder.getReferenceSystem();
+ }
+
+ @Override
+ public ReferenceSystem getTargetRS() {
+ return leaningCrs;
+ }
+
+ @Override
+ public CodeOperation inverse() throws NoninvertibleTransformException {
+ return new CrsToRbi(leaningCrs, coder);
+ }
+
+ @Override
+ public Code transform(Code source, Code target) throws TransformException {
+ final Location location = coder.decode((CharSequence) source.getOrdinate(0));
+ if (target == null) target = new Code(leaningCrs, new Object[1]);
+ target.setOrdinate(0, location.getPosition());
+ return target;
+ }
+
+ @Override
+ public void transform(Code[] source, int soffset, Code[] target, int toffset, int nb) throws TransformException {
+ for (int i = 0; i < nb; i++) {
+ target[toffset+i] = transform(source[soffset+i], target[toffset+i]);
+ }
+ }
+
+ @Override
- public Identifier getName() {
++ public ReferenceIdentifier getName() {
+ return new NamedIdentifier(Names.createLocalName(null, null, getSourceRS().getName().getCode() + " to " + leaningCrs.getName().toString()));
+ }
+
+ @Override
+ public String toString() {
+ return "ReferenceByIdentifiers to leaning CRS"
+ + "\n Source : " + getSourceRS().toString().replaceAll("\n", "\n ")
+ + "\n Target : " + getTargetRS().toString().replaceAll("\n", "\n ");
+ }
+ }
+
+ public static final class CrsToCrs implements CodeOperation {
+
+ private final CoordinateOperation op;
+ private final MathTransform transform;
+
+ public CrsToCrs(CoordinateOperation op) {
+ this.op = op;
+ transform = op.getMathTransform();
+ }
+
+ @Override
+ public ReferenceSystem getSourceRS() {
+ return op.getSourceCRS();
+ }
+
+ @Override
+ public ReferenceSystem getTargetRS() {
+ return op.getTargetCRS();
+ }
+
+ @Override
+ public CodeOperation inverse() throws NoninvertibleTransformException {
+ try {
+ return new CrsToCrs(CRS.findOperation(op.getTargetCRS(), op.getSourceCRS(), null));
+ } catch (FactoryException ex) {
+ throw new NoninvertibleTransformException(ex);
+ }
+ }
+
+ @Override
+ public Code transform(Code source, Code target) throws TransformException {
+ final DirectPosition dp = transform.transform((DirectPosition) source.getOrdinate(0), null);
+ if (target == null) target = new Code(getTargetRS(), new Object[1]);
+ target.setOrdinate(0, dp);
+ return target;
+ }
+
+ @Override
+ public void transform(Code[] source, int soffset, Code[] target, int toffset, int nb) throws TransformException {
+ for (int i = 0; i < nb; i++) {
+ target[toffset+i] = transform(source[soffset+i], target[toffset+i]);
+ }
+ }
+
+ @Override
- public Identifier getName() {
++ public ReferenceIdentifier getName() {
+ return new NamedIdentifier(Names.createLocalName(null, null, getSourceRS().getName().toString() + " to " + getTargetRS().getName().getCode()));
+ }
+
+ @Override
+ public String toString() {
+ return "Crs to CRS"
+ + "\n Source : " + getSourceRS().toString().replaceAll("\n", "\n ")
+ + "\n Target : " + getTargetRS().toString().replaceAll("\n", "\n ");
+ }
+ }
+
+ public static final class CrsToRbi implements CodeOperation {
+
+ private final ReferencingByIdentifiers.Coder coder;
+ private final CoordinateReferenceSystem leaningCrs;
+
+ public CrsToRbi(ReferencingByIdentifiers.Coder coder) throws FactoryException {
+ this(ReferenceSystems.getLeaningCRS(coder.getReferenceSystem()), coder);
+ }
+
+ public CrsToRbi(CoordinateReferenceSystem leaningCrs, ReferencingByIdentifiers.Coder coder) {
+ this.leaningCrs = leaningCrs;
+ this.coder = coder;
+ }
+
+ @Override
+ public ReferenceSystem getSourceRS() {
+ return leaningCrs;
+ }
+
+ @Override
+ public ReferenceSystem getTargetRS() {
+ return coder.getReferenceSystem();
+ }
+
+ @Override
+ public CodeOperation inverse() throws NoninvertibleTransformException {
+ return new RbiToCrs(coder, leaningCrs);
+ }
+
+ @Override
+ public Code transform(Code source, Code target) throws TransformException {
+ final String code = coder.encode((DirectPosition) source.getOrdinate(0));
+ if (target == null) target = new Code(coder.getReferenceSystem(), new Object[1]);
+ target.setOrdinate(0, code);
+ return target;
+ }
+
+ @Override
+ public void transform(Code[] source, int soffset, Code[] target, int toffset, int nb) throws TransformException {
+ for (int i = 0; i < nb; i++) {
+ target[toffset+i] = transform(source[soffset+i], target[toffset+i]);
+ }
+ }
+
+ @Override
- public Identifier getName() {
++ public ReferenceIdentifier getName() {
+ return new NamedIdentifier(Names.createLocalName(null, null, leaningCrs.getName().toString() + " to " + getTargetRS().getName().getCode()));
+ }
+
+ @Override
+ public String toString() {
+ return "Leaning CRS to ReferenceByIdentifiers "
+ + "\n Source : " + getSourceRS().toString().replaceAll("\n", "\n ")
+ + "\n Target : " + getTargetRS().toString().replaceAll("\n", "\n ");
+ }
+ }
+
+ public static final class Concatenate implements CodeOperation {
+
+ private final CodeOperation op1;
+ private final CodeOperation op2;
+
+ public Concatenate(CodeOperation op1, CodeOperation op2) {
+ this.op1 = op1;
+ this.op2 = op2;
+ }
+
+ @Override
+ public ReferenceSystem getSourceRS() {
+ return op1.getSourceRS();
+ }
+
+ @Override
+ public ReferenceSystem getTargetRS() {
+ return op2.getTargetRS();
+ }
+
+ public CodeOperation getOperation1() {
+ return op1;
+ }
+
+ public CodeOperation getOperation2() {
+ return op2;
+ }
+
+ @Override
+ public CodeOperation inverse() throws NoninvertibleTransformException {
+ return new Concatenate(op2.inverse(), op1.inverse());
+ }
+
+ @Override
+ public Code transform(Code source, Code target) throws TransformException {
+ final Code r = op1.transform(source, null);
+ return op2.transform(r, target);
+ }
+
+ @Override
+ public void transform(Code[] source, int soffset, Code[] target, int toffset, int nb) throws TransformException {
+ for (int i = 0; i < nb; i++) {
+ target[toffset+i] = transform(source[soffset+i], target[toffset+i]);
+ }
+ }
+
+ @Override
- public Identifier getName() {
++ public ReferenceIdentifier getName() {
+ return new NamedIdentifier(Names.createLocalName(null, null, "Concatenate"));
+ }
+
+ @Override
+ public String toString() {
+ return "Concatenate "
+ + "\n First : " + op1.toString().replaceAll("\n", "\n ")
+ + "\n Second : " + op2.toString().replaceAll("\n", "\n ");
+ }
+ }
+
+ public static final class Compound implements CodeOperation {
+
+ private final ReferenceSystem sourceRS;
+ private final ReferenceSystem targetRS;
+ private final CodeOperation op1;
+ private final CodeOperation op2;
+ private final int dim1;
+ private final int dim2;
+ private final int dimRes;
+
+ public Compound(CodeOperation op1, CodeOperation op2, ReferenceSystem sourceRS, ReferenceSystem targetRS) {
+ this.sourceRS = sourceRS == null ? ReferenceSystems.createCompound(op1.getSourceRS(), op2.getSourceRS()) : sourceRS;
+ this.targetRS = targetRS == null ? ReferenceSystems.createCompound(op1.getTargetRS(), op2.getTargetRS()) : sourceRS;
+ this.op1 = op1;
+ this.op2 = op2;
+ this.dim1 = ReferenceSystems.getDimension(op1.getSourceRS());
+ this.dim2 = ReferenceSystems.getDimension(op2.getSourceRS());
+ this.dimRes = ReferenceSystems.getDimension(this.targetRS);
+ }
+
+ @Override
+ public ReferenceSystem getSourceRS() {
+ return sourceRS;
+ }
+
+ @Override
+ public ReferenceSystem getTargetRS() {
+ return targetRS;
+ }
+
+ public CodeOperation getOperation1() {
+ return op1;
+ }
+
+ public CodeOperation getOperation2() {
+ return op2;
+ }
+
+ @Override
+ public CodeOperation inverse() throws NoninvertibleTransformException {
+ return new Compound(op1.inverse(), op2.inverse(), targetRS, sourceRS);
+ }
+
+ @Override
+ public Code transform(Code source, Code target) throws TransformException {
+ final Object[] ordinates = source.getOrdinates();
+ final Code s1 = new Code(op1.getSourceRS(), Arrays.copyOfRange(ordinates, 0, dim1));
+ final Code s2 = new Code(op2.getSourceRS(), Arrays.copyOfRange(ordinates, dim1, dim1+dim2));
+ final Code r1 = op1.transform(s1, null);
+ final Code r2 = op2.transform(s2, null);
+ if (target == null) target = new Code(targetRS, new Object[dimRes]);
+ int k = 0;
+ for (int i = 0, n = r1.getDimension(); i < n; i++) {
+ target.setOrdinate(k++, r1.getOrdinate(i));
+ }
+ for (int i = 0, n = r2.getDimension(); i < n; i++) {
+ target.setOrdinate(k++, r2.getOrdinate(i));
+ }
+ return target;
+ }
+
+ @Override
+ public void transform(Code[] source, int soffset, Code[] target, int toffset, int nb) throws TransformException {
+ for (int i = 0; i < nb; i++) {
+ target[toffset+i] = transform(source[soffset+i], target[toffset+i]);
+ }
+ }
+
+ @Override
- public Identifier getName() {
++ public ReferenceIdentifier getName() {
+ return new NamedIdentifier(Names.createLocalName(null, null, "Compound"));
+ }
+
+ @Override
+ public String toString() {
+ return "Compound "
+ + "\n First : " + op1.toString().replaceAll("\n", "\n ")
+ + "\n Second : " + op2.toString().replaceAll("\n", "\n ");
+ }
+ }
+ }