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();
+ }
}