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;