65 double area(
QString* errorMsg = 0 )
const override;
82 QString* errorMsg = 0 )
const override;
91 static QgsPolygonV2* fromGeosPolygon(
const GEOSGeometry* geos );
93 static QgsPointV2 coordSeqPoint(
const GEOSCoordSequence* cs,
int i,
bool hasZ,
bool hasM );
95 static GEOSContextHandle_t getGEOSHandler();
98 mutable GEOSGeometry* mGeos;
99 const GEOSPreparedGeometry* mGeosPrepared;
122 void cacheGeos()
const;
125 static GEOSCoordSequence* createCoordinateSequence(
const QgsCurveV2* curve ,
double precision );
126 static QgsLineStringV2* sequenceToLinestring(
const GEOSGeometry* geos,
bool hasZ,
bool hasM );
127 static int numberOfGeometries( GEOSGeometry* g );
128 static GEOSGeometry* nodeGeometries(
const GEOSGeometry *splitLine,
const GEOSGeometry *geom );
135 static GEOSGeometry* createGeosPoint(
const QgsAbstractGeometryV2* point,
int coordDims ,
double precision );
140 int topologicalTestPointsSplit(
const GEOSGeometry* splitLine,
QList<QgsPointV2>& testPoints,
QString* errorMsg = 0 )
const;
141 GEOSGeometry* linePointDifference( GEOSGeometry* GEOSsplitPoint )
const;
146 static GEOSGeometry* reshapeLine(
const GEOSGeometry* line,
const GEOSGeometry* reshapeLineGeos,
double precision );
147 static GEOSGeometry* reshapePolygon(
const GEOSGeometry* polygon,
const GEOSGeometry* reshapeLineGeos ,
double precision );
148 static int lineContainedInLine(
const GEOSGeometry* line1,
const GEOSGeometry* line2 );
149 static int pointContainedInLine(
const GEOSGeometry* point,
const GEOSGeometry* line );
150 static int geomDigits(
const GEOSGeometry* geom );
158 explicit GEOSException(
const QString& theMsg )
160 if ( theMsg ==
"Unknown exception thrown" && lastMsg().
isNull() )
172 GEOSException(
const GEOSException &rhs )
179 if ( lastMsg() == msg )
180 lastMsg() = QString::null;
190 static QString& lastMsg() {
static QString _lastMsg;
return _lastMsg; }
virtual bool centroid(QgsPointV2 &pt, QString *errorMsg=0) const =0
virtual QgsAbstractGeometryV2 * buffer(double distance, int segments, QString *errorMsg=0) const =0
virtual QgsAbstractGeometryV2 * envelope(QString *errorMsg=0) const =0
virtual bool within(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual int splitGeometry(const QgsLineStringV2 &splitLine, QList< QgsAbstractGeometryV2 * > &newGeometries, bool topological, QList< QgsPointV2 > &topologyTestPoints, QString *errorMsg=0) const
virtual QString relate(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
Returns the Dimensional Extended 9 Intersection Model (DE-9IM) representation of the relationship bet...
Abstract base class for all geometries.
virtual bool pointOnSurface(QgsPointV2 &pt, QString *errorMsg=0) const =0
virtual double area(QString *errorMsg=0) const =0
virtual bool disjoint(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual void prepareGeometry()=0
virtual QgsAbstractGeometryV2 * intersection(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual bool isEmpty(QString *errorMsg) const =0
virtual QgsAbstractGeometryV2 * offsetCurve(double distance, int segments, int joinStyle, double mitreLimit, QString *errorMsg=0) const =0
virtual QgsAbstractGeometryV2 * simplify(double tolerance, QString *errorMsg=0) const =0
virtual bool isValid(QString *errorMsg=0) const =0
virtual QgsAbstractGeometryV2 * combine(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual QgsAbstractGeometryV2 * difference(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual double length(QString *errorMsg=0) const =0
Line string geometry type.
virtual QgsAbstractGeometryV2 * convexHull(QString *errorMsg=0) const =0
Does vector analysis using the geos library and handles import, export, exception handling*...
virtual QgsAbstractGeometryV2 * symDifference(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual QgsAbstractGeometryV2 * interpolate(double distance, QString *errorMsg=0) const =0
virtual bool crosses(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual bool touches(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual bool isEqual(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual void geometryChanged()=0
Contains geometry relation and modification algorithms.
Abstract base class for curved geometry type.
virtual bool intersects(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual bool overlaps(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
virtual double distance(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0
bool isNull(const QVariant &v)
virtual bool contains(const QgsAbstractGeometryV2 &geom, QString *errorMsg=0) const =0