Class EdgeRing
java.lang.Object
org.locationtech.jts.operation.polygonize.EdgeRing
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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static classCompares EdgeRings based on their envelope, using the standard lexicographic ordering. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Listprivate GeometryFactoryprivate Listprivate booleanprivate booleanprivate booleanprivate booleanprivate DirectedEdgeprivate LinearRingprivate Coordinate[]private EdgeRing -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidadd(DirectedEdge de) Adds aDirectedEdgewhich is known to form part of this ring.private static voidaddEdge(Coordinate[] coords, boolean isForward, CoordinateList coordList) voidaddHole(LinearRing hole) Adds a hole to the polygon formed by this ring.voidAdds a hole to the polygon formed by this ring.voidbuild(PolygonizeDirectedEdge startDE) voidComputes whether this ring is a hole.static ListfindDirEdgesInRing(PolygonizeDirectedEdge startDE) Traverses a ring of DirectedEdges, accumulating them into a list.static EdgeRingfindEdgeRingContaining(EdgeRing testEr, List shellList) Find the innermost enclosing shell EdgeRing containing the argument EdgeRing, if any.private Coordinate[]Computes the list of coordinates which are contained in this ring.Gets the coordinates for this ring as aLineString.Computes thePolygonformed by this ring and any contained holes.getRing()Returns this ring as aLinearRing, or null if an Exception occurs while creating it (such as a topology problem).getShell()Gets the shell for this ring.booleanhasShell()Tests whether this ring has a shell assigned to it.booleanisHole()Tests whether this ring is a hole.booleanbooleanstatic booleanisInList(Coordinate pt, Coordinate[] pts) Deprecated.booleanTests whether this ring is an outer hole.booleanTests whether this ring is an outer shell.booleanbooleanisValid()Tests if theLinearRingring formed by this edge ring is topologically valid.static CoordinateptNotInList(Coordinate[] testPts, Coordinate[] pts) Deprecated.Use CoordinateArrays.ptNotInList insteadvoidsetIncluded(boolean isIncluded) voidsetProcessed(boolean isProcessed) voidSets the containing shell ring of a ring that has been determined to be a hole.toString()Gets a string representation of this object.voidUpdates the included status for currently non-included shells based on whether they are adjacent to an included shell.
-
Field Details
-
factory
-
deList
-
lowestEdge
-
ring
-
ringPts
-
holes
-
shell
-
isHole
private boolean isHole -
isProcessed
private boolean isProcessed -
isIncludedSet
private boolean isIncludedSet -
isIncluded
private boolean isIncluded
-
-
Constructor Details
-
EdgeRing
-
-
Method Details
-
findEdgeRingContaining
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
Deprecated.Use CoordinateArrays.ptNotInList insteadFinds a point in a list of points which is not contained in another list of points- Parameters:
testPts- theCoordinates to testpts- an array ofCoordinates to test the input points against- Returns:
- a
CoordinatefromtestPtswhich is not inpts, or null if there is no coordinate not in the list
-
isInList
Deprecated.Tests whether a given point is in an array of points. Uses a value-based test.- Parameters:
pt- aCoordinatefor the test pointpts- an array ofCoordinates to test- Returns:
trueif the point is in the array
-
findDirEdgesInRing
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
-
build
-
add
Adds aDirectedEdgewhich is known to form part of this ring.- Parameters:
de- theDirectedEdgeto add.
-
isHole
public boolean isHole()Tests whether this ring is a hole.- Returns:
trueif 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
Adds a hole to the polygon formed by this ring.- Parameters:
hole- theLinearRingforming the hole.
-
addHole
Adds a hole to the polygon formed by this ring.- Parameters:
hole- theLinearRingforming the hole.
-
getPolygon
Computes thePolygonformed by this ring and any contained holes.- Returns:
- the
Polygonformed by this ring and its holes.
-
isValid
public boolean isValid()Tests if theLinearRingring 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
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
Gets the coordinates for this ring as aLineString. 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
LineStringcontaining the coordinates in this ring
-
getRing
Returns this ring as aLinearRing, or null if an Exception occurs while creating it (such as a topology problem). Details of problems are written to standard output. -
addEdge
-
setShell
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
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
-
updateIncluded
public void updateIncluded()Updates the included status for currently non-included shells based on whether they are adjacent to an included shell. -
toString
Gets a string representation of this 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
-