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>
46class GEOS_DLL IMPredicate :
public BasicPredicate {
54 static constexpr int DIM_UNKNOWN = Dimension::DONTCARE;
66 virtual bool valueIM() = 0;
78 virtual bool isDetermined()
const = 0;
87 bool intersectsExteriorOf(
bool isA)
const;
89 bool isIntersects(Location locA, Location locB)
const;
98 intMatrix.
set(Location::EXTERIOR, Location::EXTERIOR, Dimension::A);
101 static bool isDimsCompatibleWithCovers(
int dim0,
int dim1);
103 void init(
int dA,
int dB)
override;
105 void updateDimension(Location locA, Location locB,
int dimension)
override;
107 bool isDimChanged(Location locA, Location locB,
int dimension)
const;
109 using TopologyPredicate::isKnown;
110 bool isKnown(Location locA, Location locB)
const;
112 bool isDimension(Location locA, Location locB,
int dimension)
const;
114 int getDimension(Location locA, Location locB)
const;
119 void finish()
override;
121 std::string toString()
const;
123 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
void set(Location row, Location column, int dimensionValue)
Changes the value of one of this IntersectionMatrixs elements.
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