15 #ifndef GEOS_NODING_NODINGINTERSECTIONFINDER_H
16 #define GEOS_NODING_NODINGINTERSECTIONFINDER_H
18 #include <geos/noding/SegmentIntersector.h>
19 #include <geos/geom/Coordinate.h>
26 class LineIntersector;
47 class NodingIntersectionFinder:
public SegmentIntersector {
60 interiorIntersection(geom::Coordinate::getNull()),
62 isCheckEndSegmentsOnly(false),
63 findAllIntersections(false),
64 keepIntersections(true)
76 return !interiorIntersection.isNull();
88 return interiorIntersection;
99 return intersectionCount;
115 isCheckEndSegmentsOnly = isCESO;
132 findAllIntersections = fAI;
140 const std::vector<geom::Coordinate>&
162 return !interiorIntersection.isNull();
168 size_t intersectionCount;
169 bool isCheckEndSegmentsOnly;
170 bool findAllIntersections;
171 bool keepIntersections;
172 std::vector<geom::Coordinate> intSegments;
188 bool isInteriorVertexIntersection(
190 bool isEnd0,
bool isEnd1);
208 bool isInteriorVertexIntersection(
211 bool isEnd00,
bool isEnd01,
bool isEnd10,
bool isEnd11);
221 bool isEndSegment(
const SegmentString* segStr,
size_t index);
229 #endif // GEOS_NODING_NODINGINTERSECTIONFINDER_H
void setCheckEndSegmentsOnly(bool isCESO)
Sets whether only end segments should be tested for interior intersection.
Definition: NodingIntersectionFinder.h:112
void processIntersections(SegmentString *e0, size_t segIndex0, SegmentString *e1, size_t segIndex1) override
This method is called by clients of the SegmentIntersector class to process intersections for two seg...
An interface for classes which represent a sequence of contiguous line segments.
Definition: SegmentString.h:45
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:24
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
Definition: LineIntersector.h:48
bool hasIntersection() const
Tests whether an intersection was found.
Definition: NodingIntersectionFinder.h:73
bool isDone() const override
Reports whether the client of this class needs to continue testing all intersections in an arrangemen...
Definition: NodingIntersectionFinder.h:159
void setFindAllIntersections(bool fAI)
Sets whether all intersections should be computed.
Definition: NodingIntersectionFinder.h:129
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:81
const std::vector< geom::Coordinate > & getIntersectionSegments() const
Gets the endpoints of the intersecting segments.
Definition: NodingIntersectionFinder.h:140
const geom::Coordinate & getInteriorIntersection() const
Gets the computed location of the intersection. Due to round-off, the location may not be exact.
Definition: NodingIntersectionFinder.h:85
NodingIntersectionFinder(algorithm::LineIntersector &newLi)
Creates an intersection finder which finds an interior intersection if one exists.
Definition: NodingIntersectionFinder.h:56
size_t count() const
Gets the count of intersections found.
Definition: NodingIntersectionFinder.h:96
Finds non-noded intersections in a set of SegmentStrings, if any exist.
Definition: NodingIntersectionFinder.h:46