QGIS/python/core/auto_generated/qgsspatialindex.sip.in
Nyall Dawson 26555358f9 Add API for QgsSpatialIndex to optionally store feature geometries
This potentially avoids a second expensive feature request after
building a spatial index and later needing to re-request features
which match spatial index search.

It's non-default, as it requires the index to store all feature
geometries, so it's more memory expensive.
2019-02-20 05:40:02 +10:00

202 lines
6.0 KiB
Plaintext

/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsspatialindex.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
class QgsSpatialIndex : QgsFeatureSink
{
%Docstring
A spatial index for QgsFeature objects.
QgsSpatialIndex objects are implicitly shared and can be inexpensively copied.
.. note::
While the underlying libspatialindex is not thread safe on some platforms, the QgsSpatialIndex
class implements its own locks and accordingly, a single QgsSpatialIndex object can safely
be used across multiple threads.
.. seealso:: :py:class:`QgsSpatialIndexKDBush`
.. seealso:: :py:class:`QgsMeshSpatialIndex`
%End
%TypeHeaderCode
#include "qgsspatialindex.h"
%End
public:
enum Flag
{
FlagStoreFeatureGeometries,
};
typedef QFlags<QgsSpatialIndex::Flag> Flags;
QgsSpatialIndex( QgsSpatialIndex::Flags flags = 0 );
%Docstring
Constructor for QgsSpatialIndex. Creates an empty R-tree index.
%End
explicit QgsSpatialIndex( const QgsFeatureIterator &fi, QgsFeedback *feedback = 0, QgsSpatialIndex::Flags flags = 0 );
%Docstring
Constructor - creates R-tree and bulk loads it with features from the iterator.
This is much faster approach than creating an empty index and then inserting features one by one.
The optional ``feedback`` object can be used to allow cancelation of bulk feature loading. Ownership
of ``feedback`` is not transferred, and callers must take care that the lifetime of feedback exceeds
that of the spatial index construction.
.. versionadded:: 2.8
%End
explicit QgsSpatialIndex( const QgsFeatureSource &source, QgsFeedback *feedback = 0, QgsSpatialIndex::Flags flags = 0 );
%Docstring
Constructor - creates R-tree and bulk loads it with features from the source.
This is much faster approach than creating an empty index and then inserting features one by one.
The optional ``feedback`` object can be used to allow cancelation of bulk feature loading. Ownership
of ``feedback`` is not transferred, and callers must take care that the lifetime of feedback exceeds
that of the spatial index construction.
.. versionadded:: 3.0
%End
QgsSpatialIndex( const QgsSpatialIndex &other );
%Docstring
Copy constructor
%End
~QgsSpatialIndex();
bool insertFeature( const QgsFeature &feature ) /Deprecated/;
%Docstring
Adds a ``feature`` to the index.
.. deprecated:: Use addFeature() instead
%End
virtual bool addFeature( QgsFeature &feature, QgsFeatureSink::Flags flags = 0 );
%Docstring
Adds a ``feature`` to the index.
The ``flags`` argument is ignored.
.. versionadded:: 3.4
%End
virtual bool addFeatures( QgsFeatureList &features, QgsFeatureSink::Flags flags = 0 );
%Docstring
Adds a list of ``features`` to the index.
The ``flags`` argument is ignored.
.. seealso:: :py:func:`addFeature`
%End
bool insertFeature( QgsFeatureId id, const QgsRectangle &bounds ) /Deprecated/;
%Docstring
Add a feature ``id`` to the index with a specified bounding box.
:return: true if feature was successfully added to index.
.. deprecated:: Use addFeature() instead
%End
bool addFeature( QgsFeatureId id, const QgsRectangle &bounds );
%Docstring
Add a feature ``id`` to the index with a specified bounding box.
:return: true if feature was successfully added to index.
.. versionadded:: 3.4
%End
bool deleteFeature( const QgsFeature &feature );
%Docstring
Removes a ``feature`` from the index.
%End
QList<QgsFeatureId> intersects( const QgsRectangle &rectangle ) const;
%Docstring
Returns a list of features with a bounding box which intersects the specified ``rectangle``.
.. note::
The intersection test is performed based on the feature bounding boxes only, so for non-point
geometry features it is necessary to manually test the returned features for exact geometry intersection
when required.
%End
QList<QgsFeatureId> nearestNeighbor( const QgsPointXY &point, int neighbors ) const;
%Docstring
Returns nearest neighbors to a ``point``. The number of neighbours returned is specified
by the ``neighbours`` argument.
.. note::
The nearest neighbour test is performed based on the feature bounding boxes only, so for non-point
geometry features this method is not guaranteed to return the actual closest neighbours.
%End
SIP_PYOBJECT geometry( QgsFeatureId id ) const /TypeHint="QgsGeometry"/;
%Docstring
Returns the stored geometry for the indexed feature with matching ``id``. A KeyError will be raised if no
geometry with the specified feature id exists in the index.
Geometry is only stored if the QgsSpatialIndex was created with the FlagStoreFeatureGeometries flag.
.. versionadded:: 3.6
%End
%MethodCode
std::unique_ptr< QgsGeometry > g = qgis::make_unique< QgsGeometry >( sipCpp->geometry( a0 ) );
if ( g->isNull() )
{
PyErr_SetString( PyExc_KeyError, QStringLiteral( "No geometry with feature id %1 exists in the index." ).arg( a0 ).toUtf8().constData() );
sipIsErr = 1;
}
else
{
sipRes = sipConvertFromType( g.release(), sipType_QgsGeometry, Py_None );
}
%End
int refs() const;
%Docstring
Gets reference count - just for debugging!
%End
};
QFlags<QgsSpatialIndex::Flag> operator|(QgsSpatialIndex::Flag f1, QFlags<QgsSpatialIndex::Flag> f2);
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsspatialindex.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/