178 void geometryChanged()
override;
179 void prepareGeometry()
override;
188 std::unique_ptr< QgsAbstractGeometry > clip(
const QgsRectangle &rectangle, QString *errorMsg =
nullptr )
const;
213 QgsAbstractGeometry *buffer(
double distance,
int segments, QString *errorMsg =
nullptr )
const override;
215 QgsAbstractGeometry *simplify(
double tolerance, QString *errorMsg =
nullptr )
const override;
216 QgsAbstractGeometry *interpolate(
double distance, QString *errorMsg =
nullptr )
const override;
218 QgsPoint *centroid( QString *errorMsg =
nullptr )
const override;
219 QgsPoint *pointOnSurface( QString *errorMsg =
nullptr )
const override;
221 double distance(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
222 bool distanceWithin(
const QgsAbstractGeometry *geom,
double maxdistance, QString *errorMsg =
nullptr )
const override;
231 bool contains(
double x,
double y, QString *errorMsg =
nullptr )
const;
240 double distance(
double x,
double y, QString *errorMsg =
nullptr )
const;
256 double hausdorffDistance(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const;
273 double hausdorffDistanceDensify(
const QgsAbstractGeometry *geom,
double densifyFraction, QString *errorMsg =
nullptr )
const;
287 double frechetDistance(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const;
311 double frechetDistanceDensify(
const QgsAbstractGeometry *geom,
double densifyFraction, QString *errorMsg =
nullptr )
const;
313 bool intersects(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
314 bool touches(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
315 bool crosses(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
316 bool within(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
317 bool overlaps(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
318 bool contains(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
319 bool disjoint(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
320 QString relate(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
321 bool relatePattern(
const QgsAbstractGeometry *geom,
const QString &pattern, QString *errorMsg =
nullptr )
const override;
322 double area( QString *errorMsg =
nullptr )
const override;
323 double length( QString *errorMsg =
nullptr )
const override;
324 bool isValid( QString *errorMsg =
nullptr,
bool allowSelfTouchingHoles =
false,
QgsGeometry *errorLoc =
nullptr )
const override;
325 bool isEqual(
const QgsAbstractGeometry *geom, QString *errorMsg =
nullptr )
const override;
326 bool isEmpty( QString *errorMsg =
nullptr )
const override;
327 bool isSimple( QString *errorMsg =
nullptr )
const override;
330 QVector<QgsGeometry> &newGeometries,
333 QString *errorMsg =
nullptr,
bool skipIntersectionCheck =
false )
const override;
349 std::unique_ptr< QgsAbstractGeometry > singleSidedBuffer(
double distance,
int segments,
Qgis::BufferSide side,
351 QString *errorMsg =
nullptr )
const;
377 std::unique_ptr< QgsAbstractGeometry > maximumInscribedCircle(
double tolerance, QString *errorMsg =
nullptr )
const;
402 std::unique_ptr< QgsAbstractGeometry > largestEmptyCircle(
double tolerance,
const QgsAbstractGeometry *boundary =
nullptr, QString *errorMsg =
nullptr )
const;
418 std::unique_ptr< QgsAbstractGeometry > minimumWidth( QString *errorMsg =
nullptr )
const;
441 double minimumClearance( QString *errorMsg =
nullptr )
const;
454 std::unique_ptr< QgsAbstractGeometry > minimumClearanceLine( QString *errorMsg =
nullptr )
const;
466 std::unique_ptr< QgsAbstractGeometry > node( QString *errorMsg =
nullptr )
const;
482 std::unique_ptr< QgsAbstractGeometry > sharedPaths(
const QgsAbstractGeometry *other, QString *errorMsg =
nullptr )
const;
501 QgsGeometry mergeLines( QString *errorMsg =
nullptr )
const;
532 double lineLocatePoint(
const QgsPoint &point, QString *errorMsg =
nullptr )
const;
546 double lineLocatePoint(
double x,
double y, QString *errorMsg =
nullptr )
const;
556 static QgsGeometry polygonize(
const QVector<const QgsAbstractGeometry *> &geometries, QString *errorMsg =
nullptr );
572 QgsGeometry voronoiDiagram(
const QgsAbstractGeometry *extent =
nullptr,
double tolerance = 0.0,
bool edgesOnly =
false, QString *errorMsg =
nullptr )
const;
583 QgsGeometry delaunayTriangulation(
double tolerance = 0.0,
bool edgesOnly =
false, QString *errorMsg =
nullptr )
const;
597 std::unique_ptr< QgsAbstractGeometry > constrainedDelaunayTriangulation( QString *errorMsg =
nullptr )
const;
620 QgsAbstractGeometry *concaveHull(
double targetPercent,
bool allowHoles =
false, QString *errorMsg =
nullptr )
const;
641 Qgis::CoverageValidityResult validateCoverage(
double gapWidth, std::unique_ptr< QgsAbstractGeometry > *invalidEdges, QString *errorMsg =
nullptr )
const;
664 std::unique_ptr< QgsAbstractGeometry > simplifyCoverageVW(
double tolerance,
bool preserveBoundary, QString *errorMsg =
nullptr )
const;
677 std::unique_ptr< QgsAbstractGeometry > unionCoverage( QString *errorMsg =
nullptr )
const;
683 static std::unique_ptr< QgsAbstractGeometry > fromGeos(
const GEOSGeometry *
geos );
684 static std::unique_ptr< QgsPolygon > fromGeosPolygon(
const GEOSGeometry *
geos );
704 static QgsPoint coordSeqPoint(
const GEOSCoordSequence *cs,
int i,
bool hasZ,
bool hasM );
707 mutable geos::unique_ptr mGeos;
708 geos::prepared_unique_ptr mGeosPrepared;
709 double mPrecision = 0.0;
741 bool relation(
const QgsAbstractGeometry *geom, Relation r, QString *errorMsg =
nullptr )
const;
742 static GEOSCoordSequence *createCoordinateSequence(
const QgsCurve *curve,
double precision,
bool forceClose =
false );
743 static std::unique_ptr< QgsLineString > sequenceToLinestring(
const GEOSGeometry *
geos,
bool hasZ,
bool hasM );
746 int mergeGeometriesMultiTypeSplit( std::vector<geos::unique_ptr> &splitResult )
const;
751 static geos::unique_ptr createGeosCollection(
int typeId, std::vector<geos::unique_ptr> &geoms );
760 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.