186 void geometryChanged()
override;
187 void prepareGeometry()
override;
201 std::unique_ptr< QgsAbstractGeometry > clip(
const QgsRectangle &rectangle, QString *errorMsg
SIP_OUT =
nullptr )
const;
227 QgsAbstractGeometry *buffer(
double distance,
int segments, QString *errorMsg =
nullptr )
const override;
229 QgsAbstractGeometry *simplify(
double tolerance, QString *errorMsg =
nullptr )
const override;
230 QgsAbstractGeometry *interpolate(
double distance, QString *errorMsg =
nullptr )
const override;
232 QgsPoint *centroid( QString *errorMsg =
nullptr )
const override;
233 QgsPoint *pointOnSurface( QString *errorMsg =
nullptr )
const override;
235 double distance(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
236 bool distanceWithin(
const QgsAbstractGeometry *geom,
double maxdistance, QString *errorMsg =
nullptr )
const override;
251 bool contains(
double x,
double y, QString *errorMsg
SIP_OUT =
nullptr )
const;
266 double distance(
double x,
double y, QString *errorMsg
SIP_OUT =
nullptr )
const;
310 double hausdorffDistanceDensify(
const QgsAbstractGeometry *geometry,
double densifyFraction, QString *errorMsg
SIP_OUT =
nullptr )
const;
361 bool intersects(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
362 bool touches(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
363 bool crosses(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
364 bool within(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
365 bool overlaps(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
366 bool contains(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
367 bool disjoint(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
368 QString relate(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
369 bool relatePattern(
const QgsAbstractGeometry *geom,
const QString &pattern, QString *errorMsg =
nullptr )
const override;
370 double area( QString *errorMsg =
nullptr )
const override;
371 double length( QString *errorMsg =
nullptr )
const override;
372 bool isValid( QString *errorMsg =
nullptr,
bool allowSelfTouchingHoles =
false,
QgsGeometry *errorLoc =
nullptr )
const override;
373 bool isEqual(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
374 bool isEmpty( QString *errorMsg =
nullptr )
const override;
375 bool isSimple( QString *errorMsg =
nullptr )
const override;
378 QVector<QgsGeometry> &newGeometries,
381 QString *errorMsg =
nullptr,
bool skipIntersectionCheck =
false )
const override;
396 std::unique_ptr< QgsAbstractGeometry > singleSidedBuffer(
double distance,
int segments,
Qgis::BufferSide side,
398 QString *errorMsg
SIP_OUT =
nullptr )
const;
540 std::unique_ptr< QgsAbstractGeometry > node( QString *errorMsg
SIP_OUT =
nullptr )
const;
559 std::unique_ptr< QgsAbstractGeometry > sharedPaths(
const QgsAbstractGeometry *other, QString *errorMsg
SIP_OUT =
nullptr )
const;
581 std::unique_ptr< QgsAbstractGeometry > mergeLines( QString *errorMsg
SIP_OUT =
nullptr )
const;
593 std::unique_ptr< QgsAbstractGeometry > closestPoint(
const QgsGeometry &other, QString *errorMsg
SIP_OUT =
nullptr )
const;
605 std::unique_ptr< QgsAbstractGeometry > shortestLine(
const QgsGeometry &other, QString *errorMsg
SIP_OUT =
nullptr )
const;
618 std::unique_ptr< QgsAbstractGeometry > shortestLine(
const QgsAbstractGeometry *other, QString *errorMsg
SIP_OUT =
nullptr )
const;
631 double lineLocatePoint(
const QgsPoint &point, QString *errorMsg
SIP_OUT =
nullptr )
const;
651 double lineLocatePoint(
double x,
double y, QString *errorMsg
SIP_OUT =
nullptr )
const;
663 SIP_SKIP static QgsGeometry polygonize(
const QVector<const QgsAbstractGeometry *> &geometries, QString *errorMsg =
nullptr );
686 std::unique_ptr< QgsAbstractGeometry > voronoiDiagram(
const QgsAbstractGeometry *extent =
nullptr,
double tolerance = 0.0,
bool edgesOnly =
false, QString *errorMsg
SIP_OUT =
nullptr )
const;
704 std::unique_ptr< QgsAbstractGeometry > delaunayTriangulation(
double tolerance = 0.0,
bool edgesOnly =
false, QString *errorMsg
SIP_OUT =
nullptr )
const;
816 std::unique_ptr< QgsAbstractGeometry > unionCoverage( QString *errorMsg
SIP_OUT =
nullptr )
const;
852 SIP_SKIP static QgsPoint coordSeqPoint(
const GEOSCoordSequence *cs,
int i,
bool hasZ,
bool hasM );
860 mutable geos::unique_ptr mGeos;
861 geos::prepared_unique_ptr mGeosPrepared;
862 double mPrecision = 0.0;
894 bool relation(
const QgsAbstractGeometry *geom, Relation r, QString *errorMsg =
nullptr )
const;
895 static GEOSCoordSequence *createCoordinateSequence(
const QgsCurve *curve,
double precision,
bool forceClose =
false );
896 static std::unique_ptr< QgsLineString > sequenceToLinestring(
const GEOSGeometry *
geos,
bool hasZ,
bool hasM );
899 int mergeGeometriesMultiTypeSplit( std::vector<geos::unique_ptr> &splitResult )
const;
904 static geos::unique_ptr createGeosCollection(
int typeId, std::vector<geos::unique_ptr> &geoms );
913 geos::unique_ptr linePointDifference(
GEOSGeometry *GEOSsplitPoint )
const;
Used to create and store a proj context object, correctly freeing the context upon destruction.
static GEOSContextHandle_t get()
Returns a thread local instance of a GEOS context, safe for use in the current thread.