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);
165 static bool relate(
const Geometry* a,
const Geometry* b, TopologyPredicate& pred);
191 static bool relate(
const Geometry* a,
const Geometry* b,
const std::string& imPattern);
201 static std::unique_ptr<IntersectionMatrix> relate(
const Geometry* a,
const Geometry* b);
221 static std::unique_ptr<RelateNG> prepare(
const Geometry* a);
241 std::unique_ptr<IntersectionMatrix> evaluate(
const Geometry* b);
254 bool evaluate(
const Geometry* b,
const std::string& imPattern);
264 bool evaluate(
const Geometry* b, TopologyPredicate& predicate);
287 bool relate(
const Geometry* a,
const std::string& pat);
288 std::unique_ptr<IntersectionMatrix> relate(
const Geometry* a);
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
static const BoundaryNodeRule & getBoundaryRuleMod2()
The Mod-2 Boundary Node Rule (which is the rule specified in the OGC SFS).
Intersects two sets of SegmentStrings using a index based on MonotoneChains and a SpatialIndex...
Definition: MCIndexSegmentSetMutualIntersector.h:47
An interface for rules which determine whether node points which are in boundaries of lineal geometry...
Definition: BoundaryNodeRule.h:52
Definition: RelateNG.h:93
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple...
Definition: LinearRing.h:54