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
commit 8d053b8eb6708b66a610b696607585416069d824 Author: jsorel <[email protected]> AuthorDate: Fri Sep 4 16:32:38 2026 +0200 feat(Geometry): fuze SIS getPoints() and ISO getDataPoints() as getDataPoints() --- .../main/org/apache/sis/geometries/Curve.java | 26 ++++++++++++++--- .../org/apache/sis/geometries/CurvePolygon.java | 4 +-- .../org/apache/sis/geometries/GeometryVisitor.java | 4 +-- .../main/org/apache/sis/geometries/LineString.java | 25 ++++++---------- .../main/org/apache/sis/geometries/LinearRing.java | 2 +- .../org/apache/sis/geometries/MultiLineString.java | 2 +- .../main/org/apache/sis/geometries/MultiPoint.java | 2 +- .../org/apache/sis/geometries/MultiPolygon.java | 4 +-- .../main/org/apache/sis/geometries/Point.java | 1 - .../main/org/apache/sis/geometries/Polygon.java | 4 +-- .../org/apache/sis/geometries/PreparedTIN.java | 2 +- .../main/org/apache/sis/geometries/TIN.java | 2 +- .../main/org/apache/sis/geometries/Triangle.java | 12 ++++---- .../main/org/apache/sis/geometries/Wrapper.java | 6 ++-- .../apache/sis/geometries/adapter/JTSAdapter.java | 6 ++-- .../geometries/adapter/PathIteratorAdapter.java | 4 +-- .../main/org/apache/sis/geometries/conics/Arc.java | 3 +- .../sis/geometries/conics/CircularString.java | 34 ++++++++++------------ .../org/apache/sis/geometries/conics/Conic.java | 9 +++--- .../apache/sis/geometries/curve/ArcByBulge.java | 26 ++++------------- .../sis/geometries/curve/ArcByCenterPoint.java | 3 +- .../internal/shared/DefaultArcByBulge.java | 2 +- .../internal/shared/DefaultCircularString.java | 2 +- .../internal/shared/DefaultCompoundCurve.java | 3 +- .../internal/shared/DefaultLineString.java | 2 +- .../internal/shared/DefaultMultiPoint.java | 2 +- .../internal/shared/DefaultReversedCurve.java | 3 +- .../internal/shared/DefaultTriangle.java | 2 +- .../apache/sis/geometries/mesh/MeshPrimitive.java | 8 ++--- .../geometries/mesh/MeshPrimitiveComparator.java | 24 +++++++-------- .../sis/geometries/mesh/MeshPrimitiveVisitor.java | 4 +-- .../apache/sis/geometries/operation/Contains.java | 4 +-- .../sis/geometries/operation/Intersection.java | 4 +-- .../org/apache/sis/geometries/operation/To3D.java | 2 +- .../sis/geometries/operation/ToPrimitive.java | 6 ++-- .../apache/sis/geometries/operation/Transform.java | 4 +-- .../simplify/greedyinsert/TinDistance.java | 2 +- .../operation/spatialanalysis2d/ISOBand.java | 2 +- .../operation/spatialanalysis2d/ISOLine.java | 2 +- .../operation/triangulate/EarClipping.java | 4 +-- .../triangulate/delaunay/OrientedEdge.java | 2 +- .../main/org/apache/sis/gml/GML2Writer.java | 4 +-- .../main/org/apache/sis/gml/GML3Writer.java | 8 ++--- .../sis/geometries/adapter/ShapeConverterTest.java | 2 +- .../sis/geometries/operation/ToPrimitiveTest.java | 4 +-- .../test/org/apache/sis/gml/GML3ReaderTest.java | 16 +++++----- .../test/org/apache/sis/gml/GeometryAssert.java | 2 +- .../sis/referencing/dggs/AbstractDggrsTest.java | 2 +- 48 files changed, 150 insertions(+), 153 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 44c4a81597..0574932512 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 @@ -35,6 +35,22 @@ import org.apache.sis.geometries.math.Vector; @UML(identifier="Curve", specification=ISO_19107) // section 6.4.18 public interface Curve extends Orientable { + /** + * Contains a list of points on the curve. + * The first point is the curve starting point. + * The last point is the curve last point. + * + * <p> + * Difference with ISO-19107 : The type has been changed from + * a list of direct positions to a PointSequence. + * This change allows to accomodate addition attributes like in GLTF or GPU models. + * </p> + * + * @return curve data points. + */ + @UML(identifier="dataPoint", specification=ISO_19107) // section 6.4.18.3 + PointSequence getDataPoints(); + /** * The length of this Curve in its associated spatial reference. * @@ -54,7 +70,9 @@ public interface Curve extends Orientable { */ @UML(identifier="startPoint", specification=ISO_19107) // section 6.4.18.6 default Point getStartPoint() { - throw new UnsupportedOperationException(); + final PointSequence points = getDataPoints(); + if (points.isEmpty()) return null; + return points.getPoint(0); } /** @@ -65,7 +83,9 @@ public interface Curve extends Orientable { */ @UML(identifier="endPoint", specification=ISO_19107) // section 6.4.18.7 default Point getEndPoint() { - throw new UnsupportedOperationException(); + final PointSequence points = getDataPoints(); + if (points.isEmpty()) return null; + return points.getPoint(points.size()-1); } /** @@ -93,8 +113,6 @@ public interface Curve extends Orientable { @UML(identifier="controlPoint", specification=ISO_19107) // section 6.4.18.2 Array getControlPoints(); - @UML(identifier="dataPoint", specification=ISO_19107) // section 6.4.18.3 - 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/CurvePolygon.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/CurvePolygon.java index 41c79e8d23..b71d06da2a 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/CurvePolygon.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/CurvePolygon.java @@ -94,12 +94,12 @@ public interface CurvePolygon extends Surface { @Override default String asText() { final StringBuilder sb = new StringBuilder("POLYGON (("); - AbstractGeometry.toText(sb, getExteriorRing().asLine(null, null).getPoints()); + AbstractGeometry.toText(sb, getExteriorRing().asLine(null, null).getDataPoints()); sb.append(')'); for (int i = 0, n = getNumInteriorRing(); i < n; i++) { if (i != 0) sb.append(','); sb.append('('); - AbstractGeometry.toText(sb, getInteriorRingN(i).asLine(null, null).getPoints()); + AbstractGeometry.toText(sb, getInteriorRingN(i).asLine(null, null).getDataPoints()); sb.append(')'); } sb.append(')'); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/GeometryVisitor.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/GeometryVisitor.java index 6ea87869e8..4e2bccf616 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/GeometryVisitor.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/GeometryVisitor.java @@ -56,7 +56,7 @@ public class GeometryVisitor { } public void visit(LineString geometry) { - visit(geometry.getPoints()); + visit(geometry.getDataPoints()); } public void visit(Polygon geometry) { @@ -69,7 +69,7 @@ public class GeometryVisitor { } public void visit(LinearRing geometry) { - visit(geometry.getPoints()); + visit(geometry.getDataPoints()); } public void visit(TIN geometry) { 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 86e94436ec..ef1abdadd5 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 @@ -29,7 +29,7 @@ import org.apache.sis.geometries.math.Array; * A LineString is a Curve with linear interpolation between Points. * Each consecutive pair of Points defines a Line segment. * - * A Line is a LineString with exactly 2 Points. + * Note : ISO-19107 name this class a Line, even if it has more then 2 points. * * @author Johann Sorel (Geomatys) */ @@ -49,8 +49,6 @@ public interface LineString extends Curve { return CurveInterpolation.LINEAR; } - PointSequence getPoints(); - @Override public default LineString asLine(Length spacing, Length offset) { return this; @@ -63,7 +61,7 @@ public interface LineString extends Curve { * @return number of Points in this LineString. */ default int getNumPoints() { - return getPoints().size(); + return getDataPoints().size(); } /** @@ -73,12 +71,7 @@ public interface LineString extends Curve { * @return the specified Point N in this LineString. */ default Point getPointN(int n) { - return getPoints().getPoint(n); - } - - @Override - public default Array getDataPoints() { - return getPoints().getAttributeArray(AttributesType.ATT_POSITION); + return getDataPoints().getPoint(n); } /** @@ -91,17 +84,17 @@ public interface LineString extends Curve { @Override default CoordinateReferenceSystem getCoordinateReferenceSystem() { - return getPoints().getCoordinateReferenceSystem(); + return getDataPoints().getCoordinateReferenceSystem(); } @Override default void setCoordinateReferenceSystem(CoordinateReferenceSystem cs) throws IllegalArgumentException { - getPoints().setCoordinateReferenceSystem(cs); + getDataPoints().setCoordinateReferenceSystem(cs); } @Override public default AttributesType getAttributesType() { - return getPoints().getAttributesType(); + return getDataPoints().getAttributesType(); } /** @@ -110,12 +103,12 @@ public interface LineString extends Curve { * @return true if lineString is a line. */ default boolean isLine() { - return getPoints().size() == 2; + return getDataPoints().size() == 2; } @Override default Envelope getEnvelope() { - PointSequence points = getPoints(); + PointSequence points = getDataPoints(); if (points.isEmpty()) { return null; } @@ -125,7 +118,7 @@ public interface LineString extends Curve { @Override default String asText() { final StringBuilder sb = new StringBuilder("LINESTRING ("); - final PointSequence points = getPoints(); + final PointSequence points = getDataPoints(); AbstractGeometry.toText(sb, points); sb.append(')'); return sb.toString(); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/LinearRing.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/LinearRing.java index 10e83870b9..3e281f2087 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/LinearRing.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/LinearRing.java @@ -37,7 +37,7 @@ public interface LinearRing extends LineString { @Override default String asText() { final StringBuilder sb = new StringBuilder("LINEARRING ("); - final PointSequence points = getPoints(); + final PointSequence points = getDataPoints(); for (int i = 0, n = points.size() ; i < n; i++) { final Tuple pt = points.getPosition(i); if (i > 0) sb.append(','); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiLineString.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiLineString.java index 5785a74814..474f9878bb 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiLineString.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiLineString.java @@ -41,7 +41,7 @@ public interface MultiLineString extends MultiCurve<LineString> { if (k > 0) sb.append(','); sb.append('('); final LineString line = getGeometryN(k); - final PointSequence points = line.getPoints(); + final PointSequence points = line.getDataPoints(); for (int i = 0, n = points.size() ; i < n; i++) { final Tuple pos = points.getPosition(i); if (i > 0) sb.append(','); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiPoint.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiPoint.java index d6c032f4a3..9e226fb898 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiPoint.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiPoint.java @@ -43,7 +43,7 @@ public interface MultiPoint<T extends Point> extends GeometryCollection<T>{ /** * View this multipoint as a point sequence */ - default PointSequence asPointSequence() { + default PointSequence asDataPoints() { return new PointSequence() { @Override public CoordinateReferenceSystem getCoordinateReferenceSystem() { diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiPolygon.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiPolygon.java index 981644e8e6..e993092a43 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiPolygon.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/MultiPolygon.java @@ -50,12 +50,12 @@ public interface MultiPolygon extends MultiSurface<Polygon> { if (k > 0) sb.append(','); final Polygon polygon = getGeometryN(k); sb.append("(("); - AbstractGeometry.toText(sb, polygon.getExteriorRing().asLine(null, null).getPoints()); + AbstractGeometry.toText(sb, polygon.getExteriorRing().asLine(null, null).getDataPoints()); sb.append(')'); for (int i = 0, n = polygon.getNumInteriorRing(); i < n; i++) { if (i != 0) sb.append(','); sb.append('('); - AbstractGeometry.toText(sb, polygon.getInteriorRingN(i).getPoints()); + AbstractGeometry.toText(sb, polygon.getInteriorRingN(i).getDataPoints()); sb.append(')'); } sb.append(')'); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Point.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Point.java index 86c47a91f2..d177155b2e 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Point.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Point.java @@ -24,7 +24,6 @@ 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.geometries.math.Vector; -import org.apache.sis.geometry.GeneralEnvelope; /** diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Polygon.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Polygon.java index e3df35b3bc..530221cf5f 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Polygon.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Polygon.java @@ -101,12 +101,12 @@ public interface Polygon extends Surface { @Override default String asText() { final StringBuilder sb = new StringBuilder("POLYGON (("); - AbstractGeometry.toText(sb, getExteriorRing().asLine(null, null).getPoints()); + AbstractGeometry.toText(sb, getExteriorRing().asLine(null, null).getDataPoints()); sb.append(')'); for (int i = 0, n = getNumInteriorRing(); i < n; i++) { if (i != 0) sb.append(','); sb.append('('); - AbstractGeometry.toText(sb, getInteriorRingN(i).getPoints()); + AbstractGeometry.toText(sb, getInteriorRingN(i).getDataPoints()); sb.append(')'); } sb.append(')'); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/PreparedTIN.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/PreparedTIN.java index f213314df9..d1b1c7f33b 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/PreparedTIN.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/PreparedTIN.java @@ -341,7 +341,7 @@ public interface PreparedTIN extends TIN { final Iterator<Triangle> iterator = triangles.iterator(); while (iterator.hasNext()) { final Triangle triangle = iterator.next(); - final PointSequence points = triangle.getExteriorRing().getPoints(); + final PointSequence points = triangle.getExteriorRing().getDataPoints(); final Tuple a = points.getPosition(0); final Tuple b = points.getPosition(1); final Tuple c = points.getPosition(2); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/TIN.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/TIN.java index 0a550589aa..c70e581062 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/TIN.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/TIN.java @@ -51,7 +51,7 @@ public interface TIN extends TriangulatedSurface<Triangle> { sb.append(','); } sb.append("(("); - final PointSequence points = triangle.getExteriorRing().getPoints(); + final PointSequence points = triangle.getExteriorRing().getDataPoints(); corner = points.getPosition(0); AbstractGeometry.toText(sb, corner); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Triangle.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Triangle.java index 3647c9cf80..4134b0891d 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Triangle.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Triangle.java @@ -72,7 +72,7 @@ public interface Triangle extends Polygon { @Override default Envelope getEnvelope() { - final PointSequence exterior = getExteriorRing().getPoints(); + final PointSequence exterior = getExteriorRing().getDataPoints(); final Tuple<?> first = exterior.getPosition(0); final BBox env = new BBox(first, first); env.add(exterior.getPosition(1)); @@ -83,7 +83,7 @@ public interface Triangle extends Polygon { @Override default double getArea() { - final PointSequence points = getExteriorRing().getPoints(); + final PointSequence points = getExteriorRing().getDataPoints(); final Tuple<?> a = points.getPosition(0); final Tuple<?> b = points.getPosition(1); final Tuple<?> c = points.getPosition(2); @@ -101,7 +101,7 @@ public interface Triangle extends Polygon { * @return point distance to triangle */ default double distance(Tuple pt) { - final PointSequence exterior = getExteriorRing().getPoints(); + final PointSequence exterior = getExteriorRing().getDataPoints(); final Tuple<?> p0 = exterior.getPosition(0); final Tuple<?> p1 = exterior.getPosition(1); final Tuple<?> p2 = exterior.getPosition(2); @@ -214,7 +214,7 @@ public interface Triangle extends Polygon { @Override default String asText() { - final PointSequence exterior = getExteriorRing().getPoints(); + final PointSequence exterior = getExteriorRing().getDataPoints(); final StringBuilder sb = new StringBuilder("TRIANGLE (("); AbstractGeometry.toText(sb, exterior.getPosition(0)); sb.append(','); @@ -265,7 +265,7 @@ public interface Triangle extends Polygon { @Override public Tuple getPosition() { - final PointSequence points = triangle.getExteriorRing().getPoints(); + final PointSequence points = triangle.getExteriorRing().getDataPoints(); switch (cornerIdx) { case -1 : return interpolate( @@ -286,7 +286,7 @@ public interface Triangle extends Polygon { */ @Override public Tuple getAttribute(String name) { - final PointSequence points = triangle.getExteriorRing().getPoints(); + final PointSequence points = triangle.getExteriorRing().getDataPoints(); switch (cornerIdx) { case -1 : return interpolate( diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Wrapper.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Wrapper.java index 73bde45a69..3b73d4f1d4 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Wrapper.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Wrapper.java @@ -337,9 +337,9 @@ public final class Wrapper extends GeometryWrapper { if (geometry instanceof Point cdt){ jts = gf.createPoint(new JTSSequence(cdt.asPointSequence())); } else if (geometry instanceof LinearRing cdt) { - jts = gf.createLinearRing(new JTSSequence(cdt.getPoints())); + jts = gf.createLinearRing(new JTSSequence(cdt.getDataPoints())); } else if (geometry instanceof LineString cdt) { - jts = gf.createLineString(new JTSSequence(cdt.getPoints())); + jts = gf.createLineString(new JTSSequence(cdt.getDataPoints())); } else if (geometry instanceof Polygon cdt) { final org.locationtech.jts.geom.LinearRing exterior = (org.locationtech.jts.geom.LinearRing) asJTS(cdt.getExteriorRing(), gf); final org.locationtech.jts.geom.LinearRing[] inners = new org.locationtech.jts.geom.LinearRing[cdt.getNumInteriorRing()]; @@ -348,7 +348,7 @@ public final class Wrapper extends GeometryWrapper { } jts = gf.createPolygon(exterior, inners); } else if (geometry instanceof MultiPoint<?> cdt) { - jts = gf.createMultiPoint(new JTSSequence(cdt.asPointSequence())); + jts = gf.createMultiPoint(new JTSSequence(cdt.asDataPoints())); } else if (geometry instanceof MultiLineString cdt) { final org.locationtech.jts.geom.LineString[] children = new org.locationtech.jts.geom.LineString[cdt.getNumGeometries()]; for (int i = 0; i < children.length; i++) { diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/JTSAdapter.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/JTSAdapter.java index bed13ebfc0..eaf95556e9 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/JTSAdapter.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/JTSAdapter.java @@ -122,13 +122,13 @@ public final class JTSAdapter { final CoordinateSequence cs = toCoordinateSequence(cdt.asPointSequence(), copy, gf); jts = new org.locationtech.jts.geom.Point(cs, gf); } else if (geom instanceof MultiPoint cdt) { - final CoordinateSequence cs = toCoordinateSequence(cdt.asPointSequence(), copy, gf); + final CoordinateSequence cs = toCoordinateSequence(cdt.asDataPoints(), copy, gf); jts = gf.createMultiPoint(cs); } else if (geom instanceof LinearRing cdt) { - final CoordinateSequence cs = toCoordinateSequence(cdt.getPoints(), copy, gf); + final CoordinateSequence cs = toCoordinateSequence(cdt.getDataPoints(), copy, gf); jts = new org.locationtech.jts.geom.LinearRing(cs, gf); } else if (geom instanceof LineString cdt) { - final CoordinateSequence cs = toCoordinateSequence(cdt.getPoints(), copy, gf); + final CoordinateSequence cs = toCoordinateSequence(cdt.getDataPoints(), copy, gf); jts = new org.locationtech.jts.geom.LineString(cs, gf); } else if (geom instanceof MultiLineString cdt) { final org.locationtech.jts.geom.LineString[] children = new org.locationtech.jts.geom.LineString[cdt.getNumGeometries()]; diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/PathIteratorAdapter.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/PathIteratorAdapter.java index 4291943544..93fb55d4c7 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/PathIteratorAdapter.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/PathIteratorAdapter.java @@ -178,7 +178,7 @@ final class PathIteratorAdapter implements PathIterator { private static Iterator<PointSequence> iterator(final Geometry geometry) { final Collection<PointSequence> sequences; if (geometry instanceof LineString) { - sequences = List.of(((LineString) geometry).getPoints()); + sequences = List.of(((LineString) geometry).getDataPoints()); } else if (geometry instanceof Point) { sequences = List.of(((Point) geometry).asPointSequence()); } else if (geometry instanceof Polygon) { @@ -223,7 +223,7 @@ final class PathIteratorAdapter implements PathIterator { current = polygon.getInteriorRingN(interior); } interior++; - return current.getPoints(); + return current.getDataPoints(); } } 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 ee58b4ef83..95b18f3891 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,6 +17,7 @@ package org.apache.sis.geometries.conics; import java.util.List; +import org.apache.sis.geometries.PointSequence; import org.apache.sis.geometries.math.Array; import static org.opengis.annotation.Specification.ISO_19107; import org.opengis.annotation.UML; @@ -39,7 +40,7 @@ public interface Arc extends Conic { @UML(identifier="dataPoints", specification=ISO_19107) // section 7.9.2.4 @Override - Array getDataPoints(); + PointSequence 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 5ddb10e59f..d3d1530ed1 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 @@ -44,19 +44,11 @@ public interface CircularString extends Curve { return TYPE; } - /** - * Returns the control points of this circular string: for each arc, its start point, a point - * on the arc and its end point, with consecutive arcs sharing a point. - * - * @return the control points, never null. Its size is odd and at least 3, or 0 if empty. - */ - PointSequence getPoints(); - /** * Returns the number of arcs this circular string is made of. */ default int getNumArcs() { - final int size = getPoints().size(); + final int size = getDataPoints().size(); return (size == 0) ? 0 : (size - 1) / 2; } @@ -68,10 +60,14 @@ public interface CircularString extends Curve { return CurveInterpolation.CIRCULAR; } + /** + * Returns the control points of this circular string: for each arc, its start point, a point + * on the arc and its end point, with consecutive arcs sharing a point. + * + * @return the control points, never null. Its size is odd and at least 3, or 0 if empty. + */ @Override - public default Array getDataPoints() { - return getPoints().getAttributeArray(AttributesType.ATT_POSITION); - } + PointSequence getDataPoints(); /** * @return null, a CircularString has no control points @@ -83,37 +79,37 @@ public interface CircularString extends Curve { @Override default CoordinateReferenceSystem getCoordinateReferenceSystem() { - return getPoints().getCoordinateReferenceSystem(); + return getDataPoints().getCoordinateReferenceSystem(); } @Override default void setCoordinateReferenceSystem(CoordinateReferenceSystem cs) throws IllegalArgumentException { - getPoints().setCoordinateReferenceSystem(cs); + getDataPoints().setCoordinateReferenceSystem(cs); } @Override default AttributesType getAttributesType() { - return getPoints().getAttributesType(); + return getDataPoints().getAttributesType(); } @Override default boolean isEmpty() { - return getPoints().isEmpty(); + return getDataPoints().isEmpty(); } @Override default Point getStartPoint() { - return getPoints().getPoint(0); + return getDataPoints().getPoint(0); } @Override default Point getEndPoint() { - return getPoints().getPoint(getPoints().size() - 1); + return getDataPoints().getPoint(getDataPoints().size() - 1); } @Override default boolean isClosed() { - final PointSequence points = getPoints(); + final PointSequence points = getDataPoints(); final int size = points.size(); if (size == 0) { return false; 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 db0a43b8a2..f7275e7923 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 @@ -19,6 +19,7 @@ package org.apache.sis.geometries.conics; import static org.opengis.annotation.Specification.ISO_19107; import org.opengis.annotation.UML; import org.apache.sis.geometries.Curve; +import org.apache.sis.geometries.PointSequence; import org.apache.sis.geometries.math.Array; @@ -29,14 +30,14 @@ import org.apache.sis.geometries.math.Array; @UML(identifier="Conic", specification=ISO_19107) // section 7.9.5 public interface Conic extends Curve { + @UML(identifier="dataPoints", specification=ISO_19107) // section 7.9.5.2 + @Override + PointSequence getDataPoints(); + @UML(identifier="controlPoints", specification=ISO_19107) // section 7.9.5.2 @Override Array getControlPoints(); - @UML(identifier="dataPoints", specification=ISO_19107) // section 7.9.5.2 - @Override - 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 4d7d7deed5..80d08a36a2 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 @@ -54,7 +54,8 @@ public interface ArcByBulge extends Curve { * * @return the start and end points, never null and always of size 2. */ - PointSequence getPoints(); + @Override + PointSequence getDataPoints(); /** * Returns the distance from the midpoint of the chord joining the two end points to the arc, @@ -73,11 +74,6 @@ 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 */ @@ -96,32 +92,22 @@ public interface ArcByBulge extends Curve { @Override default CoordinateReferenceSystem getCoordinateReferenceSystem() { - return getPoints().getCoordinateReferenceSystem(); + return getDataPoints().getCoordinateReferenceSystem(); } @Override default void setCoordinateReferenceSystem(CoordinateReferenceSystem cs) throws IllegalArgumentException { - getPoints().setCoordinateReferenceSystem(cs); + getDataPoints().setCoordinateReferenceSystem(cs); } @Override default AttributesType getAttributesType() { - return getPoints().getAttributesType(); + return getDataPoints().getAttributesType(); } @Override default boolean isEmpty() { - return getPoints().isEmpty(); - } - - @Override - default Point getStartPoint() { - return getPoints().getPoint(0); - } - - @Override - default Point getEndPoint() { - return getPoints().getPoint(getPoints().size() - 1); + return getDataPoints().isEmpty(); } /** 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 9a6a3fcefa..ed9bcfaa9a 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.PointSequence; import org.apache.sis.geometries.math.Array; @@ -103,7 +104,7 @@ public interface ArcByCenterPoint extends Curve { } @Override - public default Array getDataPoints() { + public default PointSequence getDataPoints() { throw new UnsupportedOperationException("Not supported yet"); } diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultArcByBulge.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultArcByBulge.java index b60451267d..54f09dc058 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultArcByBulge.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultArcByBulge.java @@ -59,7 +59,7 @@ public class DefaultArcByBulge extends AbstractGeometry implements ArcByBulge { } @Override - public PointSequence getPoints() { + public PointSequence getDataPoints() { return points; } diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCircularString.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCircularString.java index a96a1f265f..04fd89e57f 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCircularString.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultCircularString.java @@ -46,7 +46,7 @@ public class DefaultCircularString extends AbstractGeometry implements CircularS } @Override - public PointSequence getPoints() { + public PointSequence getDataPoints() { return points; } 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 e615591261..02fd790bc0 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.PointSequence; import org.apache.sis.geometries.math.Array; @@ -111,7 +112,7 @@ public class DefaultCompoundCurve extends AbstractGeometry implements CompoundCu } @Override - public Array getDataPoints() { + public PointSequence getDataPoints() { throw new UnsupportedOperationException("Not supported yet."); } } diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultLineString.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultLineString.java index 84b6e2f464..4edcf32b76 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultLineString.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultLineString.java @@ -38,7 +38,7 @@ public class DefaultLineString extends AbstractGeometry implements LineString { } @Override - public PointSequence getPoints() { + public PointSequence getDataPoints() { return points; } diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultMultiPoint.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultMultiPoint.java index a9ef70c2b5..ec3ab6f861 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultMultiPoint.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultMultiPoint.java @@ -67,7 +67,7 @@ public class DefaultMultiPoint extends AbstractGeometry implements MultiPoint<Po } @Override - public PointSequence asPointSequence() { + public PointSequence asDataPoints() { return points; } 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 326a3bdbbb..8691a0bcb2 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 @@ -24,6 +24,7 @@ import org.apache.sis.geometries.Curve; import org.apache.sis.geometries.CurveInterpolation; import org.apache.sis.geometries.Orientable; import org.apache.sis.geometries.Point; +import org.apache.sis.geometries.PointSequence; import org.apache.sis.geometries.Primitive; import org.apache.sis.geometries.math.Array; @@ -137,7 +138,7 @@ public class DefaultReversedCurve extends AbstractGeometry implements Curve { } @Override - public Array getDataPoints() { + public PointSequence getDataPoints() { return base.getDataPoints(); } } diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultTriangle.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultTriangle.java index 4fd2e4e449..ecd8900166 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultTriangle.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultTriangle.java @@ -34,7 +34,7 @@ public class DefaultTriangle extends DefaultPolygon implements Triangle { */ public DefaultTriangle(LinearRing exterior) { super(exterior); - final PointSequence points = exterior.getPoints(); + final PointSequence points = exterior.getDataPoints(); final int size = points.size(); switch (size) { case 0: //empty triangle 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 1c5b63b217..328bd23280 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 @@ -794,7 +794,7 @@ public interface MeshPrimitive extends Geometry { @Override protected void visit(Triangle candidate) { - final PointSequence points = candidate.getExteriorRing().getPoints(); + final PointSequence points = candidate.getExteriorRing().getDataPoints(); long idx0 = ((MeshPrimitive.Vertex)points.getPoint(0)).getIndex(); long idx1 = ((MeshPrimitive.Vertex)points.getPoint(1)).getIndex(); long idx2 = ((MeshPrimitive.Vertex)points.getPoint(2)).getIndex(); @@ -828,7 +828,7 @@ public interface MeshPrimitive extends Geometry { @Override protected void visit(LineString candidate) { - final PointSequence points = candidate.getPoints(); + final PointSequence points = candidate.getDataPoints(); long idx0 = ((MeshPrimitive.Vertex)points.getPoint(0)).getIndex(); long idx1 = ((MeshPrimitive.Vertex)points.getPoint(1)).getIndex(); positions.get(idx0, pos0); @@ -1159,7 +1159,7 @@ public interface MeshPrimitive extends Geometry { } @Override - public PointSequence getPoints() { + public PointSequence getDataPoints() { //select all points, duplicate first point as last int[] indices; if (index == null) { @@ -1181,7 +1181,7 @@ public interface MeshPrimitive extends Geometry { } @Override - public PointSequence getPoints() { + public PointSequence getDataPoints() { final int[] indices; if (index == null) { indices = new int[Math.toIntExact(getPositions().getLength())]; diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitiveComparator.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitiveComparator.java index 5b6170323e..622f28f802 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitiveComparator.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitiveComparator.java @@ -196,10 +196,10 @@ public final class MeshPrimitiveComparator { final LineString e1 = (LineString) expected; final LineString e2 = (LineString) candidate; - final Vertex e1v0 = (Vertex) e1.getPoints().getPoint(0); - final Vertex e1v1 = (Vertex) e1.getPoints().getPoint(1); - final Vertex e2v0 = (Vertex) e2.getPoints().getPoint(0); - final Vertex e2v1 = (Vertex) e2.getPoints().getPoint(1); + final Vertex e1v0 = (Vertex) e1.getDataPoints().getPoint(0); + final Vertex e1v1 = (Vertex) e1.getDataPoints().getPoint(1); + final Vertex e2v0 = (Vertex) e2.getDataPoints().getPoint(0); + final Vertex e2v1 = (Vertex) e2.getDataPoints().getPoint(1); return (compareVertex(e1v0, e2v0) && compareVertex(e1v1, e2v1)) || (compareVertex(e1v0, e2v1) && compareVertex(e1v1, e2v0)); @@ -208,12 +208,12 @@ public final class MeshPrimitiveComparator { final LineString e1 = ((Triangle) expected).getExteriorRing(); final LineString e2 = ((Triangle) candidate).getExteriorRing(); - final Vertex e1v0 = (Vertex) e1.getPoints().getPoint(0); - final Vertex e1v1 = (Vertex) e1.getPoints().getPoint(1); - final Vertex e1v2 = (Vertex) e1.getPoints().getPoint(2); - final Vertex e2v0 = (Vertex) e2.getPoints().getPoint(0); - final Vertex e2v1 = (Vertex) e2.getPoints().getPoint(1); - final Vertex e2v2 = (Vertex) e2.getPoints().getPoint(2); + final Vertex e1v0 = (Vertex) e1.getDataPoints().getPoint(0); + final Vertex e1v1 = (Vertex) e1.getDataPoints().getPoint(1); + final Vertex e1v2 = (Vertex) e1.getDataPoints().getPoint(2); + final Vertex e2v0 = (Vertex) e2.getDataPoints().getPoint(0); + final Vertex e2v1 = (Vertex) e2.getDataPoints().getPoint(1); + final Vertex e2v2 = (Vertex) e2.getDataPoints().getPoint(2); return (compareVertex(e1v0, e2v0) && compareVertex(e1v1, e2v1) && compareVertex(e1v2, e2v2)) || (compareVertex(e1v0, e2v1) && compareVertex(e1v1, e2v2) && compareVertex(e1v2, e2v0)) || (compareVertex(e1v0, e2v2) && compareVertex(e1v1, e2v0) && compareVertex(e1v2, e2v1)); @@ -254,12 +254,12 @@ public final class MeshPrimitiveComparator { private static boolean isDegenerated(Object candidate) { if (candidate instanceof LineString) { final LineString cdt = (LineString) candidate; - final PointSequence points = cdt.getPoints(); + final PointSequence points = cdt.getDataPoints(); return points.getPosition(0).equals(points.getPosition(1)); } else if (candidate instanceof Triangle) { final Triangle cdt = (Triangle) candidate; - final PointSequence points = cdt.getExteriorRing().getPoints(); + final PointSequence points = cdt.getExteriorRing().getDataPoints(); final Tuple c0 = points.getPosition(0); final Tuple c1 = points.getPosition(1); final Tuple c2 = points.getPosition(2); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitiveVisitor.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitiveVisitor.java index 77954297f4..80361048ce 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitiveVisitor.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitiveVisitor.java @@ -204,7 +204,7 @@ public abstract class MeshPrimitiveVisitor { * Override this method to process a triangle. */ protected void visit(Triangle candidate) { - final PointSequence points = candidate.getExteriorRing().getPoints(); + final PointSequence points = candidate.getExteriorRing().getDataPoints(); visit((MeshPrimitive.Vertex) points.getPoint(0)); visit((MeshPrimitive.Vertex) points.getPoint(1)); visit((MeshPrimitive.Vertex) points.getPoint(2)); @@ -214,7 +214,7 @@ public abstract class MeshPrimitiveVisitor { * Override this method to process a line. */ protected void visit(LineString candidate) { - final PointSequence points = candidate.getPoints(); + final PointSequence points = candidate.getDataPoints(); visit((MeshPrimitive.Vertex) points.getPoint(0)); visit((MeshPrimitive.Vertex) points.getPoint(1)); } diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Contains.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Contains.java index 4b16931957..68fe374410 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Contains.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Contains.java @@ -85,7 +85,7 @@ public final class Contains { ProcessorUtils.ensureSameCRS2D(polygon, candidate); { //check exterior - final Array coords = polygon.getExteriorRing().getPoints().getAttributeArray(AttributesType.ATT_POSITION); + final Array coords = polygon.getExteriorRing().getDataPoints().getAttributeArray(AttributesType.ATT_POSITION); if (!contains(coords, candidate.getPosition())) { //point is outside the exterior ring return false; @@ -95,7 +95,7 @@ public final class Contains { { //check holes for (int i = 0, n = polygon.getNumInteriorRing(); i < n; i++) { final LineString hole = polygon.getInteriorRingN(i); - final Array coords = hole.getPoints().getAttributeArray(AttributesType.ATT_POSITION); + final Array coords = hole.getDataPoints().getAttributeArray(AttributesType.ATT_POSITION); if (contains(coords, candidate.getPosition())) { //point is within a hole return false; diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Intersection.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Intersection.java index 55ce8d9a2d..c20a2661c1 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Intersection.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Intersection.java @@ -154,7 +154,7 @@ public final class Intersection { final List<LineString> segments = new ArrayList<>(); for (int i = 0, n = lines.getNumGeometries(); i < n; i++) { final LineString line = lines.getGeometryN(i); - final Array segment = line.getPoints().getAttributeArray(AttributesType.ATT_POSITION); + final Array segment = line.getDataPoints().getAttributeArray(AttributesType.ATT_POSITION); final Tuple s1 = segment.get(0); final Tuple s2 = segment.get(1); @@ -163,7 +163,7 @@ public final class Intersection { while (iterator.hasNext()) { final Triangle triangle = iterator.next(); - final Array corners = triangle.getExteriorRing().getPoints().getAttributeArray(AttributesType.ATT_POSITION); + final Array corners = triangle.getExteriorRing().getDataPoints().getAttributeArray(AttributesType.ATT_POSITION); final Tuple c0 = corners.get(0); final Tuple c1 = corners.get(1); final Tuple c2 = corners.get(2); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/To3D.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/To3D.java index 5d4974c0a1..2aef6747d7 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/To3D.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/To3D.java @@ -127,7 +127,7 @@ public final class To3D { * Add Z axis to LineString. */ public static LineString to3D(LineString base, CoordinateReferenceSystem crs3d, Consumer<Tuple> zeditor) { - final PointSequence copy3d = to3d(base.getPoints(), crs3d, zeditor); + final PointSequence copy3d = to3d(base.getDataPoints(), crs3d, zeditor); return GeometryFactory.createLineString(copy3d); } diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/ToPrimitive.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/ToPrimitive.java index 3eeb5122e0..113bc64288 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/ToPrimitive.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/ToPrimitive.java @@ -71,7 +71,7 @@ public final class ToPrimitive { */ public static MeshPrimitive.LineStrip toPrimitive(LineString geometry) throws OperationException { final MeshPrimitive.LineStrip primitive = new MeshPrimitive.LineStrip(); - final ArraySequence array = toArraySequence(geometry.getPoints()); + final ArraySequence array = toArraySequence(geometry.getDataPoints()); for (String name : array.getAttributeNames()) { primitive.setAttribute(name, array.getAttribute(name)); } @@ -90,7 +90,7 @@ public final class ToPrimitive { * Transform MultiPoint to Primitive. */ public static MeshPrimitive.Points toPrimitive(MultiPoint geometry) throws OperationException { - final ArraySequence array = toArraySequence(geometry.asPointSequence()); + final ArraySequence array = toArraySequence(geometry.asDataPoints()); final MeshPrimitive.Points primitive = new MeshPrimitive.Points(); for (String name : array.getAttributeNames()) { primitive.setAttribute(name, array.getAttribute(name)); @@ -118,7 +118,7 @@ public final class ToPrimitive { for (int i = 0, k = 0; i < numGeometries; i++, k += 2) { final org.apache.sis.geometries.LineString line = geometry.getGeometryN(i); - final PointSequence points = line.getPoints(); + final PointSequence points = line.getDataPoints(); for (String name : attributesType.getAttributeNames()) { Array att = primitive.getAttribute(name); att.set(k, points.getAttribute(0, name)); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Transform.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Transform.java index 957b5defa9..b0bf221c01 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Transform.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/Transform.java @@ -79,7 +79,7 @@ public final class Transform { public static LinearRing transform(LinearRing r, CoordinateReferenceSystem crs, MathTransform transform) throws OperationException { - PointSequence ps = r.getPoints(); + PointSequence ps = r.getDataPoints(); final Array reference = ps.getAttributeArray(AttributesType.ATT_POSITION); final Array positions = transform(reference, crs, transform); final ArraySequence cp = new ArraySequence(positions); @@ -186,7 +186,7 @@ public final class Transform { } public static Triangle transform(Triangle p, CoordinateReferenceSystem crs, MathTransform transform) throws OperationException { - final PointSequence ps = p.getExteriorRing().getPoints(); + final PointSequence ps = p.getExteriorRing().getDataPoints(); final Array reference = ps.getAttributeArray(AttributesType.ATT_POSITION); final Array positions = transform(reference, crs, transform); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/TinDistance.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/TinDistance.java index 1566d79301..44ca406453 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/TinDistance.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/TinDistance.java @@ -32,7 +32,7 @@ final class TinDistance implements BiFunction<Tuple,Triangle,Double> { @Override public Double apply(Tuple pt, Triangle triangle) { - final PointSequence points = triangle.getExteriorRing().getPoints(); + final PointSequence points = triangle.getExteriorRing().getDataPoints(); final Tuple p0 = points.getPosition(0); final Tuple p1 = points.getPosition(1); final Tuple p2 = points.getPosition(2); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/spatialanalysis2d/ISOBand.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/spatialanalysis2d/ISOBand.java index b1403d9971..64e6bc0059 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/spatialanalysis2d/ISOBand.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/spatialanalysis2d/ISOBand.java @@ -79,7 +79,7 @@ public final class ISOBand { final MeshPrimitiveVisitor visitor = new MeshPrimitiveVisitor(triangles) { @Override protected void visit(Triangle candidate) { - final PointSequence points = candidate.getExteriorRing().getPoints(); + final PointSequence points = candidate.getExteriorRing().getDataPoints(); Tuple t0 = points.getPosition(0); Tuple t1 = points.getPosition(1); Tuple t2 = points.getPosition(2); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/spatialanalysis2d/ISOLine.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/spatialanalysis2d/ISOLine.java index b92844c2cf..f6858aa876 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/spatialanalysis2d/ISOLine.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/spatialanalysis2d/ISOLine.java @@ -55,7 +55,7 @@ public final class ISOLine { final MeshPrimitiveVisitor visitor = new MeshPrimitiveVisitor(triangles) { @Override protected void visit(Triangle candidate) { - final PointSequence points = candidate.getExteriorRing().getPoints(); + final PointSequence points = candidate.getExteriorRing().getDataPoints(); final double[] p0 = points.getPosition(0).toArrayDouble(); final double[] p1 = points.getPosition(1).toArrayDouble(); final double[] p2 = points.getPosition(2).toArrayDouble(); diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/EarClipping.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/EarClipping.java index d8e3278b55..d99d816f23 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/EarClipping.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/EarClipping.java @@ -148,14 +148,14 @@ public class EarClipping { //build a single geometry linking inner holes. final List<Tuple<?>> borderCoords = new ArrayList<>(); - part.outter.getPoints().getAttributeArray(AttributesType.ATT_POSITION).stream(false).forEach(borderCoords::add); + part.outter.getDataPoints().getAttributeArray(AttributesType.ATT_POSITION).stream(false).forEach(borderCoords::add); //sort inner holes by minimum x value orderHoles(part); //attach holes to the main geometry for(int i=0,n=part.inners.size();i<n;i++){ //we must find the minimum x coordinate in the inner loop - final List<Tuple<?>> loop = part.inners.get(i).getPoints().getAttributeArray(AttributesType.ATT_POSITION).stream(false).toList(); + final List<Tuple<?>> loop = part.inners.get(i).getDataPoints().getAttributeArray(AttributesType.ATT_POSITION).stream(false).toList(); int index = 0; Tuple min = loop.get(index); for(int k=1,p=loop.size();k<p;k++){ diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedEdge.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedEdge.java index 47cd16159d..4c01968fe8 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedEdge.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedEdge.java @@ -181,7 +181,7 @@ final class OrientedEdge extends AbstractGeometry implements LineString, PointSe } @Override - public PointSequence getPoints() { + public PointSequence getDataPoints() { return this; } diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/gml/GML2Writer.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/gml/GML2Writer.java index c82047aeee..9077a54855 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/gml/GML2Writer.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/gml/GML2Writer.java @@ -98,7 +98,7 @@ public final class GML2Writer extends AbstractGMLWriter { @Override protected void writeLineString(final LineString g, final String srsName, final boolean declareNamespace) throws XMLStreamException { writeStart(GML2Tags.LINE_STRING, srsName, declareNamespace); - writeCoordinates(g.getPoints()); + writeCoordinates(g.getDataPoints()); writer.writeEndElement(); } @@ -108,7 +108,7 @@ public final class GML2Writer extends AbstractGMLWriter { @Override protected void writeLinearRing(final LinearRing g, final String srsName, final boolean declareNamespace) throws XMLStreamException { writeStart(GML2Tags.LINEAR_RING, srsName, declareNamespace); - writeCoordinates(g.getPoints()); + writeCoordinates(g.getDataPoints()); writer.writeEndElement(); } diff --git a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/gml/GML3Writer.java b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/gml/GML3Writer.java index 2040ea0092..25b8bddc58 100644 --- a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/gml/GML3Writer.java +++ b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/gml/GML3Writer.java @@ -115,7 +115,7 @@ public final class GML3Writer extends AbstractGMLWriter { @Override protected void writeLineString(final LineString g, final String srsName, final boolean declareNamespace) throws XMLStreamException { writeStart(GML2Tags.LINE_STRING, srsName, declareNamespace); - writePosList(g.getPoints()); + writePosList(g.getDataPoints()); writer.writeEndElement(); } @@ -125,7 +125,7 @@ public final class GML3Writer extends AbstractGMLWriter { @Override protected void writeLinearRing(final LinearRing g, final String srsName, final boolean declareNamespace) throws XMLStreamException { writeStart(GML2Tags.LINEAR_RING, srsName, declareNamespace); - writePosList(g.getPoints()); + writePosList(g.getDataPoints()); writer.writeEndElement(); } @@ -347,7 +347,7 @@ public final class GML3Writer extends AbstractGMLWriter { */ private void writeArcSegment(final CircularString g) throws XMLStreamException { writer.writeStartElement((g.getNumArcs() == 1) ? GML3Tags.ARC : GML3Tags.ARC_STRING); - writePosList(g.getPoints()); + writePosList(g.getDataPoints()); writer.writeEndElement(); } @@ -382,7 +382,7 @@ public final class GML3Writer extends AbstractGMLWriter { writeStart(GML3Tags.CURVE, srsName, declareNamespace); writer.writeStartElement(GML3Tags.SEGMENTS); writer.writeStartElement(GML3Tags.ARC_BY_BULGE); - writePosList(g.getPoints()); + writePosList(g.getDataPoints()); writeMeasure(GML3Tags.BULGE, g.getBulge(), null); writePos(GML3Tags.NORMAL, g.getNormal()); writer.writeEndElement(); diff --git a/incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/adapter/ShapeConverterTest.java b/incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/adapter/ShapeConverterTest.java index d495285fb0..c2fba9a30d 100644 --- a/incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/adapter/ShapeConverterTest.java +++ b/incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/adapter/ShapeConverterTest.java @@ -97,7 +97,7 @@ public final class ShapeConverterTest { } else if (geom instanceof Point pt) { lst.add(new Vector2D.Double(pt.getPosition().toArrayDouble())); } else if (geom instanceof LineString ls) { - PointSequence ps = ls.getPoints(); + PointSequence ps = ls.getDataPoints(); for (int i = 0, n = ps.size(); i < n; i++) { lst.add(new Vector2D.Double(ps.getPosition(i).toArrayDouble())); } diff --git a/incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/operation/ToPrimitiveTest.java b/incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/operation/ToPrimitiveTest.java index 46d60086d7..9c16611ee8 100644 --- a/incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/operation/ToPrimitiveTest.java +++ b/incubator/src/org.apache.sis.geometry/test/org/apache/sis/geometries/operation/ToPrimitiveTest.java @@ -121,8 +121,8 @@ public class ToPrimitiveTest { assertEquals(2, mp.getNumGeometries()); LineString l1 = mp.getGeometryN(0); LineString l2 = mp.getGeometryN(1); - assertArrayEquals(new double[]{0,1,2,3}, l1.getPoints().getAttributeArray(AttributesType.ATT_POSITION).toArrayDouble(), 0.0); - assertArrayEquals(new double[]{3,4,5,6}, l2.getPoints().getAttributeArray(AttributesType.ATT_POSITION).toArrayDouble(), 0.0); + assertArrayEquals(new double[]{0,1,2,3}, l1.getDataPoints().getAttributeArray(AttributesType.ATT_POSITION).toArrayDouble(), 0.0); + assertArrayEquals(new double[]{3,4,5,6}, l2.getDataPoints().getAttributeArray(AttributesType.ATT_POSITION).toArrayDouble(), 0.0); } } diff --git a/incubator/src/org.apache.sis.geometry/test/org/apache/sis/gml/GML3ReaderTest.java b/incubator/src/org.apache.sis.geometry/test/org/apache/sis/gml/GML3ReaderTest.java index a126b9094b..fc16763ec9 100644 --- a/incubator/src/org.apache.sis.geometry/test/org/apache/sis/gml/GML3ReaderTest.java +++ b/incubator/src/org.apache.sis.geometry/test/org/apache/sis/gml/GML3ReaderTest.java @@ -322,8 +322,8 @@ public final class GML3ReaderTest { + "<gml:posList>0.0 0.0 0.0 10.0 0.0 0.0 10.0 10.0 0.0</gml:posList>" + "</gml:LineString>"; final LineString g = assertInstanceOf(LineString.class, readInline(xml)); - assertEquals(3, g.getPoints().getDimension(), "inferred tuple width"); - assertEquals(3, g.getPoints().size(), "number of points"); + assertEquals(3, g.getDataPoints().getDimension(), "inferred tuple width"); + assertEquals(3, g.getDataPoints().size(), "number of points"); assertEquals(3, g.getCoordinateReferenceSystem().getCoordinateSystem().getDimension(), "The two-dimensional srsName should have been promoted to three dimensions."); } @@ -351,8 +351,8 @@ public final class GML3ReaderTest { + "<gml:posList srsDimension=\"4\">0 0 0 0 1 1 1 1</gml:posList>" + "</gml:LineString>"; final LineString g = assertInstanceOf(LineString.class, readInline(xml)); - assertEquals(4, g.getPoints().getDimension()); - assertEquals(2, g.getPoints().size()); + assertEquals(4, g.getDataPoints().getDimension()); + assertEquals(2, g.getDataPoints().size()); assertUndefinedCRS(g); } @@ -424,7 +424,7 @@ public final class GML3ReaderTest { final Geometry g = read(TestData.V3, TestData.CURVE_ARC); final CircularString arc = assertInstanceOf(CircularString.class, g); assertEquals(1, arc.getNumArcs()); - assertEquals(3, arc.getPoints().size()); + assertEquals(3, arc.getDataPoints().size()); assertEquals(CurveInterpolation.CIRCULAR, arc.getInterpolation()); assertCRS(wgs84, g); } @@ -531,9 +531,9 @@ public final class GML3ReaderTest { public void testArcByBulge() throws Exception { final Geometry g = read(TestData.V3, TestData.CURVE_ARC_BY_BULGE); final ArcByBulge arc = assertInstanceOf(ArcByBulge.class, g); - assertEquals(2, arc.getPoints().size(), "number of points"); - assertEquals( 0.0, arc.getPoints().getPosition(0).get(0), GeometryAssert.TOLERANCE, "start x"); - assertEquals(10.0, arc.getPoints().getPosition(1).get(0), GeometryAssert.TOLERANCE, "end x"); + assertEquals(2, arc.getDataPoints().size(), "number of points"); + assertEquals( 0.0, arc.getDataPoints().getPosition(0).get(0), GeometryAssert.TOLERANCE, "start x"); + assertEquals(10.0, arc.getDataPoints().getPosition(1).get(0), GeometryAssert.TOLERANCE, "end x"); assertEquals( 2.0, arc.getBulge(), GeometryAssert.TOLERANCE, "bulge"); assertEquals(2, arc.getNormal().getDimension(), "normal dimension"); assertEquals(0.0, arc.getNormal().get(0), GeometryAssert.TOLERANCE, "normal x"); diff --git a/incubator/src/org.apache.sis.geometry/test/org/apache/sis/gml/GeometryAssert.java b/incubator/src/org.apache.sis.geometry/test/org/apache/sis/gml/GeometryAssert.java index fa1bc3c299..6dab0e0591 100644 --- a/incubator/src/org.apache.sis.geometry/test/org/apache/sis/gml/GeometryAssert.java +++ b/incubator/src/org.apache.sis.geometry/test/org/apache/sis/gml/GeometryAssert.java @@ -87,7 +87,7 @@ final class GeometryAssert { assertSequenceEquals(e.asPointSequence(), a.asPointSequence(), tolerance); } else if (expected instanceof LineString e) { // Also covers LinearRing. final LineString a = (LineString) actual; - assertSequenceEquals(e.getPoints(), a.getPoints(), tolerance); + assertSequenceEquals(e.getDataPoints(), a.getDataPoints(), tolerance); } else if (expected instanceof Polygon e) { // Also covers Triangle. final Polygon a = (Polygon) actual; assertEquals(e.getNumInteriorRing(), a.getNumInteriorRing(), "number of interior rings"); diff --git a/incubator/src/org.apache.sis.referencing.dggs/test/org/apache/sis/referencing/dggs/AbstractDggrsTest.java b/incubator/src/org.apache.sis.referencing.dggs/test/org/apache/sis/referencing/dggs/AbstractDggrsTest.java index 2a8244804e..4ad1283843 100644 --- a/incubator/src/org.apache.sis.referencing.dggs/test/org/apache/sis/referencing/dggs/AbstractDggrsTest.java +++ b/incubator/src/org.apache.sis.referencing.dggs/test/org/apache/sis/referencing/dggs/AbstractDggrsTest.java @@ -187,7 +187,7 @@ public abstract class AbstractDggrsTest { final Polygon geometry = (Polygon) DiscreteGlobalGridSystems.toSISPolygon(z.getGeographicExtent()); final DirectPosition center = z.getPosition(); final LinearRing exterior = (LinearRing) geometry.getExteriorRing(); - final PointSequence ps = exterior.getPoints(); + final PointSequence ps = exterior.getDataPoints(); for (int i = 0; i < ps.size(); i++) { final Tuple corner = ps.getPosition(i);
