QGIS/python/core/auto_generated/geometry/qgsgeometryengine.sip.in
2022-09-10 06:00:45 +10:00

364 lines
13 KiB
Plaintext

/************************************************************************
* This file has been generated automatically from *
* *
* src/core/geometry/qgsgeometryengine.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
class QgsGeometryEngine
{
%Docstring(signature="appended")
A geometry engine is a low-level representation of a :py:class:`QgsAbstractGeometry` object, optimised for use with external
geometry libraries such as GEOS.
:py:class:`QgsGeometryEngine` objects provide a mechanism for optimized evaluation of geometric algorithms, including spatial relationships
between geometries and operations such as buffers or clipping.
:py:class:`QgsGeometryEngine` objects are not created directly, but are instead created by calling :py:func:`QgsGeometry.createGeometryEngine()`.
Many methods available in the :py:class:`QgsGeometryEngine` class can benefit from pre-preparing geometries. For instance, whenever
a large number of spatial relationships will be tested (such as calling :py:func:`~intersects`, :py:func:`~within`, etc) then the
geometry should first be prepared by calling :py:func:`~prepareGeometry` before performing the tests.
Example
-------
.. code-block:: python
# polygon_geometry contains a complex polygon, with many vertices
polygon_geometry = QgsGeometry.fromWkt('Polygon((...))')
# create a QgsGeometryEngine representation of the polygon
polygon_geometry_engine = QgsGeometry.createGeometryEngine(polygon_geometry.constGet())
# since we'll be performing many intersects tests, we can speed up these tests considerably
# by first "preparing" the geometry engine
polygon_geometry_engine.prepareGeometry()
# now we are ready to quickly test intersection against many other objects
for feature in my_layer.getFeatures():
feature_geometry = feature.geometry()
# test whether the feature's geometry intersects our original complex polygon
if polygon_geometry_engine.intersects(feature_geometry.constGet()):
print('feature intersects the polygon!')
:py:class:`QgsGeometryEngine` operations are backed by the GEOS library (https://trac.osgeo.org/geos/).
.. versionadded:: 2.10
%End
%TypeHeaderCode
#include "qgsgeometryengine.h"
%End
public:
enum EngineOperationResult
{
Success,
NothingHappened,
MethodNotImplemented,
EngineError,
NodedGeometryError,
InvalidBaseGeometry,
InvalidInput,
SplitCannotSplitPoint,
};
virtual ~QgsGeometryEngine();
virtual void geometryChanged() = 0;
%Docstring
Should be called whenever the geometry associated with the engine
has been modified and the engine must be updated to suit.
%End
virtual void prepareGeometry() = 0;
%Docstring
Prepares the geometry, so that subsequent calls to spatial relation methods
are much faster.
This should be called for any geometry which is used for multiple relation
tests against other geometries.
.. seealso:: :py:func:`geometryChanged`
%End
virtual QgsAbstractGeometry *intersection( const QgsAbstractGeometry *geom, QString *errorMsg = 0, const QgsGeometryParameters &parameters = QgsGeometryParameters() ) const = 0 /Factory/;
%Docstring
Calculate the intersection of this and ``geom``.
:param geom: geometry to perform the operation
:param errorMsg: Error message returned by GEOS
:param parameters: can be used to specify parameters which control the intersection results (since QGIS 3.28)
.. versionadded:: 3.0
%End
virtual QgsAbstractGeometry *difference( const QgsAbstractGeometry *geom, QString *errorMsg = 0, const QgsGeometryParameters &parameters = QgsGeometryParameters() ) const = 0 /Factory/;
%Docstring
Calculate the difference of this and ``geom``.
:param geom: geometry to perform the operation
:param errorMsg: Error message returned by GEOS
:param parameters: can be used to specify parameters which control the difference results (since QGIS 3.28)
.. versionadded:: 3.0
%End
virtual QgsAbstractGeometry *combine( const QgsAbstractGeometry *geom, QString *errorMsg = 0, const QgsGeometryParameters &parameters = QgsGeometryParameters() ) const = 0 /Factory/;
%Docstring
Calculate the combination of this and ``geom``.
:param geom: geometry to perform the operation
:param errorMsg: Error message returned by GEOS
:param parameters: can be used to specify parameters which control the union results (since QGIS 3.28)
.. versionadded:: 3.0
%End
virtual QgsAbstractGeometry *combine( const QVector<QgsAbstractGeometry *> &geomList, QString *errorMsg, const QgsGeometryParameters &parameters = QgsGeometryParameters() ) const = 0 /Factory/;
%Docstring
Calculate the combination of this and ``geometries``.
:param geomList: list of geometries to perform the operation
:param errorMsg: Error message returned by GEOS
:param parameters: can be used to specify parameters which control the combination results (since QGIS 3.28)
.. versionadded:: 3.0
%End
virtual QgsAbstractGeometry *combine( const QVector< QgsGeometry > &geometries, QString *errorMsg = 0, const QgsGeometryParameters &parameters = QgsGeometryParameters() ) const = 0 /Factory/;
%Docstring
Calculate the combination of this and ``geometries``.
:param geometries: list of geometries to perform the operation
:param errorMsg: Error message returned by GEOS
:param parameters: can be used to specify parameters which control the combination results (since QGIS 3.28)
.. versionadded:: 3.0
%End
virtual QgsAbstractGeometry *symDifference( const QgsAbstractGeometry *geom, QString *errorMsg = 0, const QgsGeometryParameters &parameters = QgsGeometryParameters() ) const = 0 /Factory/;
%Docstring
Calculate the symmetric difference of this and ``geom``.
:param geom: geometry to perform the operation
:param errorMsg: Error message returned by GEOS
:param parameters: can be used to specify parameters which control the difference results (since QGIS 3.28)
.. versionadded:: 3.0
%End
virtual QgsAbstractGeometry *buffer( double distance, int segments, QString *errorMsg = 0 ) const = 0 /Factory/;
virtual QgsAbstractGeometry *buffer( double distance, int segments, Qgis::EndCapStyle endCapStyle, Qgis::JoinStyle joinStyle, double miterLimit, QString *errorMsg = 0 ) const = 0 /Factory/;
%Docstring
Buffers a geometry.
%End
virtual QgsAbstractGeometry *simplify( double tolerance, QString *errorMsg = 0 ) const = 0 /Factory/;
virtual QgsAbstractGeometry *interpolate( double distance, QString *errorMsg = 0 ) const = 0 /Factory/;
virtual QgsAbstractGeometry *envelope( QString *errorMsg = 0 ) const = 0 /Factory/;
virtual QgsPoint *centroid( QString *errorMsg = 0 ) const = 0 /Factory/;
%Docstring
Calculates the centroid of this.
May return a ```None```.
.. versionadded:: 3.0
%End
virtual QgsPoint *pointOnSurface( QString *errorMsg = 0 ) const = 0 /Factory/;
%Docstring
Calculate a point that is guaranteed to be on the surface of this.
May return a ```None```.
.. versionadded:: 3.0
%End
virtual QgsAbstractGeometry *convexHull( QString *errorMsg = 0 ) const = 0 /Factory/;
%Docstring
Calculate the convex hull of this.
%End
virtual double distance( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Calculates the distance between this and ``geom``.
.. versionadded:: 3.0
%End
virtual bool distanceWithin( const QgsAbstractGeometry *geom, double maxdistance, QString *errorMsg = 0 ) const = 0;
%Docstring
Checks if ``geom`` is within ``maxdistance`` distance from this geometry
.. versionadded:: 3.22
%End
virtual bool intersects( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Checks if ``geom`` intersects this.
.. versionadded:: 3.0
%End
virtual bool touches( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Checks if ``geom`` touches this.
.. versionadded:: 3.0
%End
virtual bool crosses( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Checks if ``geom`` crosses this.
.. versionadded:: 3.0
%End
virtual bool within( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Checks if ``geom`` is within this.
.. versionadded:: 3.0
%End
virtual bool overlaps( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Checks if ``geom`` overlaps this.
.. versionadded:: 3.0
%End
virtual bool contains( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Checks if ``geom`` contains this.
.. versionadded:: 3.0
%End
virtual bool disjoint( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Checks if ``geom`` is disjoint from this.
.. versionadded:: 3.0
%End
virtual QString relate( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Returns the Dimensional Extended 9 Intersection Model (DE-9IM) representation of the
relationship between the geometries.
:param geom: geometry to relate to
:param errorMsg: destination storage for any error message
:return: DE-9IM string for relationship, or an empty string if an error occurred
.. versionadded:: 2.12
%End
virtual bool relatePattern( const QgsAbstractGeometry *geom, const QString &pattern, QString *errorMsg = 0 ) const = 0;
%Docstring
Tests whether two geometries are related by a specified Dimensional Extended 9 Intersection Model (DE-9IM)
pattern.
:param geom: geometry to relate to
:param pattern: DE-9IM pattern for match
:param errorMsg: destination storage for any error message
:return: ``True`` if geometry relationship matches with pattern
.. versionadded:: 2.14
%End
virtual double area( QString *errorMsg = 0 ) const = 0;
virtual double length( QString *errorMsg = 0 ) const = 0;
virtual bool isValid( QString *errorMsg = 0, bool allowSelfTouchingHoles = false, QgsGeometry *errorLoc = 0 ) const = 0;
%Docstring
Returns ``True`` if the geometry is valid.
If the geometry is invalid, ``errorMsg`` will be filled with the reported geometry error.
The ``allowSelfTouchingHoles`` argument specifies whether self-touching holes are permitted.
OGC validity states that self-touching holes are NOT permitted, whilst other vendor
validity checks (e.g. ESRI) permit self-touching holes.
If ``errorLoc`` is specified, it will be set to the geometry of the error location.
%End
virtual bool isEqual( const QgsAbstractGeometry *geom, QString *errorMsg = 0 ) const = 0;
%Docstring
Checks if this is equal to ``geom``.
If both are Null geometries, ```False``` is returned.
.. versionadded:: 3.0
%End
virtual bool isEmpty( QString *errorMsg ) const = 0;
virtual bool isSimple( QString *errorMsg = 0 ) const = 0;
%Docstring
Determines whether the geometry is simple (according to OGC definition).
.. versionadded:: 3.0
%End
virtual QgsGeometryEngine::EngineOperationResult splitGeometry( const QgsLineString &splitLine,
QVector<QgsGeometry > &newGeometries /Out/,
bool topological,
QgsPointSequence &topologyTestPoints, QString *errorMsg = 0, bool skipIntersectionCheck = false ) const;
%Docstring
Splits this geometry according to a given line.
:param splitLine: the line that splits the geometry
\param[out] newGeometries list of new geometries that have been created with the split
:param topological: ``True`` if topological editing is enabled
\param[out] topologyTestPoints points that need to be tested for topological completeness in the dataset
\param[out] errorMsg error messages emitted, if any
:param skipIntersectionCheck: set to ``True`` to skip the potentially expensive initial intersection check. Only set this flag if an intersection
test has already been performed by the caller!
:return: 0 in case of success, 1 if geometry has not been split, error else
%End
virtual QgsAbstractGeometry *offsetCurve( double distance, int segments, Qgis::JoinStyle joinStyle, double miterLimit, QString *errorMsg = 0 ) const = 0 /Factory/;
%Docstring
Offsets a curve.
%End
void setLogErrors( bool enabled );
%Docstring
Sets whether warnings and errors encountered during the geometry operations should be logged.
By default these errors are logged to the console and in the QGIS UI. But for some operations errors are expected and logging
these just results in noise. In this case setting ``enabled`` to ``False`` will avoid the automatic error reporting.
.. versionadded:: 3.16
%End
protected:
void logError( const QString &engineName, const QString &message ) const;
%Docstring
Logs an error ``message`` encountered during an operation.
.. seealso:: :py:func:`setLogErrors`
.. versionadded:: 3.16
%End
QgsGeometryEngine( const QgsAbstractGeometry *geometry );
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/geometry/qgsgeometryengine.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/