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 Details

    • resultAreaEdgeList

      private 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:
    • LINKING_TO_OUTGOING

      private final int LINKING_TO_OUTGOING
      See Also:
  • Constructor Details

    • DirectedEdgeStar

      public DirectedEdgeStar()
  • Method Details

    • insert

      public void insert(EdgeEnd ee)
      Insert a directed edge in the list
      Specified by:
      insert in class EdgeEndStar
    • 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 class EdgeEndStar
    • 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 List getResultAreaEdges()
    • linkResultDirectedEdges

      public void linkResultDirectedEdges()
      Traverse the star of DirectedEdges, linking the included edges together. To link two dirEdges, the next 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(PrintStream out)
      Overrides:
      print in class EdgeEndStar