Class EdgeRing


  • class EdgeRing
    extends java.lang.Object
    Represents a ring of PolygonizeDirectedEdges which form a ring of a polygon. The ring may be either an outer shell or a hole.
    Version:
    1.7
    • Field Detail

      • deList

        private java.util.List deList
      • holes

        private java.util.List holes
      • isHole

        private boolean isHole
      • isProcessed

        private boolean isProcessed
      • isIncludedSet

        private boolean isIncludedSet
      • isIncluded

        private boolean isIncluded
    • Method Detail

      • findEdgeRingContaining

        public static EdgeRing findEdgeRingContaining​(EdgeRing testEr,
                                                      java.util.List shellList)
        Find the innermost enclosing shell EdgeRing containing the argument EdgeRing, if any. The innermost enclosing ring is the smallest enclosing ring. The algorithm used depends on the fact that:
        ring A contains ring B iff envelope(ring A) contains envelope(ring B)
        This routine is only safe to use if the chosen point of the hole is known to be properly contained in a shell (which is guaranteed to be the case if the hole does not touch its shell)
        Returns:
        containing EdgeRing, if there is one or null if no containing EdgeRing is found
      • ptNotInList

        public static Coordinate ptNotInList​(Coordinate[] testPts,
                                             Coordinate[] pts)
        Deprecated.
        Use CoordinateArrays.ptNotInList instead
        Finds a point in a list of points which is not contained in another list of points
        Parameters:
        testPts - the Coordinates to test
        pts - an array of Coordinates to test the input points against
        Returns:
        a Coordinate from testPts which is not in pts, or null if there is no coordinate not in the list
      • isInList

        public static boolean isInList​(Coordinate pt,
                                       Coordinate[] pts)
        Deprecated.
        Tests whether a given point is in an array of points. Uses a value-based test.
        Parameters:
        pt - a Coordinate for the test point
        pts - an array of Coordinates to test
        Returns:
        true if the point is in the array
      • findDirEdgesInRing

        public static java.util.List findDirEdgesInRing​(PolygonizeDirectedEdge startDE)
        Traverses a ring of DirectedEdges, accumulating them into a list. This assumes that all dangling directed edges have been removed from the graph, so that there is always a next dirEdge.
        Parameters:
        startDE - the DirectedEdge to start traversing at
        Returns:
        a List of DirectedEdges that form a ring
      • isHole

        public boolean isHole()
        Tests whether this ring is a hole.
        Returns:
        true if this ring is a hole
      • computeHole

        public void computeHole()
        Computes whether this ring is a hole. Due to the way the edges in the polygonization graph are linked, a ring is a hole if it is oriented counter-clockwise.
      • addHole

        public void addHole​(LinearRing hole)
        Adds a hole to the polygon formed by this ring.
        Parameters:
        hole - the LinearRing forming the hole.
      • addHole

        public void addHole​(EdgeRing holeER)
        Adds a hole to the polygon formed by this ring.
        Parameters:
        hole - the LinearRing forming the hole.
      • getPolygon

        public Polygon getPolygon()
        Computes the Polygon formed by this ring and any contained holes.
        Returns:
        the Polygon formed by this ring and its holes.
      • isValid

        public boolean isValid()
        Tests if the LinearRing ring formed by this edge ring is topologically valid.
        Returns:
        true if the ring is valid
      • isIncludedSet

        public boolean isIncludedSet()
      • isIncluded

        public boolean isIncluded()
      • setIncluded

        public void setIncluded​(boolean isIncluded)
      • getCoordinates

        private Coordinate[] getCoordinates()
        Computes the list of coordinates which are contained in this ring. The coordinates are computed once only and cached.
        Returns:
        an array of the Coordinates in this ring
      • getLineString

        public LineString getLineString()
        Gets the coordinates for this ring as a LineString. Used to return the coordinates in this ring as a valid geometry, when it has been detected that the ring is topologically invalid.
        Returns:
        a LineString containing the coordinates in this ring
      • getRing

        public LinearRing getRing()
        Returns this ring as a LinearRing, or null if an Exception occurs while creating it (such as a topology problem). Details of problems are written to standard output.
      • setShell

        public void setShell​(EdgeRing shell)
        Sets the containing shell ring of a ring that has been determined to be a hole.
        Parameters:
        shell - the shell ring
      • hasShell

        public boolean hasShell()
        Tests whether this ring has a shell assigned to it.
        Returns:
        true if the ring has a shell
      • getShell

        public EdgeRing getShell()
        Gets the shell for this ring. The shell is the ring itself if it is not a hole, otherwise its parent shell.
        Returns:
        the shell for this ring
      • isOuterHole

        public boolean isOuterHole()
        Tests whether this ring is an outer hole. A hole is an outer hole if it is not contained by a shell.
        Returns:
        true if the ring is an outer hole.
      • isOuterShell

        public boolean isOuterShell()
        Tests whether this ring is an outer shell.
        Returns:
        true if the ring is an outer shell.
      • getOuterHole

        public EdgeRing getOuterHole()
      • updateIncluded

        public void updateIncluded()
        Updates the included status for currently non-included shells based on whether they are adjacent to an included shell.
      • toString

        public java.lang.String toString()
        Gets a string representation of this object.
        Overrides:
        toString in class java.lang.Object
        Returns:
        a string representing the object
      • isProcessed

        public boolean isProcessed()
        Returns:
        whether the ring has been processed
      • setProcessed

        public void setProcessed​(boolean isProcessed)
        Parameters:
        isProcessed - whether the ring has been processed