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 2fae730759328fe8e11243cf85044e0c497a5ba4
Merge: e3efcc2eaa c4eb3bfe46
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Fri Oct 9 14:01:13 2026 +0200

    Merge branch 'geoapi-4.0' into geoapi-3.1

 SECURITY.md                                        |  41 ++
 buildSrc/build.gradle.kts                          |   2 +-
 .../sis/coverage/grid/ValuesAtPointIterator.java   |  23 +-
 .../org/apache/sis/style/filter/Expression_Add.xml |   6 +
 .../org/apache/sis/style/filter/Expression_Div.xml |   5 +
 .../sis/style/filter/Expression_Function.xml       |   5 +
 .../apache/sis/style/filter/Expression_Literal.xml |   4 +
 .../sis/style/filter/Expression_LiteralColor.xml   |   4 +
 .../org/apache/sis/style/filter/Expression_Mul.xml |   5 +
 .../sis/style/filter/Expression_PropertyName.xml   |   4 +
 .../org/apache/sis/style/filter/Expression_Sub.xml |   5 +
 .../filter/Filter_Comparison_PropertyIsBetween.xml |   8 +
 .../filter/Filter_Comparison_PropertyIsEqualTo.xml |   9 +
 .../Filter_Comparison_PropertyIsGreaterThan.xml    |   8 +
 ...r_Comparison_PropertyIsGreaterThanOrEqualTo.xml |   7 +
 .../Filter_Comparison_PropertyIsLessThan.xml       |   9 +
 ...lter_Comparison_PropertyIsLessThanOrEqualTo.xml |   8 +
 .../Filter_Comparison_PropertyIsLike_v100.xml      |   9 +
 .../Filter_Comparison_PropertyIsLike_v110.xml      |   9 +
 .../Filter_Comparison_PropertyIsNotEqualTo.xml     |   8 +
 .../filter/Filter_Comparison_PropertyIsNull.xml    |   7 +
 .../style/filter/Filter_Comparison_matchCase.xml   |  18 +
 .../apache/sis/style/filter/Filter_Id_feature.xml  |   8 +
 .../org/apache/sis/style/filter/Filter_Id_gml.xml  |   8 +
 .../apache/sis/style/filter/Filter_Logical_And.xml |  14 +
 .../sis/style/filter/Filter_Logical_Nested.xml     |  27 +
 .../apache/sis/style/filter/Filter_Logical_Not.xml |  11 +
 .../apache/sis/style/filter/Filter_Logical_Or.xml  |  14 +
 .../org/apache/sis/style/filter/Filter_Sortby.xml  |   7 +
 .../sis/style/filter/Filter_Spatial_BBOX.xml       |  11 +
 .../sis/style/filter/Filter_Spatial_BBOX_v100.xml  |  11 +
 .../sis/style/filter/Filter_Spatial_Beyond.xml     |  10 +
 .../sis/style/filter/Filter_Spatial_Contains.xml   |  13 +
 .../sis/style/filter/Filter_Spatial_Crosses.xml    |   9 +
 .../sis/style/filter/Filter_Spatial_DWithin.xml    |  10 +
 .../sis/style/filter/Filter_Spatial_Disjoint.xml   |  10 +
 .../sis/style/filter/Filter_Spatial_Equals.xml     |  13 +
 .../sis/style/filter/Filter_Spatial_Intersects.xml |  13 +
 .../sis/style/filter/Filter_Spatial_Overlaps.xml   |  16 +
 .../sis/style/filter/Filter_Spatial_Overlaps2.xml  |   9 +
 .../sis/style/filter/Filter_Spatial_Touches.xml    |  13 +
 .../sis/style/filter/Filter_Spatial_Within.xml     |  10 +
 .../sis/style/filter/Filter_Temporal_After.xml     |   9 +
 .../sis/style/filter/Filter_Temporal_Before.xml    |   9 +
 .../sis/style/filter/Filter_Temporal_Begins.xml    |  10 +
 .../sis/style/filter/Filter_Temporal_BegunBy.xml   |  10 +
 .../sis/style/filter/Filter_Temporal_Contains.xml  |  10 +
 .../sis/style/filter/Filter_Temporal_During.xml    |  10 +
 .../sis/style/filter/Filter_Temporal_EndedBy.xml   |  10 +
 .../sis/style/filter/Filter_Temporal_Ends.xml      |  10 +
 .../sis/style/filter/Filter_Temporal_Equals.xml    |   9 +
 .../sis/style/filter/Filter_Temporal_Meets.xml     |  10 +
 .../sis/style/filter/Filter_Temporal_MetBy.xml     |  10 +
 .../sis/style/filter/Filter_Temporal_Overalps.xml  |  11 +
 .../style/filter/Filter_Temporal_OverlappedBy.xml  |  10 +
 .../SE_ChannelSelection_ContrastEnhancement.xml    |  19 +
 .../org/apache/sis/style/se1/SE_ColorMap_Ramp.xml  |   8 +
 .../style/se1/SE_ExternalGraphic_InlineContent.xml |  10 +
 .../se1/SE_ExternalGraphic_OnlineResource.xml      |  20 +
 .../apache/sis/style/se1/SE_Fill_GraphicFill.xml   |  17 +
 .../sis/style/se1/SE_Function_Categorize.xml       |  25 +
 .../apache/sis/style/se1/SE_Mark_TrueTypeFont.xml  |   9 +
 .../sis/style/se1/SE_Stroke_GraphicStroke.xml      |  19 +
 .../sis/style/se1/SE_SvgParameter_Interpolate.xml  |  23 +
 .../apache/sis/style/se1/SE_coveragestyle_v110.xml |  29 +
 .../test/org/apache/sis/style/se1/SE_fts_v100.xml  |  20 +
 .../test/org/apache/sis/style/se1/SE_fts_v110.xml  |  22 +
 .../apache/sis/style/se1/SE_lineplacement_v110.xml |  24 +
 .../sis/style/se1/SE_rule_elsefilter_v110.xml      |  36 +
 .../test/org/apache/sis/style/se1/SE_rule_v100.xml |  19 +
 .../test/org/apache/sis/style/se1/SE_rule_v110.xml |  21 +
 .../apache/sis/style/se1/SE_symbol_line_v100.xml   |  30 +
 .../apache/sis/style/se1/SE_symbol_line_v110.xml   |  18 +
 .../apache/sis/style/se1/SE_symbol_point_v100.xml  |  30 +
 .../apache/sis/style/se1/SE_symbol_point_v110.xml  |  39 ++
 .../sis/style/se1/SE_symbol_polygon_v100.xml       |  38 ++
 .../sis/style/se1/SE_symbol_polygon_v110.xml       |  27 +
 .../apache/sis/style/se1/SE_symbol_raster_v100.xml |  58 ++
 .../apache/sis/style/se1/SE_symbol_raster_v110.xml |  44 ++
 .../apache/sis/style/se1/SE_symbol_text_v100.xml   |  35 +
 .../apache/sis/style/se1/SE_symbol_text_v110.xml   |  41 ++
 .../style/sld1/SLD_FeatureTypeConstraint_v100.xml  |  17 +
 .../style/sld1/SLD_FeatureTypeConstraint_v110.xml  |  17 +
 .../SLD_LayerCoverageConstraints_RangeAxis.xml     |  20 +
 .../SLD_LayerCoverageConstraints_TimePeriod.xml    |  13 +
 .../style/sld1/SLD_NamedLayer_NamedStyle_v100.xml  |   8 +
 .../style/sld1/SLD_NamedLayer_NamedStyle_v110.xml  |  12 +
 .../apache/sis/style/sld1/SLD_UseSLDLibrary.xml    |  11 +
 .../sis/style/sld1/SLD_UserLayer_InlineFeature.xml |  14 +
 .../style/sld1/SLD_UserLayer_RemoteOWS_v100.xml    |   9 +
 .../style/sld1/SLD_UserLayer_RemoteOWS_v110.xml    |   9 +
 .../sis/style/sld1/SLD_UserStyle_CoverageStyle.xml |  13 +
 .../style/sld1/SLD_UserStyle_OnlineResource.xml    |   6 +
 .../apache/sis/style/sld1/SLD_UserStyle_v100.xml   |  17 +
 .../apache/sis/style/sld1/SLD_UserStyle_v110.xml   |  21 +
 .../operation/builder/LocalizationGridBuilder.java | 140 ++--
 .../operation/builder/package-info.java            |   2 +-
 .../builder/LocalizationGridBuilderTest.java       |  42 +-
 .../sis/storage/geotiff/ImageFileDirectory.java    |   6 +-
 .../apache/sis/storage/geotiff/NativeMetadata.java |  14 +-
 .../org/apache/sis/storage/geotiff/Writer.java     |  33 +-
 .../sis/storage/geotiff/reader/ColorMap.java       | 110 +++
 .../geotiff/reader/GridGeometryBuilder.java        |   6 +-
 .../{Localization.java => ModelTiePoints.java}     | 102 ++-
 .../apache/sis/storage/geotiff/reader/Type.java    |  18 +-
 .../org/apache/sis/storage/geotiff/WriterTest.java |  24 +-
 .../storage/geotiff/reader/ModelTiePointsTest.java | 270 ++++++++
 .../sis/storage/netcdf/NetcdfStoreProvider.java    |   8 +-
 .../main/module-info.java                          |  10 +-
 .../org/apache/sis/storage/DataStoreRegistry.java  |   1 -
 .../main/org/apache/sis/math/ArrayVector.java      |  17 +
 .../main/org/apache/sis/math/DecimalFunctions.java |   2 +-
 .../main/org/apache/sis/math/RepeatedVector.java   |  12 +
 .../main/org/apache/sis/math/Vector.java           |  63 +-
 .../main/org/apache/sis/util/Exceptions.java       |  22 +-
 .../main/org/apache/sis/util/Localized.java        |   9 +-
 .../org/apache/sis/util/LocalizedException.java    |   5 +-
 .../apache/sis/util/internal/shared/Numerics.java  |   2 +-
 .../sis/util/internal/shared/PropertyFormat.java   |  66 +-
 .../sis/util/internal/shared/TableRowList.java     | 104 +++
 .../test/org/apache/sis/math/VectorTest.java       |   4 +
 .../org.apache.sis.geometry/main/module-info.java  |   1 +
 .../main/org/apache/sis/geometries/BBox.java       | 123 +++-
 .../main/org/apache/sis/geometries/Curve.java      |  11 +-
 .../main/org/apache/sis/geometries/DataPoints.java |  90 ++-
 .../main/org/apache/sis/geometries/Empty.java      |  11 +-
 .../main/org/apache/sis/geometries/Geometries.java |  77 ++-
 .../main/org/apache/sis/geometries/Geometry.java   |  48 +-
 .../apache/sis/geometries/GeometryCollection.java  |  19 +
 .../org/apache/sis/geometries/GeometryFactory.java | 556 +++++++--------
 .../org/apache/sis/geometries/GeometryType.java    |   4 +
 .../main/org/apache/sis/geometries/HyperPlane.java | 136 +++-
 .../main/org/apache/sis/geometries/OBBox.java      |  36 +-
 .../apache/sis/geometries/OrientedGeometry.java    |  60 --
 .../main/org/apache/sis/geometries/Plane.java      | 173 ++++-
 .../main/org/apache/sis/geometries/Point.java      |  27 +-
 .../main/org/apache/sis/geometries/Prism.java      |   9 +
 .../main/org/apache/sis/geometries/Ray.java        |  71 +-
 .../main/org/apache/sis/geometries/Solid.java      |  10 +-
 .../main/org/apache/sis/geometries/Surface.java    |  22 +-
 .../main/org/apache/sis/geometries/Wrapper.java    | 337 ---------
 .../apache/sis/geometries/adapter/JTSAdapter.java  |  44 +-
 .../geometries/adapter/PathIteratorAdapter.java    |   8 +-
 .../org/apache/sis/geometries/adapter/SIS.java     | 638 +++++++++++++++++
 .../sis/geometries/adapter/ShapeAdapter.java       |   6 +-
 .../sis/geometries/adapter/ShapeConverter.java     |  14 +-
 .../sis/geometries/adapter/WellKnownBinary.java    |   4 +-
 .../geometries/adapter/WellKnownBinaryParser.java  |  66 +-
 .../sis/geometries/adapter/WellKnownText.java      |   4 +-
 .../geometries/adapter/WellKnownTextParser.java    |  76 +--
 .../org/apache/sis/geometries/adapter/Wrapper.java | 755 +++++++++++++++++++++
 .../geometries/csg/ConstructiveSolidGeometry.java  |  16 +
 .../sis/geometries/curve/ArcByCenterPoint.java     |   4 +-
 .../apache/sis/geometries/curve/CompoundCurve.java |  18 +
 .../apache/sis/geometries/curve/FunctionArc.java   |   2 +-
 .../apache/sis/geometries/curve/ProductCurve.java  |  13 +
 .../org/apache/sis/geometries/index/KdTree.java    |  44 +-
 .../internal/shared/AbstractGeometry.java          |  34 +
 .../internal/shared/AbstractOrientedGeometry.java  |  54 --
 .../internal/shared/ArrayDataPoints.java           |  27 +-
 .../internal/shared/ConcatenatedDataPoints.java    | 184 +++++
 .../internal/shared/DefaultArcByCenterPoint.java   |  10 +
 .../internal/shared/DefaultBSplineSolid.java       |   6 +
 .../internal/shared/DefaultBSplineSurface.java     |   6 +
 .../internal/shared/DefaultBilinearGrid.java       |   5 +
 .../internal/shared/DefaultCompoundCurve.java      |   5 -
 .../internal/shared/DefaultCurvePolygon.java       |   6 +
 .../internal/shared/DefaultDataPoints.java         |  20 +-
 .../internal/shared/DefaultGeometryCollection.java |  44 ++
 .../internal/shared/DefaultLineString.java         |  42 ++
 .../internal/shared/DefaultLinearRing.java         |  10 +
 .../internal/shared/DefaultMultiPoint.java         |  46 +-
 .../internal/shared/DefaultMultiSurface.java       |  11 +
 .../internal/shared/DefaultNurbCurve.java          |   2 +-
 .../internal/shared/DefaultNurbSurface.java        |   6 +
 .../geometries/internal/shared/DefaultPoint.java   |  13 +-
 .../geometries/internal/shared/DefaultPolygon.java |  65 +-
 .../internal/shared/DefaultPolyhedralSurface.java  |   6 +
 .../internal/shared/DefaultPolyhedron.java         |   6 -
 .../geometries/internal/shared/DefaultPrism.java   |   5 +
 .../internal/shared/DefaultProductCurve.java       |   6 -
 .../internal/shared/DefaultReversedSurface.java    |  12 +
 .../internal/shared/EmptyDataPoints.java           | 116 ++++
 .../geometries/internal/shared/IndexedPoint.java   |   9 +-
 .../internal/shared/SinglePositionDataPoints.java  | 140 ++++
 .../apache/sis/geometries/mesh/MeshPrimitive.java  |  93 +--
 .../geometries/mesh/MeshPrimitiveComparator.java   |   8 +-
 .../sis/geometries/mesh/MeshPrimitiveVisitor.java  |   4 +-
 .../sis/geometries/mesh/MultiMeshPrimitive.java    |  22 +
 .../sis/geometries/operation/ComputeAttribute.java |   6 +-
 .../apache/sis/geometries/operation/Contains.java  |   8 +-
 .../apache/sis/geometries/operation/Distance.java  |   6 +-
 .../geometries/operation/GeometryProcessor.java    |  45 +-
 .../sis/geometries/operation/Intersection.java     |  30 +-
 .../geometries/operation/SutherlandHodgman.java    |  20 +-
 .../org/apache/sis/geometries/operation/To3D.java  |  28 +-
 .../sis/geometries/operation/ToPrimitive.java      |   2 +-
 .../apache/sis/geometries/operation/Transform.java |   6 +-
 .../operation/simplify/greedyinsert/Edge.java      |  12 +-
 .../simplify/greedyinsert/TINBuilder.java          |  44 +-
 .../simplify/greedyinsert/TinDistance.java         |  12 +-
 .../operation/simplify/greedyinsert/WTriangle.java |  57 +-
 .../operation/spatialanalysis2d/ISOBand.java       |  12 +-
 .../operation/triangulate/EarClipping.java         |  52 +-
 .../operation/triangulate/delaunay/Delaunay.java   |   8 +-
 .../triangulate/delaunay/OrientedEdge.java         |  11 +-
 .../triangulate/delaunay/OrientedTriangle.java     |  31 +-
 .../apache/sis/geometries/point/MultiPoint.java    |  14 +-
 .../org/apache/sis/geometries/solid/Capsule.java   | 177 ++++-
 .../org/apache/sis/geometries/solid/Cylinder.java  | 173 ++++-
 .../org/apache/sis/geometries/solid/Ellipsoid.java | 373 ++++++++++
 .../org/apache/sis/geometries/solid/Frustrum.java  |  17 +
 .../apache/sis/geometries/solid/Polyhedron.java    |  11 +
 .../org/apache/sis/geometries/solid/Sphere.java    | 100 ++-
 .../solid/polyhedron/AbstractPolyhedron.java       |  27 +-
 .../sis/geometries/surface/CurvePolygon.java       |  11 +
 .../geometries/surface/ParametricCurveSurface.java |   2 +
 .../org/apache/sis/geometries/surface/Polygon.java |  11 +
 .../sis/geometries/surface/PolyhedralSurface.java  |  17 +
 .../apache/sis/geometries/surface/PreparedTIN.java |  21 +-
 .../apache/sis/geometries/surface/Triangle.java    |  30 +-
 .../main/org/apache/sis/gml/AbstractGMLWriter.java |   4 +-
 .../main/org/apache/sis/gml/GML2Reader.java        |  16 +-
 .../main/org/apache/sis/gml/GML2Writer.java        |   2 +-
 .../main/org/apache/sis/gml/GML3Reader.java        |  62 +-
 .../main/org/apache/sis/gml/GML3Writer.java        |   4 +-
 .../org/apache/sis/gml/PositionListBuilder.java    |   4 +-
 .../main/org/apache/sis/maths/AbstractCursor.java  |   4 +-
 .../main/org/apache/sis/maths/AbstractMatrix.java  |   2 +-
 .../org/apache/sis/maths/AbstractSimilarity.java   |   4 +-
 .../{AbstractTuple.java => AbstractVector.java}    |  12 +-
 .../main/org/apache/sis/maths/Affine1D.java        |   2 +-
 .../main/org/apache/sis/maths/Affine2D.java        |   2 +-
 .../main/org/apache/sis/maths/Affine3D.java        |   4 +-
 .../main/org/apache/sis/maths/Affine4D.java        |   2 +-
 .../main/org/apache/sis/maths/Affines.java         |   4 +-
 .../main/org/apache/sis/maths/Array.java           |  36 +-
 .../org/apache/sis/maths/ArrayConcatenated.java    |   8 +-
 .../main/org/apache/sis/maths/ArrayFactory.java    |  30 +-
 .../main/org/apache/sis/maths/ArrayFactoryFFM.java |  36 +-
 .../main/org/apache/sis/maths/ArrayFactoryHAT.java |  16 +-
 .../org/apache/sis/maths/ArrayFactoryJava.java     |  48 +-
 .../org/apache/sis/maths/ArraySpliterator.java     |   6 +-
 .../org/apache/sis/maths/ArrayUnmodifiable.java    |   6 +-
 .../main/org/apache/sis/maths/Cursor.java          |   2 +-
 .../org/apache/sis/maths/CursorUnmodifiable.java   |  10 +-
 .../main/org/apache/sis/maths/Maths.java           |  30 +-
 .../main/org/apache/sis/maths/Matrices.java        |   6 +-
 .../main/org/apache/sis/maths/Matrix2D.java        |   2 +-
 .../main/org/apache/sis/maths/Matrix3D.java        |   8 +-
 .../main/org/apache/sis/maths/Matrix4D.java        |  10 +-
 .../main/org/apache/sis/maths/NDArray.java         |  16 +-
 .../main/org/apache/sis/maths/NDArrays.java        |  40 +-
 .../main/org/apache/sis/maths/Quaternion.java      |   8 +-
 .../main/org/apache/sis/maths/Quaternions.java     |   2 +-
 .../main/org/apache/sis/maths/ReadOnly.java        |  19 +-
 .../main/org/apache/sis/maths/Similarity.java      |   4 +-
 .../main/org/apache/sis/maths/Similarity3D.java    |   4 +-
 .../main/org/apache/sis/maths/SimilarityND.java    |   4 +-
 .../org/apache/sis/maths/SimplifiedTransform.java  |   2 +-
 .../main/org/apache/sis/maths/Transform.java       |   2 +-
 .../main/org/apache/sis/maths/Tuple.java           | 176 -----
 .../main/org/apache/sis/maths/Vector.java          | 174 ++++-
 .../main/org/apache/sis/maths/Vector1D.java        |  28 +-
 .../main/org/apache/sis/maths/Vector2D.java        |  28 +-
 .../main/org/apache/sis/maths/Vector3D.java        |  32 +-
 .../main/org/apache/sis/maths/Vector4D.java        |  44 +-
 .../main/org/apache/sis/maths/VectorND.java        |  20 +-
 ...leUnmodifiable.java => VectorUnmodifiable.java} |  24 +-
 .../main/org/apache/sis/maths/Vectors.java         |  67 +-
 .../org/apache/sis/geometries/DataPointsTest.java  |  42 --
 .../test/org/apache/sis/geometries/EmptyTest.java  |  80 +--
 .../sis/geometries/GeometryCollectionTest.java     |  82 +--
 .../org/apache/sis/geometries/GeometryTest.java    |  66 ++
 .../sis/geometries/OrientedGeometryTest.java       | 229 -------
 .../test/org/apache/sis/geometries/PointTest.java  | 113 +--
 .../test/org/apache/sis/geometries/PrismTest.java  |  82 +--
 .../sis/geometries/adapter/ShapeAdapterTest.java   |  26 +-
 .../sis/geometries/adapter/ShapeConverterTest.java |  14 +-
 .../geometries/adapter/WellKnownBinaryTest.java    |  22 +-
 .../sis/geometries/adapter/WellKnownTextTest.java  |  12 +-
 .../org/apache/sis/geometries/cs/BearingTest.java  |   8 +-
 .../sis/geometries/curve/ArcByBulgeTest.java       | 173 +----
 .../sis/geometries/curve/ArcByCenterPointTest.java | 182 +----
 .../org/apache/sis/geometries/curve/ArcTest.java   |  18 +-
 .../sis/geometries/curve/BSplineCurveTest.java     | 185 +----
 .../apache/sis/geometries/curve/BezierTest.java    |   6 +-
 .../apache/sis/geometries/curve/CircleTest.java    |   6 +-
 .../sis/geometries/curve/CircularStringTest.java   | 170 +----
 .../apache/sis/geometries/curve/ClothoidTest.java  |   9 +-
 .../sis/geometries/curve/CompoundCurveTest.java    | 176 +----
 .../org/apache/sis/geometries/curve/ConicTest.java | 167 +----
 .../sis/geometries/curve/CubicSplineTest.java      |   6 +-
 .../sis/geometries/curve/EllipticArcTest.java      |   6 +-
 .../sis/geometries/curve/FunctionArcTest.java      |   6 -
 .../apache/sis/geometries/curve/GeodesicTest.java  | 173 +----
 .../sis/geometries/curve/LineStringTest.java       | 231 ++-----
 .../sis/geometries/curve/LinearRingTest.java       |  66 +-
 .../sis/geometries/curve/MultiCurveTest.java       |  15 +-
 .../sis/geometries/curve/MultiLineStringTest.java  |  75 +-
 .../apache/sis/geometries/curve/NurbCurveTest.java |  36 +-
 .../sis/geometries/curve/OffsetCurveTest.java      | 176 +----
 .../sis/geometries/curve/PolynomialArcTest.java    |   6 -
 .../sis/geometries/curve/PolynomialSplineTest.java | 194 +-----
 .../sis/geometries/curve/ProductCurveTest.java     | 176 +----
 .../sis/geometries/curve/RealFunctionTest.java     |  12 -
 .../sis/geometries/curve/RealPolynomialTest.java   |  18 -
 .../org/apache/sis/geometries/curve/RhumbTest.java | 176 +----
 .../apache/sis/geometries/curve/SpiralTest.java    | 176 +----
 .../internal/shared/DefaultLineStringTest.java     |  18 +
 .../internal/shared/DefaultLinearRingTest.java     |  18 +
 .../shared/DefaultMultiLineStringTest.java         |  23 +
 .../internal/shared/DefaultMultiPointTest.java     |  18 +
 .../internal/shared/DefaultMultiPolygonTest.java   |  23 +
 .../internal/shared/DefaultPolygonTest.java        |  27 +
 .../internal/shared/DefaultRawMultiPointTest.java  |  17 +
 .../internal/shared/DefaultReversedCurveTest.java  | 164 +----
 .../shared/DefaultReversedSurfaceTest.java         | 122 ----
 .../apache/sis/geometries/mesh/PrimitiveTest.java  |   4 +-
 .../sis/geometries/mesh/PrimitiveVisitorTest.java  |   1 -
 .../sis/geometries/operation/AbstractD9IMTest.java | 357 ++++++++++
 .../sis/geometries/operation/BufferTest.java       |  52 +-
 .../sis/geometries/operation/ContainsTest.java     |  66 +-
 .../sis/geometries/operation/ConvexHullTest.java   |  31 +-
 .../sis/geometries/operation/CrossesTest.java      |  57 +-
 .../sis/geometries/operation/DifferenceTest.java   |  41 +-
 .../sis/geometries/operation/DisjointTest.java     |  41 +-
 .../sis/geometries/operation/DistanceTest.java     |  80 ++-
 .../apache/sis/geometries/operation/EqualTest.java |  40 +-
 .../sis/geometries/operation/IntersectionTest.java |  46 +-
 .../sis/geometries/operation/IntersectsTest.java   |  69 +-
 .../sis/geometries/operation/LocateAlongTest.java  |  12 +-
 .../geometries/operation/LocateBetweenTest.java    |  14 +-
 .../sis/geometries/operation/OverlapsTest.java     |  52 +-
 .../sis/geometries/operation/RelateTest.java       |  60 +-
 .../geometries/operation/SutherlandHogmanTest.java |   8 +-
 .../geometries/operation/SymDifferenceTest.java    |  43 +-
 .../apache/sis/geometries/operation/TestData.java  | 112 ---
 .../apache/sis/geometries/operation/To3DTest.java  |  11 +-
 .../sis/geometries/operation/ToPrimitiveTest.java  |  36 +-
 .../sis/geometries/operation/TouchesTest.java      |  58 +-
 .../sis/geometries/operation/TransformTest.java    |  13 +-
 .../apache/sis/geometries/operation/UnionTest.java |  41 +-
 .../geometries/operation/WithinDistanceTest.java   |  51 +-
 .../sis/geometries/operation/WithinTest.java       |  55 +-
 .../operation/spatialanalysis2d/IsoBandTest.java   |   2 -
 .../sis/geometries/point/MultiPointTest.java       |  87 ++-
 .../sis/geometries/point/PointCloudTest.java       |  15 -
 .../sis/geometries/solid/BSplineSolidTest.java     | 131 +---
 .../sis/geometries/solid/MultiPolyhedronTest.java  |   6 +-
 .../sis/geometries/solid/PolyhedronTest.java       | 107 +--
 .../sis/geometries/surface/BSplineSurfaceTest.java |  39 +-
 .../sis/geometries/surface/BilinearGridTest.java   |   6 +-
 .../sis/geometries/surface/CurvePolygonTest.java   | 140 +---
 .../sis/geometries/surface/MultiPolygonTest.java   |  91 ++-
 .../sis/geometries/surface/MultiSurfaceTest.java   |  18 +-
 .../sis/geometries/surface/NurbSurfaceTest.java    |  12 +-
 .../surface/ParametricCurveSurfaceTest.java        | 146 +---
 .../apache/sis/geometries/surface/PolygonTest.java | 217 +++---
 .../geometries/surface/PolyhedralSurfaceTest.java  | 137 +---
 .../sis/geometries/surface/PreparedTINTest.java    |  15 +-
 .../org/apache/sis/geometries/surface/TINTest.java |   9 +-
 .../sis/geometries/surface/TriangleTest.java       |  42 +-
 .../test/org/apache/sis/gml/GML2ReaderTest.java    |  40 +-
 .../test/org/apache/sis/gml/GML2WriterTest.java    |  44 +-
 .../test/org/apache/sis/gml/GML3ReaderTest.java    |  48 +-
 .../test/org/apache/sis/gml/GML3WriterTest.java    |  60 +-
 .../test/org/apache/sis/gml/GMLWriterTest.java     |   4 +-
 .../test/org/apache/sis/gml/GeometryAssert.java    |   2 +-
 .../apache/sis/gml/JAXBGeometryAdapterTest.java    |   8 +-
 .../org/apache/sis/maths/AbstractArrayTest.java    |   7 +-
 .../org/apache/sis/maths/AbstractTupleTest.java    | 260 -------
 .../org/apache/sis/maths/AbstractVectorTest.java   | 256 ++++++-
 .../test/org/apache/sis/maths/NDArraysTest.java    |   6 +-
 .../test/org/apache/sis/maths/VectorXbTest.java    |   2 +-
 .../test/org/apache/sis/maths/VectorXdTest.java    |   2 +-
 .../test/org/apache/sis/maths/VectorXfTest.java    |   2 +-
 .../test/org/apache/sis/maths/VectorXiTest.java    |   2 +-
 .../test/org/apache/sis/maths/VectorXlTest.java    |   2 +-
 .../test/org/apache/sis/maths/VectorXsTest.java    |   2 +-
 .../test/org/apache/sis/maths/VectorXubTest.java   |   2 +-
 .../test/org/apache/sis/maths/VectorXuiTest.java   |   2 +-
 .../test/org/apache/sis/maths/VectorXusTest.java   |   2 +-
 .../test/org/apache/sis/maths/VectorsTest.java     |   4 +-
 .../storage/dggs/DiscreteGlobalGridSystems.java    |   4 +-
 .../sis/referencing/dggs/AbstractDggrsTest.java    |   4 +-
 .../main/module-info.java                          |   3 +
 .../storage/geopose/FrameSpecificationParser.java  | 112 +++
 .../org/apache/sis/storage/geopose/GeoPose.java    | 112 +++
 .../apache/sis/storage/geopose/GeoPoseMapper.java  | 150 ++++
 .../sis/storage/geopose/LocalTangentPlane.java     | 149 ++++
 .../sis/storage/geopose/binding/Advanced.java      | 137 ++++
 .../sis/storage/geopose/binding/BasicEuler.java    | 165 +++++
 .../storage/geopose/binding/BasicQuaternion.java   | 112 +++
 .../sis/storage/geopose/binding/BasicYPR.java      | 111 +++
 .../apache/sis/storage/geopose/binding/Chain.java  | 138 ++++
 .../sis/storage/geopose/binding/FrameAndTime.java  | 109 +++
 .../geopose/binding/FrameSpecification.java        |  47 ++
 .../geopose/binding/FrameTransformPair.java        |  88 +++
 .../apache/sis/storage/geopose/binding/Graph.java  | 140 ++++
 .../storage/geopose/binding/IrregularSeries.java   | 162 +++++
 .../sis/storage/geopose/binding/Position.java      | 137 ++++
 .../sis/storage/geopose/binding/Quaternion.java    | 160 +++++
 .../sis/storage/geopose/binding/RegularSeries.java | 188 +++++
 .../sis/storage/geopose/binding/SeriesHeader.java  | 182 +++++
 .../sis/storage/geopose/binding/SeriesTrailer.java | 109 +++
 .../geopose/binding/SpecificationReference.java    | 130 ++++
 .../apache/sis/storage/geopose/binding/Stream.java | 114 ++++
 .../sis/storage/geopose/binding/StreamElement.java |  88 +++
 .../sis/storage/geopose/binding/StreamHeader.java  | 111 +++
 .../storage/geopose/binding/TransitionModel.java}  |  36 +-
 .../sis/storage/geopose/binding/YawPitchRoll.java  | 138 ++++
 .../sis/storage/geopose/binding/package-info.java  |  44 ++
 .../apache/sis/storage/geopose/package-info.java}  |  25 +-
 .../apache/sis/storage/geopose/MappingTest.java    | 188 +++++
 .../sis/storage/geopose/binding/BindingTest.java   | 182 +++++
 .../sis/storage/geopose/binding/advanced.json      |  14 +
 .../geopose/binding/advanced_no_validtime.json     |  13 +
 .../sis/storage/geopose/binding/basic_euler.json   |   6 +
 .../storage/geopose/binding/basic_quaternion.json  |  13 +
 .../sis/storage/geopose/binding/basic_ypr.json     |  12 +
 .../apache/sis/storage/geopose/binding/chain.json  |  17 +
 .../apache/sis/storage/geopose/binding/graph.json  |  21 +
 .../storage/geopose/binding/irregular_series.json  |  36 +
 .../storage/geopose/binding/regular_series.json    |  30 +
 .../apache/sis/storage/geopose/binding/stream.json |  24 +
 .../storage/geopose/binding/stream_element.json    |  10 +
 netbeans-project/ivy.xml                           |  20 +-
 .../sis/gui/controls/FormatTableCellFactory.java   | 117 ++++
 .../sis/gui/coverage/ImagePropertyExplorer.java    |  16 +-
 .../org/apache/sis/gui/internal/PropertyView.java  |  44 +-
 .../sis/referencing/factory/sql/epsg/README.md     |   4 +-
 settings.gradle.kts                                |  26 +-
 433 files changed, 13548 insertions(+), 7259 deletions(-)

diff --cc 
incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBSplineSurface.java
index d922b75a18,1d3cf43978..ba927cceaa
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBSplineSurface.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBSplineSurface.java
@@@ -189,8 -190,13 +190,13 @@@ public non-sealed class DefaultBSplineS
          throw new UnsupportedOperationException("Not supported yet.");
      }
  
+     @Override
+     public Geometry getBoundary() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
      @Override
 -    public Identifier getName() {
 +    public ReferenceIdentifier getName() {
          throw new UnsupportedOperationException("Not supported yet.");
      }
  
diff --cc 
incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBilinearGrid.java
index e67dd7deda,d94593c97d..7123a01f19
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBilinearGrid.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBilinearGrid.java
@@@ -173,8 -174,13 +174,12 @@@ public non-sealed class DefaultBilinear
          throw new UnsupportedOperationException("Not supported yet.");
      }
  
 -    @Override
+     public Geometry getBoundary() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
      @Override
 -    public Identifier getName() {
 +    public ReferenceIdentifier getName() {
          throw new UnsupportedOperationException("Not supported yet.");
      }
  
diff --cc 
incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Ellipsoid.java
index 0000000000,4ca477efb1..6b2fb7e853
mode 000000,100644..100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Ellipsoid.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Ellipsoid.java
@@@ -1,0 -1,371 +1,373 @@@
+ /*
+  * 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.geometries.solid;
+ 
+ import java.util.Arrays;
+ import java.util.List;
+ import javax.measure.Quantity;
+ import static org.opengis.annotation.Specification.ISO_19107;
+ import org.opengis.annotation.UML;
+ import org.opengis.geometry.DirectPosition;
+ import org.opengis.geometry.Envelope;
+ import org.opengis.referencing.crs.CoordinateReferenceSystem;
+ import org.apache.sis.geometries.BBox;
+ import org.apache.sis.geometries.Curve;
+ import org.apache.sis.geometries.DataPoints;
+ import org.apache.sis.geometries.Geometries;
+ import org.apache.sis.geometries.Geometry;
+ import org.apache.sis.geometries.GeometryFactory;
+ import org.apache.sis.geometries.GeometryType;
+ import org.apache.sis.geometries.SurfaceInterpolation;
+ import org.apache.sis.geometries.DataPointsType;
+ import org.apache.sis.geometries.internal.shared.AbstractGeometry;
+ import org.apache.sis.geometries.surface.ParametricCurveSurface;
+ import org.apache.sis.maths.DataType;
+ import org.apache.sis.maths.NDArrays;
+ import org.apache.sis.maths.ReadOnly;
+ import org.apache.sis.maths.SampleSystem;
+ import org.apache.sis.util.ArgumentChecks;
+ 
++// Specific to the geoapi-3.1 branch:
++import org.opengis.referencing.ReferenceIdentifier;
++
+ // Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.Identifier;
+ import org.apache.sis.maths.Vector;
+ 
+ 
+ /**
+  * An ellipsoid geometry defined by a center and one semi-axis length per 
axis of the coordinate
+  * system.
+  *
+  * <p>As a conic surface, an ellipsoid is a parametric curve surface given as 
a family of ellipses
+  * whose positions vary along the axis of the ellipsoid. Its horizontal 
curves are therefore lines
+  * of constant latitude and its vertical curves lines of constant 
longitude.</p>
+  *
+  * <p>Constraints:</p>
+  * <ul>
+  *   <li>The up-normal is the outward normal when the control points are 
ordered by increasing
+  *       longitude and increasing latitude.</li>
+  *   <li>There is one semi-axis per axis of the coordinate system, and each 
of them is positive.</li>
+  * </ul>
+  *
+  * <p>Note: this geometry is not the ellipsoid used as a geometric reference 
surface
+  * (ISO 19107:2019 - 6.2.3.4), which {@link 
org.opengis.referencing.datum.Ellipsoid} describes.
+  * That one is a property of the coordinate reference system; this one is a 
geometry expressed
+  * in such a system.</p>
+  *
+  * @author Johann Sorel (Geomatys)
+  */
+ public final class Ellipsoid extends AbstractGeometry implements 
ParametricCurveSurface {
+ 
+     /**
+      * Must contain one point: the center of the ellipsoid.
+      */
+     private final DataPoints points;
+ 
+     /**
+      * Length of the semi-axis along each axis of the coordinate system,
+      * in the units of that axis. There is one value per dimension.
+      */
+     private final double[] semiAxes;
+ 
+     /**
+      * @param dimension number of dimensions of the ellipsoid, must be 
positive.
+      */
+     public Ellipsoid(int dimension) {
+         this(Geometries.getUndefinedCRS(dimension));
+     }
+ 
+     /**
+      * @param crs ellipsoid coordinate system, not null.
+      */
+     public Ellipsoid(CoordinateReferenceSystem crs) {
+         points = 
GeometryFactory.DEFAULT.createDataPoints(NDArrays.of(SampleSystem.of(crs), 
DataType.DOUBLE, 1));
+         semiAxes = unitSemiAxes(crs.getCoordinateSystem().getDimension());
+     }
+ 
+     /**
+      * @param dimension number of dimensions of the ellipsoid, must be 
positive.
+      * @param semiAxes  length of the semi-axis along each axis, one value 
per dimension.
+      *                  Each of them must be positive.
+      */
+     public Ellipsoid(int dimension, double... semiAxes) {
+         this(Geometries.getUndefinedCRS(dimension), semiAxes);
+     }
+ 
+     /**
+      * @param crs       ellipsoid coordinate system, not null.
+      * @param semiAxes  length of the semi-axis along each axis, one value 
per dimension.
+      *                  Each of them must be positive.
+      */
+     public Ellipsoid(CoordinateReferenceSystem crs, double... semiAxes) {
+         points = 
GeometryFactory.DEFAULT.createDataPoints(NDArrays.of(SampleSystem.of(crs), 
DataType.DOUBLE, 1));
+         this.semiAxes = 
checkedSemiAxes(crs.getCoordinateSystem().getDimension(), semiAxes);
+     }
+ 
+     /**
+      * Creates an ellipsoid centered on the single position of the given 
sequence. The sequence is
+      * taken as-is, so the caller may give the ellipsoid the attributes 
carried by that sequence.
+      *
+      * @param  points  the center of the ellipsoid.
+      * @throws IllegalArgumentException if the given sequence does not hold 
exactly one position.
+      */
+     public Ellipsoid(DataPoints points) {
+         this.points = checkedPoints(points);
+         semiAxes = unitSemiAxes(points.getDimension());
+     }
+ 
+     /**
+      * Creates an ellipsoid of the given semi-axes centered on the single 
position of the given
+      * sequence.
+      *
+      * @param  points    the center of the ellipsoid.
+      * @param  semiAxes  length of the semi-axis along each axis, one value 
per dimension.
+      *                   Each of them must be positive.
+      * @throws IllegalArgumentException if the given sequence does not hold 
exactly one position,
+      *         or if the number of semi-axes is not the number of dimensions.
+      */
+     public Ellipsoid(DataPoints points, double... semiAxes) {
+         this.points = checkedPoints(points);
+         this.semiAxes = checkedSemiAxes(points.getDimension(), semiAxes);
+     }
+ 
+     /**
+      * Returns the given sequence if it holds the single position an 
ellipsoid is centered on.
+      */
+     private static DataPoints checkedPoints(final DataPoints points) {
+         if (points.size() != 1) {
+             throw new IllegalArgumentException("Ellipsoid sequence must 
contain one point");
+         }
+         return points;
+     }
+ 
+     /**
+      * Returns the semi-axes of an ellipsoid of the given number of 
dimensions which is a unit sphere.
+      */
+     private static double[] unitSemiAxes(final int dimension) {
+         final var lengths = new double[dimension];
+         Arrays.fill(lengths, 1.0);
+         return lengths;
+     }
+ 
+     /**
+      * Returns a copy of the given semi-axes after verifying that there is 
one of them per dimension
+      * and that all of them are positive.
+      */
+     private static double[] checkedSemiAxes(final int dimension, final 
double[] semiAxes) {
+         ensureValidSemiAxes(dimension, semiAxes);
+         return semiAxes.clone();
+     }
+ 
+     /**
+      * Verifies that there is one semi-axis per dimension and that all of 
them are positive.
+      */
+     private static void ensureValidSemiAxes(final int dimension, final 
double[] semiAxes) {
+         if (semiAxes.length != dimension) {
+             throw new IllegalArgumentException("Ellipsoid must have one 
semi-axis per dimension, expected "
+                     + dimension + " but found " + semiAxes.length);
+         }
+         for (int i=0; i<semiAxes.length; i++) {
+             ArgumentChecks.ensurePositive("semiAxes[" + i + ']', semiAxes[i]);
+         }
+     }
+ 
+     @Override
+     public GeometryType getGeometryType() {
+         return GeometryType.ELLIPSOID;
+     }
+ 
+     @Override
+     public boolean isEmpty() {
+         return false;
+     }
+ 
+     @Override
+     public Quantity<?> getArea() {
+         throw new UnsupportedOperationException("Not supported.");
+     }
+ 
+     @Override
+     public void setCoordinateReferenceSystem(CoordinateReferenceSystem cs) 
throws IllegalArgumentException {
+         if (cs.getCoordinateSystem().getDimension() != 
getCoordinateReferenceSystem().getCoordinateSystem().getDimension()) {
+             throw new IllegalArgumentException("New CRS dimension must be the 
same as previous CRS");
+         }
+         points.setCoordinateReferenceSystem(cs);
+     }
+ 
+     @Override
+     public CoordinateReferenceSystem getCoordinateReferenceSystem() {
+         return points.getCoordinateReferenceSystem();
+     }
+ 
+     @Override
+     public DataPointsType getDataPointsType() {
+         return points.getType();
+     }
+ 
+     /**
+      * Returns {@link SurfaceInterpolation#ELLIPTICAL}: this surface is a 
section of an ellipsoid.
+      *
+      * @see ISO 19107:2019 - 8.5.2
+      */
+     @UML(identifier="interpolation", specification=ISO_19107)
+     @Override
+     public List<SurfaceInterpolation> getInterpolation() {
+         return List.of(SurfaceInterpolation.ELLIPTICAL);
+     }
+ 
+     /**
+      * Returns a copy of the semi-axis lengths, one per axis of the 
coordinate system.
+      * Writing in the returned array does not reshape this ellipsoid;
+      * use {@link #setSemiAxes(double...)} for that.
+      *
+      * @return length of the semi-axis along each axis.
+      */
+     public double[] getSemiAxes() {
+         return semiAxes.clone();
+     }
+ 
+     /**
+      * @param  dimension  index of the axis along which to measure the 
semi-axis.
+      * @return length of the semi-axis along the given axis.
+      */
+     public double getSemiAxis(int dimension) {
+         return semiAxes[dimension];
+     }
+ 
+     /**
+      * @param semiAxes new semi-axis lengths, one per dimension. Each of them 
must be positive.
+      * @throws IllegalArgumentException if the number of semi-axes is not the 
number of dimensions.
+      */
+     public void setSemiAxes(double... semiAxes) {
+         ensureValidSemiAxes(this.semiAxes.length, semiAxes);
+         System.arraycopy(semiAxes, 0, this.semiAxes, 0, this.semiAxes.length);
+     }
+ 
+     /**
+      * @param dimension index of the axis along which to set the semi-axis.
+      * @param length    new semi-axis length, must be positive.
+      */
+     public void setSemiAxis(int dimension, double length) {
+         ArgumentChecks.ensurePositive("length", length);
+         semiAxes[dimension] = length;
+     }
+ 
+     /**
+      * Returns a copy of the ellipsoid center. Writing in the returned tuple 
does not move this
+      * ellipsoid; use {@link #setCenter(Tuple)} for that.
+      *
+      * @return ellipsoid center.
+      */
+     public ReadOnly.Vector<?> getCenter() {
+         return points.getPosition(0);
+     }
+ 
+     /**
+      * @param position new center of the ellipsoid
+      */
+     public void setCenter(ReadOnly.Vector<?> position) {
+         points.setPosition(0, position);
+     }
+ 
+     /**
+      * {@inheritDoc }
+      *
+      * <p>An ellipsoid reaches its semi-axis away from its center on each 
axis, so the smallest box
+      * containing it is the box of that extent around the center.</p>
+      */
+     @Override
+     public Envelope getEnvelope() {
+         final Vector<?> center = getCenter().copy();
+         final BBox env = new BBox(center, center);
+         env.setCoordinateReferenceSystem(getCoordinateReferenceSystem());
+         for (int i = 0, n = getDimension(); i < n; i++) {
+             final double c = center.get(i);
+             final double a = semiAxes[i];
+             if (a > 0) {
+                 env.setRange(i, c-a, c+a);
+             }
+         }
+         return env;
+     }
+ 
+     @Override
+     public Geometry getBoundary() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     // methods from ParametricCurveSurface
+ 
+     @Override
+     public int getRows() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     @Override
+     public int getColumns() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     @Override
+     public List<DirectPosition> getControlPoints() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     @Override
+     public GeometryType getHorizontalCurveType() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     @Override
+     public GeometryType getVerticalCurveType() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     @Override
+     public List<double[]> getKnots() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     @Override
+     public Curve getHorizontalCurve(double v) {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     @Override
+     public Curve getVerticalCurve(double u) {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     @Override
+     public DirectPosition getSurface(double u, double v) {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     @Override
 -    public Identifier getName() {
++    public ReferenceIdentifier getName() {
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ 
+     /**
+      * Returns the center of this ellipsoid, as a sequence of one position. 
An ellipsoid is defined
+      * by that position and by its semi-axes, so the center is the only 
position it holds.
+      */
+     @Override
+     public DataPoints getDataPoints() {
+         return points;
+     }
+ 
+ }
diff --cc 
incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Sphere.java
index 1878706f22,ab2c8b1405..c8228bc3f6
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Sphere.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Sphere.java
@@@ -30,15 -32,17 +32,19 @@@ import org.apache.sis.geometries.Geomet
  import org.apache.sis.geometries.GeometryType;
  import org.apache.sis.geometries.SurfaceInterpolation;
  import org.apache.sis.geometries.DataPointsType;
 -import org.apache.sis.geometries.internal.shared.AbstractGeometry;
  import org.apache.sis.geometries.surface.ParametricCurveSurface;
- import org.apache.sis.maths.Tuple;
- import org.apache.sis.maths.Vector;
- import org.apache.sis.maths.Vectors;
 +import org.apache.sis.geometries.internal.shared.AbstractGeometry;
- import org.apache.sis.util.ArgumentChecks;
 +
 +// Specific to the geoapi-3.1 branch:
 +import org.opengis.referencing.ReferenceIdentifier;
+ import org.apache.sis.maths.DataType;
+ import org.apache.sis.maths.NDArrays;
+ import org.apache.sis.maths.ReadOnly;
+ import org.apache.sis.maths.SampleSystem;
+ import org.apache.sis.util.ArgumentChecks;
+ 
+ // Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.Identifier;
+ import org.apache.sis.maths.Vector;
  
  
  /**
diff --cc 
optional/src/org.apache.sis.referencing.epsg/test/org/apache/sis/referencing/factory/sql/epsg/README.md
index e16bf940fd,cebac96f65..8aad462fac
--- 
a/optional/src/org.apache.sis.referencing.epsg/test/org/apache/sis/referencing/factory/sql/epsg/README.md
+++ 
b/optional/src/org.apache.sis.referencing.epsg/test/org/apache/sis/referencing/factory/sql/epsg/README.md
@@@ -67,10 -67,10 +67,10 @@@ export NON_FREE_DIR=$PW
  cd _<path to SIS project directory>_
  gradle clean test jar
  export CLASSPATH=~/.m2/repository/org/hsqldb/hsqldb/2.7.4/hsqldb-2.7.4.jar
- export 
CLASSPATH=~/.m2/repository/org/postgresql/postgresql/42.7.7/postgresql-42.7.7.jar:$CLASSPATH
+ export 
CLASSPATH=~/.m2/repository/org/postgresql/postgresql/42.7.9/postgresql-42.7.9.jar:$CLASSPATH
  export 
CLASSPATH=~/.m2/repository/javax/measure/unit-api/2.1.3/unit-api-2.1.3.jar:$CLASSPATH
- export 
CLASSPATH=~/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/4.0.4/jakarta.xml.bind-api-4.0.4.jar:$CLASSPATH
+ export 
CLASSPATH=~/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/4.0.5/jakarta.xml.bind-api-4.0.5.jar:$CLASSPATH
 -export 
CLASSPATH=$PWD/geoapi/snapshot/geoapi/target/geoapi-4.0-SNAPSHOT.jar:$CLASSPATH
 +export 
CLASSPATH=$PWD/geoapi/snapshot/geoapi/target/geoapi-3.1-SNAPSHOT.jar:$CLASSPATH
  export 
CLASSPATH=$PWD/endorsed/build/libs/org.apache.sis.referencing.jar:$CLASSPATH
  export 
CLASSPATH=$PWD/endorsed/build/libs/org.apache.sis.metadata.jar:$CLASSPATH
  export CLASSPATH=$PWD/endorsed/build/libs/org.apache.sis.util.jar:$CLASSPATH

Reply via email to