18#include <geos/geom/Location.h>
19#include <geos/geom/Dimension.h>
20#include <geos/geom/IntersectionMatrix.h>
21#include <geos/operation/relateng/BasicPredicate.h>
22#include <geos/export.h>
39class GEOS_DLL IMPredicate :
public BasicPredicate {
52 static constexpr int DIM_UNKNOWN = Dimension::DONTCARE;
56 IntersectionMatrix intMatrix;
64 virtual bool valueIM() = 0;
76 virtual bool isDetermined()
const = 0;
85 bool intersectsExteriorOf(
bool isA)
const;
87 bool isIntersects(Location locA, Location locB)
const;
96 intMatrix.set(Location::EXTERIOR, Location::EXTERIOR, Dimension::A);
99 static bool isDimsCompatibleWithCovers(
int dim0,
int dim1);
101 void init(
int dA,
int dB)
override;
103 void updateDimension(Location locA, Location locB,
int dimension)
override;
105 bool isDimChanged(Location locA, Location locB,
int dimension)
const;
107 using TopologyPredicate::isKnown;
108 bool isKnown(Location locA, Location locB)
const;
110 bool isDimension(Location locA, Location locB,
int dimension)
const;
112 int getDimension(Location locA, Location locB)
const;
117 void finish()
override;
119 std::string toString()
const;
121 friend std::ostream& operator<<(std::ostream& os,
const IMPredicate& imp);
Definition Dimension.h:27
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition Envelope.h:59
Implementation of Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix.
Definition IntersectionMatrix.h:51
Location
Constants representing the location of a point relative to a geometry.
Definition Location.h:32
Basic namespace for all GEOS functionalities.
Definition geos.h:39