Package org.locationtech.jts.geomgraph
Class DirectedEdgeStar
- java.lang.Object
-
- org.locationtech.jts.geomgraph.EdgeEndStar
-
- org.locationtech.jts.geomgraph.DirectedEdgeStar
-
public class DirectedEdgeStar extends EdgeEndStar
A DirectedEdgeStar is an ordered list of outgoing DirectedEdges around a node. It supports labelling the edges as well as linking the edges to form both MaximalEdgeRings and MinimalEdgeRings.- Version:
- 1.7
-
-
Field Summary
Fields Modifier and Type Field Description private Label
label
private int
LINKING_TO_OUTGOING
private java.util.List
resultAreaEdgeList
A list of all outgoing edges in the result, in CCW orderprivate int
SCANNING_FOR_INCOMING
-
Fields inherited from class org.locationtech.jts.geomgraph.EdgeEndStar
edgeList, edgeMap
-
-
Constructor Summary
Constructors Constructor Description DirectedEdgeStar()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private int
computeDepths(int startIndex, int endIndex, int startDepth)
Compute the DirectedEdge depths for a subsequence of the edge array.void
computeDepths(DirectedEdge de)
void
computeLabelling(GeometryGraph[] geom)
Compute the labelling for all dirEdges in this star, as well as the overall labellingvoid
findCoveredLineEdges()
Traverse the star of edges, maintaining the current location in the result area at this node (if any).Label
getLabel()
int
getOutgoingDegree()
int
getOutgoingDegree(EdgeRing er)
private java.util.List
getResultAreaEdges()
DirectedEdge
getRightmostEdge()
void
insert(EdgeEnd ee)
Insert a directed edge in the listvoid
linkAllDirectedEdges()
void
linkMinimalDirectedEdges(EdgeRing er)
void
linkResultDirectedEdges()
Traverse the star of DirectedEdges, linking the included edges together.void
mergeSymLabels()
For each dirEdge in the star, merge the label from the sym dirEdge into the labelvoid
print(java.io.PrintStream out)
void
updateLabelling(Label nodeLabel)
Update incomplete dirEdge labels from the labelling for the node-
Methods inherited from class org.locationtech.jts.geomgraph.EdgeEndStar
findIndex, getCoordinate, getDegree, getEdges, getNextCW, insertEdgeEnd, isAreaLabelsConsistent, iterator, propagateSideLabels, toString
-
-
-
-
Field Detail
-
resultAreaEdgeList
private java.util.List resultAreaEdgeList
A list of all outgoing edges in the result, in CCW order
-
label
private Label label
-
SCANNING_FOR_INCOMING
private final int SCANNING_FOR_INCOMING
- See Also:
- Constant Field Values
-
LINKING_TO_OUTGOING
private final int LINKING_TO_OUTGOING
- See Also:
- Constant Field Values
-
-
Method Detail
-
insert
public void insert(EdgeEnd ee)
Insert a directed edge in the list- Specified by:
insert
in classEdgeEndStar
-
getLabel
public Label getLabel()
-
getOutgoingDegree
public int getOutgoingDegree()
-
getOutgoingDegree
public int getOutgoingDegree(EdgeRing er)
-
getRightmostEdge
public DirectedEdge getRightmostEdge()
-
computeLabelling
public void computeLabelling(GeometryGraph[] geom)
Compute the labelling for all dirEdges in this star, as well as the overall labelling- Overrides:
computeLabelling
in classEdgeEndStar
-
mergeSymLabels
public void mergeSymLabels()
For each dirEdge in the star, merge the label from the sym dirEdge into the label
-
updateLabelling
public void updateLabelling(Label nodeLabel)
Update incomplete dirEdge labels from the labelling for the node
-
getResultAreaEdges
private java.util.List getResultAreaEdges()
-
linkResultDirectedEdges
public void linkResultDirectedEdges()
Traverse the star of DirectedEdges, linking the included edges together. To link two dirEdges, thenext
pointer for an incoming dirEdge is set to the next outgoing edge.DirEdges are only linked if:
- they belong to an area (i.e. they have sides)
- they are marked as being in the result
Edges are linked in CCW order (the order they are stored). This means that rings have their face on the Right (in other words, the topological location of the face is given by the RHS label of the DirectedEdge)
PRECONDITION: No pair of dirEdges are both marked as being in the result
-
linkMinimalDirectedEdges
public void linkMinimalDirectedEdges(EdgeRing er)
-
linkAllDirectedEdges
public void linkAllDirectedEdges()
-
findCoveredLineEdges
public void findCoveredLineEdges()
Traverse the star of edges, maintaining the current location in the result area at this node (if any). If any L edges are found in the interior of the result, mark them as covered.
-
computeDepths
public void computeDepths(DirectedEdge de)
-
computeDepths
private int computeDepths(int startIndex, int endIndex, int startDepth)
Compute the DirectedEdge depths for a subsequence of the edge array.- Returns:
- the last depth assigned (from the R side of the last edge visited)
-
print
public void print(java.io.PrintStream out)
- Overrides:
print
in classEdgeEndStar
-
-