68 double area(
QString* errorMsg =
nullptr )
const override;
85 QString* errorMsg =
nullptr )
const override;
106 static QgsPolygonV2* fromGeosPolygon(
const GEOSGeometry* geos );
108 static QgsPointV2 coordSeqPoint(
const GEOSCoordSequence* cs,
int i,
bool hasZ,
bool hasM );
110 static GEOSContextHandle_t getGEOSHandler();
113 mutable GEOSGeometry* mGeos;
114 const GEOSPreparedGeometry* mGeosPrepared;
137 void cacheGeos()
const;
140 static GEOSCoordSequence* createCoordinateSequence(
const QgsCurveV2* curve ,
double precision );
141 static QgsLineStringV2* sequenceToLinestring(
const GEOSGeometry* geos,
bool hasZ,
bool hasM );
142 static int numberOfGeometries( GEOSGeometry* g );
143 static GEOSGeometry* nodeGeometries(
const GEOSGeometry *splitLine,
const GEOSGeometry *geom );
150 static GEOSGeometry* createGeosPoint(
const QgsAbstractGeometryV2* point,
int coordDims ,
double precision );
155 int topologicalTestPointsSplit(
const GEOSGeometry* splitLine,
QgsPointSequenceV2 &testPoints,
QString* errorMsg =
nullptr )
const;
156 GEOSGeometry* linePointDifference( GEOSGeometry* GEOSsplitPoint )
const;
161 static GEOSGeometry* reshapeLine(
const GEOSGeometry* line,
const GEOSGeometry* reshapeLineGeos,
double precision );
162 static GEOSGeometry* reshapePolygon(
const GEOSGeometry* polygon,
const GEOSGeometry* reshapeLineGeos ,
double precision );
163 static int lineContainedInLine(
const GEOSGeometry* line1,
const GEOSGeometry* line2 );
164 static int pointContainedInLine(
const GEOSGeometry* point,
const GEOSGeometry* line );
165 static int geomDigits(
const GEOSGeometry* geom );
173 explicit GEOSException(
const QString& theMsg )
175 if ( theMsg ==
"Unknown exception thrown" && lastMsg().
isNull() )
187 GEOSException(
const GEOSException &rhs )
194 if ( lastMsg() == msg )
195 lastMsg() = QString::null;
205 static QString& lastMsg() {
static QString _lastMsg;
return _lastMsg; }
virtual QgsAbstractGeometryV2 * symDifference(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual QgsAbstractGeometryV2 * difference(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual int splitGeometry(const QgsLineStringV2 &splitLine, QList< QgsAbstractGeometryV2 * > &newGeometries, bool topological, QgsPointSequenceV2 &topologyTestPoints, QString *errorMsg=nullptr) const
virtual bool intersects(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual bool isEqual(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual double distance(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual bool touches(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
Abstract base class for all geometries.
A geometry is the spatial representation of a feature.
virtual double length(QString *errorMsg=nullptr) const =0
virtual bool overlaps(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual void prepareGeometry()=0
virtual bool isEmpty(QString *errorMsg) const =0
virtual bool centroid(QgsPointV2 &pt, QString *errorMsg=nullptr) const =0
virtual QgsAbstractGeometryV2 * buffer(double distance, int segments, QString *errorMsg=nullptr) const =0
Line string geometry type, with support for z-dimension and m-values.
virtual QgsAbstractGeometryV2 * offsetCurve(double distance, int segments, int joinStyle, double mitreLimit, QString *errorMsg=nullptr) const =0
virtual QString relate(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
Returns the Dimensional Extended 9 Intersection Model (DE-9IM) representation of the relationship bet...
Point geometry type, with support for z-dimension and m-values.
virtual bool crosses(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual bool contains(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual double area(QString *errorMsg=nullptr) const =0
virtual QgsAbstractGeometryV2 * simplify(double tolerance, QString *errorMsg=nullptr) const =0
Does vector analysis using the geos library and handles import, export, exception handling*...
virtual QgsAbstractGeometryV2 * convexHull(QString *errorMsg=nullptr) const =0
virtual void geometryChanged()=0
virtual QgsAbstractGeometryV2 * intersection(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual bool relatePattern(const QgsAbstractGeometryV2 &geom, const QString &pattern, QString *errorMsg=nullptr) const =0
Tests whether two geometries are related by a specified Dimensional Extended 9 Intersection Model (DE...
virtual bool isValid(QString *errorMsg=nullptr) const =0
virtual bool pointOnSurface(QgsPointV2 &pt, QString *errorMsg=nullptr) const =0
Contains geometry relation and modification algorithms.
virtual bool within(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
Abstract base class for curved geometry type.
virtual bool disjoint(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
virtual QgsAbstractGeometryV2 * combine(const QgsAbstractGeometryV2 &geom, QString *errorMsg=nullptr) const =0
bool isNull(const QVariant &v)
virtual QgsAbstractGeometryV2 * interpolate(double distance, QString *errorMsg=nullptr) const =0
virtual QgsAbstractGeometryV2 * envelope(QString *errorMsg=nullptr) const =0