This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git


The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
     new f7c573e515 feat(Geometry): remove default getBoundary exception, push 
it on implementations, add missing creation methods for Ray,Plane,HyperPlane
f7c573e515 is described below

commit f7c573e51531270dd77a5e3e1dbe88a37110754a
Author: jsorel <[email protected]>
AuthorDate: Fri Oct 9 10:56:31 2026 +0200

    feat(Geometry): remove default getBoundary exception, push it on 
implementations, add missing creation methods for Ray,Plane,HyperPlane
---
 .../org.apache.sis.geometry/main/module-info.java  |  1 +
 .../main/org/apache/sis/geometries/BBox.java       |  5 ++
 .../main/org/apache/sis/geometries/Geometry.java   |  5 +-
 .../org/apache/sis/geometries/GeometryFactory.java | 86 ++++++++++++++++++++++
 .../main/org/apache/sis/geometries/HyperPlane.java |  5 ++
 .../main/org/apache/sis/geometries/OBBox.java      |  5 ++
 .../main/org/apache/sis/geometries/Plane.java      |  5 ++
 .../main/org/apache/sis/geometries/Ray.java        |  5 ++
 .../main/org/apache/sis/geometries/Solid.java      | 21 ++++++
 .../main/org/apache/sis/geometries/Surface.java    | 20 +++++
 .../geometries/csg/ConstructiveSolidGeometry.java  |  6 ++
 .../internal/shared/DefaultBSplineSolid.java       |  6 ++
 .../internal/shared/DefaultBSplineSurface.java     |  6 ++
 .../internal/shared/DefaultBilinearGrid.java       |  6 ++
 .../internal/shared/DefaultCurvePolygon.java       |  6 ++
 .../internal/shared/DefaultNurbSurface.java        |  6 ++
 .../internal/shared/DefaultPolyhedralSurface.java  |  6 ++
 .../geometries/internal/shared/DefaultPrism.java   |  5 ++
 .../internal/shared/DefaultReversedSurface.java    |  6 ++
 .../apache/sis/geometries/mesh/MeshPrimitive.java  |  5 ++
 .../sis/geometries/mesh/MultiMeshPrimitive.java    |  5 ++
 .../operation/simplify/greedyinsert/WTriangle.java |  6 ++
 .../triangulate/delaunay/OrientedTriangle.java     |  6 ++
 .../org/apache/sis/geometries/solid/Capsule.java   |  6 ++
 .../org/apache/sis/geometries/solid/Cylinder.java  |  6 ++
 .../org/apache/sis/geometries/solid/Ellipsoid.java |  6 ++
 .../org/apache/sis/geometries/solid/Frustrum.java  |  6 ++
 .../org/apache/sis/geometries/solid/Sphere.java    |  6 ++
 .../solid/polyhedron/AbstractPolyhedron.java       |  6 ++
 .../apache/sis/geometries/surface/PreparedTIN.java | 11 +++
 30 files changed, 276 insertions(+), 4 deletions(-)

diff --git a/incubator/src/org.apache.sis.geometry/main/module-info.java 
b/incubator/src/org.apache.sis.geometry/main/module-info.java
index aec0fba718..a7a0f82480 100644
--- a/incubator/src/org.apache.sis.geometry/main/module-info.java
+++ b/incubator/src/org.apache.sis.geometry/main/module-info.java
@@ -40,6 +40,7 @@ module org.apache.sis.geometry {
     exports org.apache.sis.geometries.solid;
     exports org.apache.sis.geometries.solid.polyhedron;
     exports org.apache.sis.geometries.spherical;
+    exports org.apache.sis.gml;
     exports org.apache.sis.maths;
     exports org.apache.sis.scene;
     exports org.apache.sis.scene.light;
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/BBox.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/BBox.java
index 4bc0e2a9a6..69f47b06e2 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/BBox.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/BBox.java
@@ -118,6 +118,11 @@ public final class BBox extends GeneralEnvelope implements 
Geometry {
         return this.clone();
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public synchronized Map<String, Object> userProperties() {
         if (properties == null) {
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Geometry.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Geometry.java
index 2205ac54d9..d7c43cb4e8 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Geometry.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Geometry.java
@@ -578,10 +578,7 @@ public sealed interface Geometry
      * @see ISO 19107:2019 - 6.4.4.7, 6.4.25.2, 6.4.28.2, 10.8.3
      */
     @UML(identifier="boundary", specification=ISO_19107)
-    default Geometry getBoundary() {
-        //TODO remove this method default when all classes implement it.
-        throw new UnsupportedOperationException();
-    }
+    Geometry getBoundary();
 
     /**
      * Map of properties for user needs.
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/GeometryFactory.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/GeometryFactory.java
index 3b71ac5100..0a00125ccb 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/GeometryFactory.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/GeometryFactory.java
@@ -734,4 +734,90 @@ public final class GeometryFactory {
     public <T extends Geometry> GeometryCollection<T> 
createGeometryCollection(CoordinateReferenceSystem crs, T ... geometries) {
         return new DefaultGeometryCollection<>(crs, geometries);
     }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // Implicit shapes ////////////////////////////////////////////////////////
+    // ////////////////////////////////////////////////////////////////////////
+
+    /**
+     * Creates a ray starting from the given position.
+     * A ray is a line which extends to infinity in one direction only.
+     * The reference system of the ray is the one of the given position.
+     *
+     * @param  position   the position the ray starts from, not null.
+     * @param  direction  the direction the ray extends toward, not null.
+     * @return the ray starting from the given position.
+     */
+    public Ray createRay(Vector<?> position, Vector<?> direction) {
+        return new Ray(position, direction);
+    }
+
+    /**
+     * Creates a ray starting from the single position of the given sequence.
+     * The sequence is taken as-is, so the caller may give the ray the 
attributes carried by it.
+     *
+     * @param  points     the position the ray starts from, as a sequence of 
exactly one position.
+     * @param  direction  the direction the ray extends toward, not null.
+     * @return the ray starting from the position of the given sequence.
+     * @throws IllegalArgumentException if the given sequence does not hold 
exactly one position.
+     */
+    public Ray createRay(DataPoints points, Vector<?> direction) {
+        return new Ray(points, direction);
+    }
+
+    /**
+     * Creates a plane centered on the given position and perpendicular to the 
given normal.
+     * A plane is a sheet with no side, both of its faces belonging to it; for 
a surface which
+     * divides the space in two, see {@link #createHyperPlane(Vector, 
Vector)}. The plane is
+     * unbounded until {@link Plane#setSizeX(double)} and {@link 
Plane#setSizeZ(double)} give it
+     * finite extents, making it a quad.
+     * The reference system of the plane is the one of the given position.
+     *
+     * @param  position  the position the plane is centered on, not null.
+     * @param  normal    the direction the plane is perpendicular to, not null.
+     * @return the plane centered on the given position.
+     */
+    public Plane createPlane(Vector<?> position, Vector<?> normal) {
+        return new Plane(position, normal);
+    }
+
+    /**
+     * Creates a plane centered on the single position of the given sequence.
+     * The sequence is taken as-is, so the caller may give the plane the 
attributes carried by it.
+     *
+     * @param  points  the position the plane is centered on, as a sequence of 
exactly one position.
+     * @param  normal  the direction the plane is perpendicular to, not null.
+     * @return the plane centered on the position of the given sequence.
+     * @throws IllegalArgumentException if the given sequence does not hold 
exactly one position.
+     */
+    public Plane createPlane(DataPoints points, Vector<?> normal) {
+        return new Plane(points, normal);
+    }
+
+    /**
+     * Creates a hyperplane passing by the given position and perpendicular to 
the given normal.
+     * Unlike a {@linkplain #createPlane(Vector, Vector) plane}, a hyperplane 
divides the geometric
+     * space in two, and therefore has a side.
+     * The reference system of the hyperplane is the one of the given position.
+     *
+     * @param  position  a position the hyperplane passes by, not null.
+     * @param  normal    the direction the hyperplane is perpendicular to, not 
null.
+     * @return the hyperplane passing by the given position.
+     */
+    public HyperPlane createHyperPlane(Vector<?> position, Vector<?> normal) {
+        return new HyperPlane(position, normal);
+    }
+
+    /**
+     * Creates a hyperplane passing by the single position of the given 
sequence.
+     * The sequence is taken as-is, so the caller may give the hyperplane the 
attributes carried by it.
+     *
+     * @param  points  a position the hyperplane passes by, as a sequence of 
exactly one position.
+     * @param  normal  the direction the hyperplane is perpendicular to, not 
null.
+     * @return the hyperplane passing by the position of the given sequence.
+     * @throws IllegalArgumentException if the given sequence does not hold 
exactly one position.
+     */
+    public HyperPlane createHyperPlane(DataPoints points, Vector<?> normal) {
+        return new HyperPlane(points, normal);
+    }
 }
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/HyperPlane.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/HyperPlane.java
index a71323bed5..c1959bd062 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/HyperPlane.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/HyperPlane.java
@@ -144,6 +144,11 @@ public final class HyperPlane extends AbstractGeometry{
         return points.getCoordinateReferenceSystem();
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs) 
throws IllegalArgumentException {
         points.setCoordinateReferenceSystem(crs);
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/OBBox.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/OBBox.java
index 2f79067279..405b1a8581 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/OBBox.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/OBBox.java
@@ -137,6 +137,11 @@ public final class OBBox extends AbstractGeometry {
         return env;
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     /**
      * Build oriented bbox from given envelope.
      * @param env
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Plane.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Plane.java
index ab2c678992..2a5d0d97f5 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Plane.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Plane.java
@@ -205,6 +205,11 @@ public final class Plane extends AbstractGeometry{
         return points.getCoordinateReferenceSystem();
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs) 
throws IllegalArgumentException {
         points.setCoordinateReferenceSystem(crs);
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Ray.java 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Ray.java
index dffa41de94..10defe5822 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Ray.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Ray.java
@@ -122,6 +122,11 @@ public final class Ray extends AbstractGeometry{
         return points.getCoordinateReferenceSystem();
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs) 
throws IllegalArgumentException {
         points.setCoordinateReferenceSystem(crs);
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Solid.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Solid.java
index 02ed7c68a8..730cd187be 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Solid.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Solid.java
@@ -82,6 +82,27 @@ public sealed interface Solid extends Primitive
         return false;
     }
 
+    /**
+     * Shells bounding this solid, each of them a closed surface without 
boundary.
+     *
+     * <p>Constraints:</p>
+     * <ul>
+     *   <li>At least one shell.</li>
+     *   <li>Every shell is a cycle, therefore a closed composite surface 
having an empty boundary.</li>
+     *   <li>The shells are oriented outward: the upward normal of each of 
them faces away from the
+     *       interior of this solid.</li>
+     *   <li>The shell with the largest envelope is the exterior one, which is 
well defined only
+     *       because the enclosing coordinate space is a 3-dimensional 
Euclidean space.</li>
+     * </ul>
+     *
+     * @return boundary of this solid.
+     *
+     * @see ISO 19107:2019 - 6.4.28.2
+     */
+    @UML(identifier="boundary", specification=ISO_19107)
+    @Override
+    Geometry getBoundary();
+
     /**
      * Sum of the areas of all the boundary surfaces of this solid.
      *
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Surface.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Surface.java
index 5752c7279b..63c7b075c2 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Surface.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Surface.java
@@ -138,6 +138,26 @@ public sealed interface Surface extends Orientable
         throw new UnsupportedOperationException();
     }
 
+    /**
+     * Rings bounding this surface, each of them a simple closed curve having 
this surface on its left.
+     *
+     * <p>Constraints:</p>
+     * <ul>
+     *   <li>At least one ring.</li>
+     *   <li>Except on a plane, no ring is the exterior one, since the notion 
of unbounded exterior
+     *       does not apply.</li>
+     *   <li>In a 2-dimensional coordinate system the rings determine the 
surface completely,
+     *       and may therefore be used to build it.</li>
+     * </ul>
+     *
+     * @return boundary of this surface.
+     *
+     * @see ISO 19107:2019 - 6.4.25.2
+     */
+    @UML(identifier="boundary", specification=ISO_19107)
+    @Override
+    Geometry getBoundary();
+
     /**
      * Interpolation mechanisms used between the data points of this surface.
      * The default is a polygonal interpolation.
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/csg/ConstructiveSolidGeometry.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/csg/ConstructiveSolidGeometry.java
index 01785d4258..cb8069d9d5 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/csg/ConstructiveSolidGeometry.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/csg/ConstructiveSolidGeometry.java
@@ -19,6 +19,7 @@ package org.apache.sis.geometries.csg;
 import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryType;
 import org.apache.sis.geometries.DataPointsType;
 import org.apache.sis.geometries.internal.shared.AbstractGeometry;
@@ -59,6 +60,11 @@ public final class ConstructiveSolidGeometry extends 
AbstractGeometry {
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public boolean isEmpty() {
         throw new UnsupportedOperationException("Not supported yet.");
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBSplineSolid.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBSplineSolid.java
index a5b4321c41..33dd70764b 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBSplineSolid.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultBSplineSolid.java
@@ -23,6 +23,7 @@ import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.Curve;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryType;
 import org.apache.sis.geometries.DataPointsType;
 import org.apache.sis.geometries.solid.BSplineSolid;
@@ -174,4 +175,9 @@ public non-sealed class DefaultBSplineSolid extends 
AbstractGeometry implements
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
 }
diff --git 
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
index 19c00db5d5..1d3cf43978 100644
--- 
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
@@ -23,6 +23,7 @@ import org.opengis.geometry.DirectPosition;
 import org.opengis.geometry.Envelope;
 import org.apache.sis.geometries.Curve;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.curve.KnotType;
 import org.apache.sis.geometries.surface.BSplineSurface;
 import org.apache.sis.geometries.surface.BSplineSurfaceForm;
@@ -189,6 +190,11 @@ public non-sealed class DefaultBSplineSurface extends 
AbstractGeometry implement
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public Identifier getName() {
         throw new UnsupportedOperationException("Not supported yet.");
diff --git 
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
index 8b9e7f9e88..d94593c97d 100644
--- 
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
@@ -24,6 +24,7 @@ import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.Curve;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryType;
 import org.apache.sis.geometries.DataPointsType;
 import org.apache.sis.geometries.surface.BilinearGrid;
@@ -173,6 +174,11 @@ public non-sealed class DefaultBilinearGrid extends 
AbstractGeometry implements
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public Identifier getName() {
         throw new UnsupportedOperationException("Not supported yet.");
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCurvePolygon.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCurvePolygon.java
index 373219b682..9d7fbc4c52 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCurvePolygon.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCurvePolygon.java
@@ -23,6 +23,7 @@ import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.Curve;
 import org.apache.sis.geometries.Geometries;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.surface.CurvePolygon;
 
 
@@ -82,6 +83,11 @@ public non-sealed class DefaultCurvePolygon extends 
AbstractGeometry implements
         return exterior.getEnvelope();
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public Quantity<?> getArea() {
         throw new UnsupportedOperationException("Not supported yet.");
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultNurbSurface.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultNurbSurface.java
index 2059078106..28f5d14b89 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultNurbSurface.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultNurbSurface.java
@@ -23,6 +23,7 @@ import org.opengis.geometry.DirectPosition;
 import org.apache.sis.geometries.BBox;
 import org.apache.sis.geometries.Curve;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.curve.KnotType;
 import org.apache.sis.geometries.operation.DeBoorAlgorithm;
 import org.apache.sis.geometries.surface.BSplineSurfaceForm;
@@ -314,6 +315,11 @@ public non-sealed class DefaultNurbSurface extends 
AbstractGeometry implements N
         return bbox;
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public int getDegree() {
         return degree;
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPolyhedralSurface.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPolyhedralSurface.java
index 43c69c4a71..dde10dad89 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPolyhedralSurface.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPolyhedralSurface.java
@@ -19,6 +19,7 @@ package org.apache.sis.geometries.internal.shared;
 import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.DataPointsType;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.surface.Polygon;
 import org.apache.sis.geometries.surface.PolyhedralSurface;
 
@@ -95,4 +96,9 @@ public non-sealed class DefaultPolyhedralSurface<T extends 
Polygon> extends Abst
         return envUnion(patches);
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
 }
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPrism.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPrism.java
index 199dfc0030..90aeba25b4 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPrism.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPrism.java
@@ -95,4 +95,9 @@ public non-sealed class DefaultPrism extends AbstractGeometry 
implements Prism {
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
 }
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultReversedSurface.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultReversedSurface.java
index 37532bdfde..5114c5c4a0 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultReversedSurface.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultReversedSurface.java
@@ -21,6 +21,7 @@ import javax.measure.Quantity;
 import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryType;
 import org.apache.sis.geometries.Orientable;
 import org.apache.sis.geometries.Primitive;
@@ -103,6 +104,11 @@ public non-sealed class DefaultReversedSurface extends 
AbstractGeometry implemen
         return base.getEnvelope();
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public DataPoints getDataPoints() {
         return base.getDataPoints();
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitive.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitive.java
index 5c290e46d7..7cbb30e6b7 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitive.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitive.java
@@ -363,6 +363,11 @@ public sealed interface MeshPrimitive extends Geometry
             return NDArrays.computeRange(positions);
         }
 
+        @Override
+        public Geometry getBoundary() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
         public List<Geometry> getComponents() {
             final List<Geometry> elements = new ArrayList<>();
             MeshPrimitiveVisitor visitor = new MeshPrimitiveVisitor(this) {
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MultiMeshPrimitive.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MultiMeshPrimitive.java
index 7b8c651723..774c23d703 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MultiMeshPrimitive.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MultiMeshPrimitive.java
@@ -75,6 +75,11 @@ public final class MultiMeshPrimitive<T extends 
MeshPrimitive> extends AbstractG
         return crs;
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs) {
         for (MeshPrimitive p : primitives) {
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/WTriangle.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/WTriangle.java
index bd5d8ca74f..7d34e79203 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/WTriangle.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/WTriangle.java
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.function.BiFunction;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryFactory;
 import org.apache.sis.geometries.Point;
 import org.apache.sis.geometries.DataPointsType;
@@ -118,6 +119,11 @@ public final class WTriangle extends AbstractGeometry 
implements Triangle {
         return ring;
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     private static class Candidate implements Comparable<Candidate>{
 
         private final Vector tuple;
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedTriangle.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedTriangle.java
index 7682faf715..7bf801d438 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedTriangle.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedTriangle.java
@@ -20,6 +20,7 @@ import java.awt.geom.Point2D;
 import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryFactory;
 import org.apache.sis.geometries.Point;
 import org.apache.sis.geometries.DataPointsType;
@@ -254,6 +255,11 @@ public final class OrientedTriangle extends 
AbstractGeometry implements Triangle
         return DataPoints.super.getEnvelope();
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public DataPointsType getType() {
         return DataPointsType.EMPTY;
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Capsule.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Capsule.java
index 755a477115..3844d76e30 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Capsule.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Capsule.java
@@ -23,6 +23,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.BBox;
 import org.apache.sis.geometries.DataPoints;
 import org.apache.sis.geometries.DataPointsType;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryFactory;
 import org.apache.sis.geometries.GeometryType;
 import org.apache.sis.geometries.internal.shared.AbstractGeometry;
@@ -202,6 +203,11 @@ public final class Capsule extends AbstractGeometry{
         return points.getCoordinateReferenceSystem();
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs) 
throws IllegalArgumentException {
         points.setCoordinateReferenceSystem(crs);
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Cylinder.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Cylinder.java
index ece17f57ec..72532087cc 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Cylinder.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Cylinder.java
@@ -23,6 +23,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.BBox;
 import org.apache.sis.geometries.DataPoints;
 import org.apache.sis.geometries.DataPointsType;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryFactory;
 import org.apache.sis.geometries.GeometryType;
 import org.apache.sis.geometries.internal.shared.AbstractGeometry;
@@ -228,6 +229,11 @@ public final class Cylinder extends AbstractGeometry{
         return points.getCoordinateReferenceSystem();
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs) 
throws IllegalArgumentException {
         points.setCoordinateReferenceSystem(crs);
diff --git 
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
index 71baf5d083..4ca477efb1 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
@@ -28,6 +28,7 @@ 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;
@@ -301,6 +302,11 @@ public final class Ellipsoid extends AbstractGeometry 
implements ParametricCurve
         return env;
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     // methods from ParametricCurveSurface
 
     @Override
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Frustrum.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Frustrum.java
index b497470e36..5bf00ad076 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Frustrum.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Frustrum.java
@@ -19,6 +19,7 @@ package org.apache.sis.geometries.solid;
 import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryType;
 import org.apache.sis.geometries.Plane;
 import org.apache.sis.geometries.DataPointsType;
@@ -74,6 +75,11 @@ public final class Frustrum extends AbstractGeometry {
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     /**
      * Returns the positions of the planes delimiting this frustum,
      * in the order this frustum holds them.
diff --git 
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
index f7ac70b00f..ab2c8b1405 100644
--- 
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
@@ -27,6 +27,7 @@ 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;
@@ -229,6 +230,11 @@ public final class Sphere extends AbstractGeometry 
implements ParametricCurveSur
         return env;
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     // methods from ParametricCurveSurface
 
     @Override
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/polyhedron/AbstractPolyhedron.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/polyhedron/AbstractPolyhedron.java
index a3fa73b8c2..e3477f7bcd 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/polyhedron/AbstractPolyhedron.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/polyhedron/AbstractPolyhedron.java
@@ -20,6 +20,7 @@ import java.util.List;
 import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.DataPoints;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.GeometryFactory;
 import org.apache.sis.geometries.curve.LinearRing;
 import org.apache.sis.geometries.internal.shared.AbstractGeometry;
@@ -97,6 +98,11 @@ public abstract sealed class AbstractPolyhedron extends 
AbstractGeometry impleme
         throw new UnsupportedOperationException("Not supported yet."); // 
Generated from 
nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
     }
 
+    @Override
+    public Geometry getBoundary() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     @Override
     public boolean isEmpty() {
         throw new UnsupportedOperationException("Not supported yet."); // 
Generated from 
nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/surface/PreparedTIN.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/surface/PreparedTIN.java
index d09b2e0097..aee2d1210e 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/surface/PreparedTIN.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/surface/PreparedTIN.java
@@ -31,6 +31,7 @@ import org.opengis.referencing.operation.TransformException;
 import org.opengis.util.FactoryException;
 import org.apache.sis.geometries.DataPoints;
 import org.apache.sis.geometries.Geometries;
+import org.apache.sis.geometries.Geometry;
 import org.apache.sis.geometries.Point;
 import org.apache.sis.geometries.DataPointsType;
 import org.apache.sis.geometry.Envelopes;
@@ -151,6 +152,11 @@ public sealed interface PreparedTIN extends TIN
             return base.getEnvelope();
         }
 
+        @Override
+        public Geometry getBoundary() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
         @Override
         public boolean isEmpty() {
             return base.isEmpty();
@@ -255,6 +261,11 @@ public sealed interface PreparedTIN extends TIN
             return all;
         }
 
+        @Override
+        public Geometry getBoundary() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
         @Override
         public boolean isEmpty() {
             return empty;

Reply via email to