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 db3ac3f29b feat(Geometry): replace List<DirectPosition> by Array for 
data points and control points properties
db3ac3f29b is described below

commit db3ac3f29b54451a94c7e71883afa71ea675ffcc
Author: jsorel <[email protected]>
AuthorDate: Fri Sep 4 15:32:22 2026 +0200

    feat(Geometry): replace List<DirectPosition> by Array for data points and 
control points properties
---
 .../main/org/apache/sis/geometries/Curve.java            | 11 +++--------
 .../main/org/apache/sis/geometries/LineString.java       | 16 ++++++++++++++--
 .../main/org/apache/sis/geometries/conics/Arc.java       |  8 +++-----
 .../org/apache/sis/geometries/conics/CircularString.java | 14 ++++++++++++++
 .../main/org/apache/sis/geometries/conics/Conic.java     |  7 +++----
 .../main/org/apache/sis/geometries/curve/ArcByBulge.java | 14 ++++++++++++++
 .../apache/sis/geometries/curve/ArcByCenterPoint.java    | 14 ++++++++++++++
 .../geometries/internal/shared/DefaultCompoundCurve.java | 11 +++++++++++
 .../geometries/internal/shared/DefaultReversedCurve.java | 11 +++++++++++
 9 files changed, 87 insertions(+), 19 deletions(-)

diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Curve.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Curve.java
index 663c59e6bc..44c4a81597 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Curve.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Curve.java
@@ -18,6 +18,7 @@ package org.apache.sis.geometries;
 
 import java.util.List;
 import javax.measure.quantity.Length;
+import org.apache.sis.geometries.math.Array;
 import static org.opengis.annotation.Specification.ISO_19107;
 import org.opengis.annotation.UML;
 import org.opengis.geometry.DirectPosition;
@@ -90,16 +91,10 @@ public interface Curve extends Orientable {
     }
 
     @UML(identifier="controlPoint", specification=ISO_19107) // section 
6.4.18.2
-    default List<DirectPosition> getControlPoints() {
-        //TODO
-        throw new UnsupportedOperationException();
-    }
+    Array getControlPoints();
 
     @UML(identifier="dataPoint", specification=ISO_19107) // section 6.4.18.3
-    default List<DirectPosition> getDataPoints() {
-        //TODO
-        throw new UnsupportedOperationException();
-    }
+    Array getDataPoints();
 
     @UML(identifier="knot", specification=ISO_19107) // section 6.4.18.4
     default List<Knot> getKnots() {
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/LineString.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/LineString.java
index 6fc38ae3ca..86e94436ec 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/LineString.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/LineString.java
@@ -22,8 +22,7 @@ import org.opengis.annotation.UML;
 import org.opengis.geometry.Envelope;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.internal.shared.AbstractGeometry;
-import org.apache.sis.geometries.math.Tuple;
-import org.apache.sis.geometry.GeneralEnvelope;
+import org.apache.sis.geometries.math.Array;
 
 
 /**
@@ -77,6 +76,19 @@ public interface LineString extends Curve {
         return getPoints().getPoint(n);
     }
 
+    @Override
+    public default Array getDataPoints() {
+        return getPoints().getAttributeArray(AttributesType.ATT_POSITION);
+    }
+
+    /**
+     * @return null, a LineString has no control points
+     */
+    @Override
+    public default Array getControlPoints() {
+        return null;
+    }
+
     @Override
     default CoordinateReferenceSystem getCoordinateReferenceSystem() {
         return getPoints().getCoordinateReferenceSystem();
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/Arc.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/Arc.java
index f6c2c6d51a..ee58b4ef83 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/Arc.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/Arc.java
@@ -17,9 +17,9 @@
 package org.apache.sis.geometries.conics;
 
 import java.util.List;
+import org.apache.sis.geometries.math.Array;
 import static org.opengis.annotation.Specification.ISO_19107;
 import org.opengis.annotation.UML;
-import org.opengis.geometry.DirectPosition;
 import org.apache.sis.geometries.math.Vector;
 
 
@@ -35,15 +35,13 @@ public interface Arc extends Conic {
 
     @UML(identifier="controlPoints", specification=ISO_19107) // section 
7.9.2.3
     @Override
-    List<DirectPosition> getControlPoints();
+    Array getControlPoints();
 
     @UML(identifier="dataPoints", specification=ISO_19107) // section 7.9.2.4
     @Override
-    List<DirectPosition> getDataPoints();
+    Array getDataPoints();
 
     @UML(identifier="radius", specification=ISO_19107) // section 7.9.2.5
     List<Vector> getRadius();
 
-
-
 }
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/CircularString.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/CircularString.java
index 5f79396621..5ddb10e59f 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/CircularString.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/CircularString.java
@@ -22,6 +22,7 @@ import org.apache.sis.geometries.Curve;
 import org.apache.sis.geometries.CurveInterpolation;
 import org.apache.sis.geometries.Point;
 import org.apache.sis.geometries.PointSequence;
+import org.apache.sis.geometries.math.Array;
 
 
 /**
@@ -67,6 +68,19 @@ public interface CircularString extends Curve {
         return CurveInterpolation.CIRCULAR;
     }
 
+    @Override
+    public default Array getDataPoints() {
+        return getPoints().getAttributeArray(AttributesType.ATT_POSITION);
+    }
+
+    /**
+     * @return null, a CircularString has no control points
+     */
+    @Override
+    public default Array getControlPoints() {
+        return null;
+    }
+
     @Override
     default CoordinateReferenceSystem getCoordinateReferenceSystem() {
         return getPoints().getCoordinateReferenceSystem();
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/Conic.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/Conic.java
index e51f9f7081..db0a43b8a2 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/Conic.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/conics/Conic.java
@@ -16,11 +16,10 @@
  */
 package org.apache.sis.geometries.conics;
 
-import java.util.List;
 import static org.opengis.annotation.Specification.ISO_19107;
 import org.opengis.annotation.UML;
-import org.opengis.geometry.DirectPosition;
 import org.apache.sis.geometries.Curve;
+import org.apache.sis.geometries.math.Array;
 
 
 /**
@@ -32,11 +31,11 @@ public interface Conic extends Curve {
 
     @UML(identifier="controlPoints", specification=ISO_19107) // section 
7.9.5.2
     @Override
-    List<DirectPosition> getControlPoints();
+    Array getControlPoints();
 
     @UML(identifier="dataPoints", specification=ISO_19107) // section 7.9.5.2
     @Override
-    List<DirectPosition> getDataPoints();
+    Array getDataPoints();
 
     @UML(identifier="isCycle", specification=ISO_19107) // section 7.9.5.2
     boolean isCycle();
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/curve/ArcByBulge.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/curve/ArcByBulge.java
index ce907576ff..4d7d7deed5 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/curve/ArcByBulge.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/curve/ArcByBulge.java
@@ -22,6 +22,7 @@ import org.apache.sis.geometries.Curve;
 import org.apache.sis.geometries.CurveInterpolation;
 import org.apache.sis.geometries.Point;
 import org.apache.sis.geometries.PointSequence;
+import org.apache.sis.geometries.math.Array;
 import org.apache.sis.geometries.math.Vector;
 
 
@@ -72,6 +73,19 @@ public interface ArcByBulge extends Curve {
      */
     Vector<?> getNormal();
 
+    @Override
+    public default Array getDataPoints() {
+        return getPoints().getAttributeArray(AttributesType.ATT_POSITION);
+    }
+
+    /**
+     * @return null, a ArcByBulge has no control points
+     */
+    @Override
+    public default Array getControlPoints() {
+        return null;
+    }
+
     /**
      * Returns {@link CurveInterpolation#CIRCULAR}.
      */
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/curve/ArcByCenterPoint.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/curve/ArcByCenterPoint.java
index f05e413aed..9a6a3fcefa 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/curve/ArcByCenterPoint.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/curve/ArcByCenterPoint.java
@@ -22,6 +22,7 @@ import org.apache.sis.geometries.AttributesType;
 import org.apache.sis.geometries.Curve;
 import org.apache.sis.geometries.CurveInterpolation;
 import org.apache.sis.geometries.Point;
+import org.apache.sis.geometries.math.Array;
 
 
 /**
@@ -101,6 +102,19 @@ public interface ArcByCenterPoint extends Curve {
         return CurveInterpolation.CIRCULAR;
     }
 
+    @Override
+    public default Array getDataPoints() {
+        throw new UnsupportedOperationException("Not supported yet");
+    }
+
+    /**
+     * @return null, a ArcByCenterPoint has no control points
+     */
+    @Override
+    public default Array getControlPoints() {
+        return null;
+    }
+
     @Override
     default CoordinateReferenceSystem getCoordinateReferenceSystem() {
         return getCenter().getCoordinateReferenceSystem();
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCompoundCurve.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCompoundCurve.java
index 91509203e0..e615591261 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCompoundCurve.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCompoundCurve.java
@@ -21,6 +21,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometries.AttributesType;
 import org.apache.sis.geometries.CompoundCurve;
 import org.apache.sis.geometries.Curve;
+import org.apache.sis.geometries.math.Array;
 
 
 /**
@@ -103,4 +104,14 @@ public class DefaultCompoundCurve extends AbstractGeometry 
implements CompoundCu
         }
         return sb.append(')').toString();
     }
+
+    @Override
+    public Array getControlPoints() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public Array getDataPoints() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
 }
diff --git 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultReversedCurve.java
 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultReversedCurve.java
index fd1541ebb2..326a3bdbbb 100644
--- 
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultReversedCurve.java
+++ 
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultReversedCurve.java
@@ -25,6 +25,7 @@ import org.apache.sis.geometries.CurveInterpolation;
 import org.apache.sis.geometries.Orientable;
 import org.apache.sis.geometries.Point;
 import org.apache.sis.geometries.Primitive;
+import org.apache.sis.geometries.math.Array;
 
 
 /**
@@ -129,4 +130,14 @@ public class DefaultReversedCurve extends AbstractGeometry 
implements Curve {
     public String asText() {
         return base.asText();
     }
+
+    @Override
+    public Array getControlPoints() {
+        return base.getControlPoints();
+    }
+
+    @Override
+    public Array getDataPoints() {
+        return base.getDataPoints();
+    }
 }

Reply via email to