87 using CoordinateXY = geos::geom::CoordinateXY;
100 RelateGeometry geomA;
101 std::unique_ptr<MCIndexSegmentSetMutualIntersector> edgeMutualInt =
nullptr;
106 : boundaryNodeRule(bnRule)
107 , geomA(inputA, isPrepared, bnRule)
111 :
RelateNG(inputA, isPrepared, BoundaryNodeRule::getBoundaryRuleMod2())
114 bool hasRequiredEnvelopeInteraction(
const Geometry* b, TopologyPredicate& predicate);
116 bool finishValue(TopologyPredicate& predicate);
118 void computePP(RelateGeometry& geomB, TopologyComputer& topoComputer);
120 void computeAtPoints(RelateGeometry& geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
122 bool computePoints(RelateGeometry& geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
124 void computePoint(
bool isA,
const CoordinateXY* pt, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
126 bool computeLineEnds(RelateGeometry& geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
141 bool computeLineEnd(RelateGeometry& geom,
bool isA,
const CoordinateXY* pt, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
143 bool computeAreaVertex(RelateGeometry& geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
145 bool computeAreaVertex(RelateGeometry& geom,
bool isA,
const LinearRing* ring, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
147 void computeAtEdges(RelateGeometry& geomB, TopologyComputer& topoComputer);
149 void computeEdgesAll(std::vector<const SegmentString*>& edgesB,
const Envelope* envInt, EdgeSegmentIntersector& intersector);
151 void computeEdgesMutual(std::vector<const SegmentString*>& edgesB,
const Envelope* envInt, EdgeSegmentIntersector& intersector);
288 bool relate(
const Geometry* a,
const std::string& pat);
289 std::unique_ptr<IntersectionMatrix> relate(
const Geometry* a);