18 #include <geos/export.h>
19 #include <geos/geom/Coordinate.h>
20 #include <geos/noding/MCIndexSegmentSetMutualIntersector.h>
21 #include <geos/operation/relateng/RelateGeometry.h>
39 class TopologyPredicate;
40 class TopologyComputer;
41 class EdgeSegmentIntersector;
52 using geos::geom::CoordinateXY;
100 std::unique_ptr<MCIndexSegmentSetMutualIntersector> edgeMutualInt =
nullptr;
105 : boundaryNodeRule(bnRule)
106 , geomA(inputA, isPrepared, bnRule)
113 bool hasRequiredEnvelopeInteraction(
const Geometry* b, TopologyPredicate& predicate);
115 bool finishValue(TopologyPredicate& predicate);
117 void computePP(RelateGeometry& geomB, TopologyComputer& topoComputer);
119 void computeAtPoints(RelateGeometry& geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
121 bool computePoints(RelateGeometry& geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
123 void computePoint(
bool isA,
const CoordinateXY* pt, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
125 bool computeLineEnds(RelateGeometry& geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
140 bool computeLineEnd(RelateGeometry& geom,
bool isA,
const CoordinateXY* pt, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
142 bool computeAreaVertex(RelateGeometry& geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
144 bool computeAreaVertex(RelateGeometry& geom,
bool isA,
const LinearRing* ring, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
146 void computeAtEdges(RelateGeometry& geomB, TopologyComputer& topoComputer);
148 void computeEdgesAll(std::vector<const SegmentString*>& edgesB,
const Envelope* envInt, EdgeSegmentIntersector& intersector);
150 void computeEdgesMutual(std::vector<const SegmentString*>& edgesB,
const Envelope* envInt, EdgeSegmentIntersector& intersector);
287 bool relate(
const Geometry* a,
const std::string& pat);
288 std::unique_ptr<IntersectionMatrix> relate(
const Geometry* a);
An interface for rules which determine whether node points which are in boundaries of lineal geometry...
Definition: BoundaryNodeRule.h:52
static const BoundaryNodeRule & getBoundaryRuleMod2()
The Mod-2 Boundary Node Rule (which is the rule specified in the OGC SFS).
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:59
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:197
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple.
Definition: LinearRing.h:54
Intersects two sets of SegmentStrings using a index based on MonotoneChains and a SpatialIndex.
Definition: MCIndexSegmentSetMutualIntersector.h:47
Definition: RelateNG.h:93
static bool relate(const Geometry *a, const Geometry *b, TopologyPredicate &pred)
static bool relate(const Geometry *a, const Geometry *b, TopologyPredicate &pred, const BoundaryNodeRule &bnRule)
bool evaluate(const Geometry *b, const std::string &imPattern)
bool evaluate(const Geometry *b, TopologyPredicate &predicate)
static std::unique_ptr< RelateNG > prepare(const Geometry *a)
std::unique_ptr< IntersectionMatrix > evaluate(const Geometry *b)
static std::unique_ptr< IntersectionMatrix > relate(const Geometry *a, const Geometry *b)
static std::unique_ptr< RelateNG > prepare(const Geometry *a, const BoundaryNodeRule &bnRule)
static bool relate(const Geometry *a, const Geometry *b, const std::string &imPattern)
static std::unique_ptr< IntersectionMatrix > relate(const Geometry *a, const Geometry *b, const BoundaryNodeRule &bnRule)
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25