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;
238 QgsAbstractGeometry *simplify(
double tolerance, QString *errorMsg =
nullptr )
const override;
239 QgsAbstractGeometry *interpolate(
double distance, QString *errorMsg =
nullptr )
const override;
241 QgsPoint *centroid( QString *errorMsg =
nullptr )
const override;
242 QgsPoint *pointOnSurface( QString *errorMsg =
nullptr )
const override;
244 double distance(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
245 bool distanceWithin(
const QgsAbstractGeometry *geom,
double maxdistance, QString *errorMsg =
nullptr )
const override;
260 bool contains(
double x,
double y, QString *errorMsg
SIP_OUT =
nullptr )
const;
275 double distance(
double x,
double y, QString *errorMsg
SIP_OUT =
nullptr )
const;
319 double hausdorffDistanceDensify(
const QgsAbstractGeometry *geometry,
double densifyFraction, QString *errorMsg
SIP_OUT =
nullptr )
const;
370 bool intersects(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
371 bool touches(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
372 bool crosses(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
373 bool within(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
374 bool overlaps(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
375 bool contains(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
376 bool disjoint(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
377 QString relate(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
378 bool relatePattern(
const QgsAbstractGeometry *geom,
const QString &pattern, QString *errorMsg =
nullptr )
const override;
379 double area( QString *errorMsg =
nullptr )
const override;
380 double length( QString *errorMsg =
nullptr )
const override;
381 bool isValid( QString *errorMsg =
nullptr,
bool allowSelfTouchingHoles =
false,
QgsGeometry *errorLoc =
nullptr )
const override;
382 bool isEqual(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
383 bool isEmpty( QString *errorMsg =
nullptr )
const override;
384 bool isSimple( QString *errorMsg =
nullptr )
const override;
387 QVector<QgsGeometry> &newGeometries,
390 QString *errorMsg =
nullptr,
bool skipIntersectionCheck =
false )
const override;
398 SIP_SKIP static geos::unique_ptr offsetCurve(
const GEOSGeometry *geometry,
double distance,
int segments,
Qgis::JoinStyle joinStyle,
double miterLimit, QString *errorMsg =
nullptr );
413 std::unique_ptr< QgsAbstractGeometry > singleSidedBuffer(
double distance,
int segments,
Qgis::BufferSide side,
415 QString *errorMsg
SIP_OUT =
nullptr )
const;
557 std::unique_ptr< QgsAbstractGeometry > node( QString *errorMsg
SIP_OUT =
nullptr )
const;
576 std::unique_ptr< QgsAbstractGeometry > sharedPaths(
const QgsAbstractGeometry *other, QString *errorMsg
SIP_OUT =
nullptr )
const;
598 std::unique_ptr< QgsAbstractGeometry > mergeLines( QString *errorMsg
SIP_OUT =
nullptr )
const;
610 std::unique_ptr< QgsAbstractGeometry > closestPoint(
const QgsGeometry &other, QString *errorMsg
SIP_OUT =
nullptr )
const;
622 std::unique_ptr< QgsAbstractGeometry > shortestLine(
const QgsGeometry &other, QString *errorMsg
SIP_OUT =
nullptr )
const;
635 std::unique_ptr< QgsAbstractGeometry > shortestLine(
const QgsAbstractGeometry *other, QString *errorMsg
SIP_OUT =
nullptr )
const;
648 double lineLocatePoint(
const QgsPoint &point, QString *errorMsg
SIP_OUT =
nullptr )
const;
668 double lineLocatePoint(
double x,
double y, QString *errorMsg
SIP_OUT =
nullptr )
const;
680 SIP_SKIP static QgsGeometry polygonize(
const QVector<const QgsAbstractGeometry *> &geometries, QString *errorMsg =
nullptr );
703 std::unique_ptr< QgsAbstractGeometry > voronoiDiagram(
const QgsAbstractGeometry *extent =
nullptr,
double tolerance = 0.0,
bool edgesOnly =
false, QString *errorMsg
SIP_OUT =
nullptr )
const;
721 std::unique_ptr< QgsAbstractGeometry > delaunayTriangulation(
double tolerance = 0.0,
bool edgesOnly =
false, QString *errorMsg
SIP_OUT =
nullptr )
const;
833 std::unique_ptr< QgsAbstractGeometry > unionCoverage( QString *errorMsg
SIP_OUT =
nullptr )
const;
869 SIP_SKIP static QgsPoint coordSeqPoint(
const GEOSCoordSequence *cs,
int i,
bool hasZ,
bool hasM );
877 mutable geos::unique_ptr mGeos;
878 geos::prepared_unique_ptr mGeosPrepared;
879 double mPrecision = 0.0;
911 bool relation(
const QgsAbstractGeometry *geom, Relation r, QString *errorMsg =
nullptr )
const;
912 static GEOSCoordSequence *createCoordinateSequence(
const QgsCurve *curve,
double precision,
bool forceClose =
false );
913 static std::unique_ptr< QgsLineString > sequenceToLinestring(
const GEOSGeometry *
geos,
bool hasZ,
bool hasM );
916 int mergeGeometriesMultiTypeSplit( std::vector<geos::unique_ptr> &splitResult )
const;
921 static geos::unique_ptr createGeosCollection(
int typeId, std::vector<geos::unique_ptr> &geoms );
930 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.