69 double area(
QString* errorMsg =
nullptr )
const override;
86 QString* errorMsg =
nullptr )
const override;
122 double lineLocatePoint(
const QgsPointV2& point,
QString* errorMsg =
nullptr )
const;
128 static QgsPolygonV2* fromGeosPolygon(
const GEOSGeometry* geos );
130 static QgsPointV2 coordSeqPoint(
const GEOSCoordSequence* cs,
int i,
bool hasZ,
bool hasM );
132 static GEOSContextHandle_t getGEOSHandler();
135 mutable GEOSGeometry* mGeos;
136 const GEOSPreparedGeometry* mGeosPrepared;
159 void cacheGeos()
const;
162 static GEOSCoordSequence* createCoordinateSequence(
const QgsCurveV2* curve ,
double precision,
bool forceClose =
false );
163 static QgsLineStringV2* sequenceToLinestring(
const GEOSGeometry* geos,
bool hasZ,
bool hasM );
164 static int numberOfGeometries( GEOSGeometry* g );
165 static GEOSGeometry* nodeGeometries(
const GEOSGeometry *splitLine,
const GEOSGeometry *geom );
172 static GEOSGeometry* createGeosPoint(
const QgsAbstractGeometryV2* point,
int coordDims ,
double precision );
177 int topologicalTestPointsSplit(
const GEOSGeometry* splitLine,
QgsPointSequenceV2 &testPoints,
QString* errorMsg =
nullptr )
const;
178 GEOSGeometry* linePointDifference( GEOSGeometry* GEOSsplitPoint )
const;
183 static GEOSGeometry* reshapeLine(
const GEOSGeometry* line,
const GEOSGeometry* reshapeLineGeos,
double precision );
184 static GEOSGeometry* reshapePolygon(
const GEOSGeometry* polygon,
const GEOSGeometry* reshapeLineGeos ,
double precision );
185 static int lineContainedInLine(
const GEOSGeometry* line1,
const GEOSGeometry* line2 );
186 static int pointContainedInLine(
const GEOSGeometry* point,
const GEOSGeometry* line );
187 static int geomDigits(
const GEOSGeometry* geom );
195 explicit GEOSException(
const QString& theMsg )
197 if ( theMsg ==
"Unknown exception thrown" && lastMsg().
isNull() )
209 GEOSException(
const GEOSException &rhs )
216 if ( lastMsg() == msg )
217 lastMsg() = QString::null;
227 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 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 int splitGeometry(const QgsLineStringV2 &splitLine, QList< QgsAbstractGeometryV2 *> &newGeometries, bool topological, QgsPointSequenceV2 &topologyTestPoints, QString *errorMsg=nullptr) const
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