Class NodedSegmentString

java.lang.Object
org.locationtech.jts.noding.NodedSegmentString
All Implemented Interfaces:
NodableSegmentString, SegmentString

public class NodedSegmentString extends Object implements NodableSegmentString
Represents a list of contiguous line segments, and supports noding the segments. The line segments are represented by an array of Coordinates. Intended to optimize the noding of contiguous segments by reducing the number of allocated objects. SegmentStrings can carry a context object, which is useful for preserving topological or parentage information. All noded substrings are initialized with the same context object.

For read-only applications use BasicSegmentString, which is (slightly) more lightweight.

Version:
1.7
See Also:
  • Constructor Details

    • NodedSegmentString

      public NodedSegmentString(Coordinate[] pts, Object data)
      Creates a instance from a list of vertices and optional data object.
      Parameters:
      pts - the vertices of the segment string
      data - the user-defined data of this segment string (may be null)
    • NodedSegmentString

      public NodedSegmentString(SegmentString ss)
      Creates a new instance from a SegmentString.
      Parameters:
      ss - the segment string to use
  • Method Details

    • getNodedSubstrings

      public static List getNodedSubstrings(Collection segStrings)
      Gets the SegmentStrings which result from splitting this string at node points.
      Parameters:
      segStrings - a Collection of NodedSegmentStrings
      Returns:
      a Collection of NodedSegmentStrings representing the substrings
    • getNodedSubstrings

      public static void getNodedSubstrings(Collection segStrings, Collection resultEdgelist)
      Adds the noded SegmentStrings which result from splitting this string at node points.
      Parameters:
      segStrings - a Collection of NodedSegmentStrings
      resultEdgelist - a List which will collect the NodedSegmentStrings representing the substrings
    • getData

      public Object getData()
      Gets the user-defined data for this segment string.
      Specified by:
      getData in interface SegmentString
      Returns:
      the user-defined data
    • setData

      public void setData(Object data)
      Sets the user-defined data for this segment string.
      Specified by:
      setData in interface SegmentString
      Parameters:
      data - an Object containing user-defined data
    • getNodeList

      public SegmentNodeList getNodeList()
    • size

      public int size()
      Specified by:
      size in interface SegmentString
    • getCoordinate

      public Coordinate getCoordinate(int i)
      Specified by:
      getCoordinate in interface SegmentString
    • getCoordinates

      public Coordinate[] getCoordinates()
      Specified by:
      getCoordinates in interface SegmentString
    • getNodedCoordinates

      public Coordinate[] getNodedCoordinates()
      Gets a list of coordinates with all nodes included.
      Returns:
      an array of coordinates include nodes
    • isClosed

      public boolean isClosed()
      Specified by:
      isClosed in interface SegmentString
    • getSegmentOctant

      public int getSegmentOctant(int index)
      Gets the octant of the segment starting at vertex index.
      Parameters:
      index - the index of the vertex starting the segment. Must not be the last index in the vertex list
      Returns:
      the octant of the segment at the vertex
    • addIntersections

      public void addIntersections(LineIntersector li, int segmentIndex, int geomIndex)
      Adds EdgeIntersections for one or both intersections found for a segment of an edge to the edge intersection list.
    • addIntersection

      public void addIntersection(LineIntersector li, int segmentIndex, int geomIndex, int intIndex)
      Add an SegmentNode for intersection intIndex. An intersection that falls exactly on a vertex of the SegmentString is normalized to use the higher of the two possible segmentIndexes
    • addIntersection

      public void addIntersection(Coordinate intPt, int segmentIndex)
      Adds an intersection node for a given point and segment to this segment string.
      Specified by:
      addIntersection in interface NodableSegmentString
      Parameters:
      intPt - the location of the intersection
      segmentIndex - the index of the segment containing the intersection
    • addIntersectionNode

      public SegmentNode addIntersectionNode(Coordinate intPt, int segmentIndex)
      Adds an intersection node for a given point and segment to this segment string. If an intersection already exists for this exact location, the existing node will be returned.
      Parameters:
      intPt - the location of the intersection
      segmentIndex - the index of the segment containing the intersection
      Returns:
      the intersection node for the point
    • toString

      public String toString()
      Overrides:
      toString in class Object