Search in sources :

Example 6 with LinearRing

use of com.revolsys.geometry.model.LinearRing in project com.revolsys.open by revolsys.

the class PolygonEditor method getCurrentGeometry.

@Override
public Geometry getCurrentGeometry() {
    final GeometryFactory geometryFactory = getGeometryFactory();
    if (isEmpty()) {
        return geometryFactory.polygon();
    }
    final List<LinearRing> rings = new ArrayList<>();
    final List<Geometry> geometries = new ArrayList<>();
    boolean shell = true;
    for (final LinearRingEditor editor : this.editors) {
        final Geometry ringGeometry = editor.getCurrentGeometry();
        if (ringGeometry instanceof LinearRing) {
            final LinearRing ring = (LinearRing) ringGeometry;
            if (shell || !rings.isEmpty()) {
                rings.add(ring);
            } else {
                geometries.add(ringGeometry);
            }
        } else {
            geometries.add(ringGeometry);
        }
        shell = false;
    }
    if (!rings.isEmpty()) {
        final Polygon polygon = geometryFactory.polygon(rings);
        if (geometries.isEmpty()) {
            return polygon;
        } else {
            geometries.add(polygon);
        }
    }
    return geometryFactory.geometry(geometries);
}
Also used : Geometry(com.revolsys.geometry.model.Geometry) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) ArrayList(java.util.ArrayList) LinearRing(com.revolsys.geometry.model.LinearRing) Polygon(com.revolsys.geometry.model.Polygon)

Example 7 with LinearRing

use of com.revolsys.geometry.model.LinearRing in project com.revolsys.open by revolsys.

the class MultiPolygonVertex method next.

@Override
public Vertex next() {
    final Polygonal polygonal = getPolygonal();
    this.vertexIndex++;
    while (this.partIndex < polygonal.getGeometryCount()) {
        final Polygon polygon = polygonal.getPolygon(this.partIndex);
        while (this.ringIndex < polygon.getRingCount()) {
            final LinearRing ring = polygon.getRing(this.ringIndex);
            if (this.vertexIndex < ring.getVertexCount()) {
                return this;
            } else {
                this.ringIndex++;
                this.vertexIndex = 0;
            }
        }
        this.partIndex++;
        this.ringIndex = 0;
        this.vertexIndex = 0;
    }
    throw new NoSuchElementException();
}
Also used : Polygonal(com.revolsys.geometry.model.Polygonal) Polygon(com.revolsys.geometry.model.Polygon) LinearRing(com.revolsys.geometry.model.LinearRing) NoSuchElementException(java.util.NoSuchElementException)

Example 8 with LinearRing

use of com.revolsys.geometry.model.LinearRing in project com.revolsys.open by revolsys.

the class MultiPolygonVertex method getCoordinate.

@Override
public double getCoordinate(final int axisIndex) {
    final Polygon polygon = getPolygon();
    final LinearRing ring = polygon.getRing(this.ringIndex);
    if (ring == null) {
        return java.lang.Double.NaN;
    } else {
        return ring.getCoordinate(this.vertexIndex, axisIndex);
    }
}
Also used : Polygon(com.revolsys.geometry.model.Polygon) LinearRing(com.revolsys.geometry.model.LinearRing)

Example 9 with LinearRing

use of com.revolsys.geometry.model.LinearRing in project com.revolsys.open by revolsys.

the class MultiPolygonVertex method getX.

@Override
public double getX() {
    final Polygon polygon = getPolygon();
    final LinearRing ring = polygon.getRing(this.ringIndex);
    if (ring == null) {
        return java.lang.Double.NaN;
    } else {
        return ring.getX(this.vertexIndex);
    }
}
Also used : Polygon(com.revolsys.geometry.model.Polygon) LinearRing(com.revolsys.geometry.model.LinearRing)

Example 10 with LinearRing

use of com.revolsys.geometry.model.LinearRing in project com.revolsys.open by revolsys.

the class PolygonVertex method hasNext.

@Override
public boolean hasNext() {
    if (getGeometry().isEmpty()) {
        return false;
    } else {
        final Polygon polygon = getPolygon();
        int ringIndex = this.ringIndex;
        int vertexIndex = this.vertexIndex;
        while (ringIndex < polygon.getRingCount()) {
            final LinearRing ring = polygon.getRing(ringIndex);
            if (vertexIndex + 1 < ring.getVertexCount()) {
                return true;
            } else {
                ringIndex++;
                vertexIndex = 0;
            }
        }
        return false;
    }
}
Also used : Polygon(com.revolsys.geometry.model.Polygon) LinearRing(com.revolsys.geometry.model.LinearRing)

Aggregations

LinearRing (com.revolsys.geometry.model.LinearRing)95 Polygon (com.revolsys.geometry.model.Polygon)53 Point (com.revolsys.geometry.model.Point)44 ArrayList (java.util.ArrayList)21 LineString (com.revolsys.geometry.model.LineString)19 Geometry (com.revolsys.geometry.model.Geometry)14 Polygonal (com.revolsys.geometry.model.Polygonal)11 GeometryFactory (com.revolsys.geometry.model.GeometryFactory)9 BoundingBox (com.revolsys.geometry.model.BoundingBox)8 Lineal (com.revolsys.geometry.model.Lineal)7 Punctual (com.revolsys.geometry.model.Punctual)6 List (java.util.List)4 NoSuchElementException (java.util.NoSuchElementException)4 IOException (java.io.IOException)3 MCPointInRing (com.revolsys.geometry.algorithm.MCPointInRing)2 PointDoubleXY (com.revolsys.geometry.model.impl.PointDoubleXY)2 Vertex (com.revolsys.geometry.model.vertex.Vertex)2 BigDecimal (java.math.BigDecimal)2 PointInRing (com.revolsys.geometry.algorithm.PointInRing)1 EdgeRing (com.revolsys.geometry.geomgraph.EdgeRing)1