Class SegmentIntersectionDetector

java.lang.Object
org.locationtech.jts.noding.SegmentIntersectionDetector
All Implemented Interfaces:
SegmentIntersector

public class SegmentIntersectionDetector extends Object implements SegmentIntersector
Detects and records an intersection between two SegmentStrings, if one exists. Only a single intersection is recorded. This strategy can be configured to search for proper intersections. In this case, the presence of any kind of intersection will still be recorded, but searching will continue until either a proper intersection has been found or no intersections are detected.
Version:
1.7
  • Field Details

    • li

      private LineIntersector li
    • findProper

      private boolean findProper
    • findAllTypes

      private boolean findAllTypes
    • hasIntersection

      private boolean hasIntersection
    • hasProperIntersection

      private boolean hasProperIntersection
    • hasNonProperIntersection

      private boolean hasNonProperIntersection
    • intPt

      private Coordinate intPt
    • intSegments

      private Coordinate[] intSegments
  • Constructor Details

    • SegmentIntersectionDetector

      public SegmentIntersectionDetector()
      Creates an intersection finder using a RobustLineIntersector.
    • SegmentIntersectionDetector

      public SegmentIntersectionDetector(LineIntersector li)
      Creates an intersection finder using a given LineIntersector.
      Parameters:
      li - the LineIntersector to use
  • Method Details

    • setFindProper

      public void setFindProper(boolean findProper)
      Sets whether processing must continue until a proper intersection is found.
      Parameters:
      findProper - true if processing should continue until a proper intersection is found
    • setFindAllIntersectionTypes

      public void setFindAllIntersectionTypes(boolean findAllTypes)
      Sets whether processing can terminate once any intersection is found.
      Parameters:
      findAllTypes - true if processing can terminate once any intersection is found.
    • hasIntersection

      public boolean hasIntersection()
      Tests whether an intersection was found.
      Returns:
      true if an intersection was found
    • hasProperIntersection

      public boolean hasProperIntersection()
      Tests whether a proper intersection was found.
      Returns:
      true if a proper intersection was found
    • hasNonProperIntersection

      public boolean hasNonProperIntersection()
      Tests whether a non-proper intersection was found.
      Returns:
      true if a non-proper intersection was found
    • getIntersection

      public Coordinate getIntersection()
      Gets the computed location of the intersection. Due to round-off, the location may not be exact.
      Returns:
      the coordinate for the intersection location
    • getIntersectionSegments

      public Coordinate[] getIntersectionSegments()
      Gets the endpoints of the intersecting segments.
      Returns:
      an array of the segment endpoints (p00, p01, p10, p11)
    • processIntersections

      public void processIntersections(SegmentString e0, int segIndex0, SegmentString e1, int segIndex1)
      This method is called by clients of the SegmentIntersector class to process intersections for two segments of the SegmentStrings being intersected. Note that some clients (such as MonotoneChains) may optimize away this call for segment pairs which they have determined do not intersect (e.g. by an disjoint envelope test).
      Specified by:
      processIntersections in interface SegmentIntersector
    • isDone

      public boolean isDone()
      Tests whether processing can terminate, because all required information has been obtained (e.g. an intersection of the desired type has been detected).
      Specified by:
      isDone in interface SegmentIntersector
      Returns:
      true if processing can terminate