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;
611 std::unique_ptr< QgsAbstractGeometry > closestPoint(
const QgsGeometry &other, QString *errorMsg
SIP_OUT =
nullptr )
const;
623 std::unique_ptr< QgsAbstractGeometry > shortestLine(
const QgsGeometry &other, QString *errorMsg
SIP_OUT =
nullptr )
const;
636 std::unique_ptr< QgsAbstractGeometry > shortestLine(
const QgsAbstractGeometry *other, QString *errorMsg
SIP_OUT =
nullptr )
const;
649 double lineLocatePoint(
const QgsPoint &point, QString *errorMsg
SIP_OUT =
nullptr )
const;
669 double lineLocatePoint(
double x,
double y, QString *errorMsg
SIP_OUT =
nullptr )
const;
681 SIP_SKIP static QgsGeometry polygonize(
const QVector<const QgsAbstractGeometry *> &geometries, QString *errorMsg =
nullptr );
704 std::unique_ptr< QgsAbstractGeometry > voronoiDiagram(
const QgsAbstractGeometry *extent =
nullptr,
double tolerance = 0.0,
bool edgesOnly =
false, QString *errorMsg
SIP_OUT =
nullptr )
const;
722 std::unique_ptr< QgsAbstractGeometry > delaunayTriangulation(
double tolerance = 0.0,
bool edgesOnly =
false, QString *errorMsg
SIP_OUT =
nullptr )
const;
834 std::unique_ptr< QgsAbstractGeometry > unionCoverage( QString *errorMsg
SIP_OUT =
nullptr )
const;
870 SIP_SKIP static QgsPoint coordSeqPoint(
const GEOSCoordSequence *cs,
int i,
bool hasZ,
bool hasM );
878 mutable geos::unique_ptr mGeos;
879 geos::prepared_unique_ptr mGeosPrepared;
880 double mPrecision = 0.0;
912 bool relation(
const QgsAbstractGeometry *geom, Relation r, QString *errorMsg =
nullptr )
const;
913 static GEOSCoordSequence *createCoordinateSequence(
const QgsCurve *curve,
double precision,
bool forceClose =
false );
914 static std::unique_ptr< QgsLineString > sequenceToLinestring(
const GEOSGeometry *
geos,
bool hasZ,
bool hasM );
917 int mergeGeometriesMultiTypeSplit( std::vector<geos::unique_ptr> &splitResult )
const;
922 static geos::unique_ptr createGeosCollection(
int typeId, std::vector<geos::unique_ptr> &geoms );
931 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.