Class EdgeRing
java.lang.Object
org.locationtech.jts.operation.polygonize.EdgeRing
Represents a ring of
PolygonizeDirectedEdge
s 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 class
Compares EdgeRings based on their envelope, using the standard lexicographic ordering. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate List
private GeometryFactory
private List
private boolean
private boolean
private boolean
private boolean
private DirectedEdge
private LinearRing
private Coordinate[]
private EdgeRing
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
add
(DirectedEdge de) Adds aDirectedEdge
which is known to form part of this ring.private static void
addEdge
(Coordinate[] coords, boolean isForward, CoordinateList coordList) void
addHole
(LinearRing hole) Adds a hole to the polygon formed by this ring.void
Adds a hole to the polygon formed by this ring.void
build
(PolygonizeDirectedEdge startDE) void
Computes whether this ring is a hole.static List
findDirEdgesInRing
(PolygonizeDirectedEdge startDE) Traverses a ring of DirectedEdges, accumulating them into a list.static EdgeRing
findEdgeRingContaining
(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 thePolygon
formed 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.boolean
hasShell()
Tests whether this ring has a shell assigned to it.boolean
isHole()
Tests whether this ring is a hole.boolean
boolean
static boolean
isInList
(Coordinate pt, Coordinate[] pts) Deprecated.boolean
Tests whether this ring is an outer hole.boolean
Tests whether this ring is an outer shell.boolean
boolean
isValid()
Tests if theLinearRing
ring formed by this edge ring is topologically valid.static Coordinate
ptNotInList
(Coordinate[] testPts, Coordinate[] pts) Deprecated.Use CoordinateArrays.ptNotInList insteadvoid
setIncluded
(boolean isIncluded) void
setProcessed
(boolean isProcessed) void
Sets the containing shell ring of a ring that has been determined to be a hole.toString()
Gets a string representation of this object.void
Updates 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
- theCoordinate
s to testpts
- an array ofCoordinate
s to test the input points against- Returns:
- a
Coordinate
fromtestPts
which 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
- aCoordinate
for the test pointpts
- an array ofCoordinate
s to test- Returns:
true
if 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 aDirectedEdge
which is known to form part of this ring.- Parameters:
de
- theDirectedEdge
to add.
-
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
Adds a hole to the polygon formed by this ring.- Parameters:
hole
- theLinearRing
forming the hole.
-
addHole
Adds a hole to the polygon formed by this ring.- Parameters:
hole
- theLinearRing
forming the hole.
-
getPolygon
Computes thePolygon
formed by this ring and any contained holes.- Returns:
- the
Polygon
formed by this ring and its holes.
-
isValid
public boolean isValid()Tests if theLinearRing
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
Computes the list of coordinates which are contained in this ring. The coordinates are computed once only and cached.- Returns:
- an array of the
Coordinate
s 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
LineString
containing 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
-