22 #include <geos/algorithm/LineIntersector.h> 23 #include <geos/algorithm/BoundaryNodeRule.h> 24 #include <geos/noding/SegmentIntersector.h> 31 class BasicSegmentString;
34 class BoundaryNodeRule;
39 class MultiLineString;
43 class GeometryCollection;
100 bool isClosedEndpointsInInterior =
true;
101 bool isFindAllLocations =
false;
102 bool isSimpleResult =
false;
103 std::vector<geom::Coordinate> nonSimplePts;
104 bool computed =
false;
133 static std::vector<std::unique_ptr<noding::SegmentString>>
142 bool isClosedEndpointsInInterior;
143 bool isFindAll =
false;
145 std::vector<geom::Coordinate>& intersectionPts;
153 bool findIntersection(
168 bool isIntersectionEndpoint(
180 std::size_t intersectionVertexIndex(
185 NonSimpleIntersectionFinder(
186 bool p_isClosedEndpointsInInterior,
188 std::vector<geom::Coordinate>& p_intersectionPts)
189 : isClosedEndpointsInInterior(p_isClosedEndpointsInInterior)
190 , isFindAll(p_isFindAll)
191 , intersectionPts(p_intersectionPts)
199 bool hasIntersection()
const;
201 void processIntersections(
205 bool isDone()
const override;
222 :
IsSimpleOp(geom, algorithm::BoundaryNodeRule::getBoundaryRuleMod2())
233 , isClosedEndpointsInInterior(! p_boundaryNodeRule.isInBoundary(2))
234 , isFindAllLocations(false)
247 if (!geom)
return false;
248 return isSimple(*geom);
265 void setFindAllLocations(
bool isFindAll);
289 const std::vector<geom::Coordinate>& getNonSimpleLocations();
Definition: IsSimpleOp.h:95
IsSimpleOp(const geom::Geometry &geom)
Definition: IsSimpleOp.h:221
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
An interface for classes which represent a sequence of contiguous line segments.
Definition: SegmentString.h:46
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:188
IsSimpleOp(const geom::Geometry &geom, const algorithm::BoundaryNodeRule &p_boundaryNodeRule)
Definition: IsSimpleOp.h:231
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
Definition: LineIntersector.h:50
An interface for rules which determine whether node points which are in boundaries of lineal geometry...
Definition: BoundaryNodeRule.h:51
Basic namespace for all GEOS functionalities.
Definition: Angle.h:26
Definition: MultiPoint.h:54
Processes possible intersections detected by a Noder.
Definition: noding/SegmentIntersector.h:48