Class: QgsSpatialIndex¶
- class qgis.core.QgsSpatialIndex¶
Bases:
QgsFeatureSink
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 singleQgsSpatialIndex
object can safely be used across multiple threads.See also
See also
QgsSpatialIndex(flags: Union[QgsSpatialIndex.Flags, QgsSpatialIndex.Flag] = QgsSpatialIndex.Flags()) Constructor for
QgsSpatialIndex
. Creates an empty R-tree index.QgsSpatialIndex(fi:
QgsFeatureIterator
, feedback:QgsFeedback
= None, flags: Union[QgsSpatialIndex.Flags, QgsSpatialIndex.Flag] = QgsSpatialIndex.Flags()) 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 cancellation of bulk feature loading. Ownership offeedback
is not transferred, and callers must take care that the lifetime of feedback exceeds that of the spatial index construction.New in version 2.8.
QgsSpatialIndex(source:
QgsFeatureSource
, feedback:QgsFeedback
= None, flags: Union[QgsSpatialIndex.Flags, QgsSpatialIndex.Flag] = QgsSpatialIndex.Flags()) 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 cancellation of bulk feature loading. Ownership offeedback
is not transferred, and callers must take care that the lifetime of feedback exceeds that of the spatial index construction.New in version 3.0.
QgsSpatialIndex(other:
QgsSpatialIndex
) Copy constructorMethods
Adds a
feature
to the index.Adds a list of
features
to the index.Removes a
feature
from the index.Returns the stored geometry for the indexed feature with matching
id
.Adds a
feature
to the index.Returns a list of features with a bounding box which intersects the specified
rectangle
.Returns nearest neighbors to a
point
.Gets reference count - just for debugging!
Attributes
- class Flag¶
Bases:
int
- FlagStoreFeatureGeometries = 1¶
- class Flags¶
- class Flags(Union[QgsSpatialIndex.Flags, QgsSpatialIndex.Flag])
- class Flags(QgsSpatialIndex.Flags)
Bases:
sip.wrapper
- addFeature(self, feature: QgsFeature, flags: Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = QgsFeatureSink.Flags()) bool ¶
Adds a
feature
to the index.The
flags
argument is ignored.New in version 3.4.
addFeature(self, id: int, bounds:
QgsRectangle
) -> bool Add a featureid
to the index with a specified bounding box.- Return type
bool
- Returns
True
if feature was successfully added to index.
New in version 3.4.
- Parameters
feature (QgsFeature) –
flags (Union[QgsFeatureSink.Flags) –
- addFeatures(self, features: Iterable[QgsFeature], flags: Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = QgsFeatureSink.Flags()) bool ¶
Adds a list of
features
to the index.The
flags
argument is ignored.See also
- Parameters
features (Iterable[QgsFeature]) –
flags (Union[QgsFeatureSink.Flags) –
- Return type
bool
- deleteFeature(self, feature: QgsFeature) bool ¶
Removes a
feature
from the index.- Parameters
feature (QgsFeature) –
- Return type
bool
- geometry(self, id: int) QgsGeometry ¶
Returns the stored geometry for the indexed feature with matching
id
.Geometry is only stored if the
QgsSpatialIndex
was created with the FlagStoreFeatureGeometries flag.- Raises
KeyError – if no geometry with the specified feature id exists in the index.
New in version 3.6.
- Parameters
id (int) –
- Return type
- insertFeature(self, feature: QgsFeature) bool ¶
Adds a
feature
to the index.Deprecated since version Use:
addFeature()
insteadinsertFeature(self, id: int, bounds:
QgsRectangle
) -> bool Add a featureid
to the index with a specified bounding box.- Return type
bool
- Returns
True
if feature was successfully added to index.
Deprecated since version Use:
addFeature()
instead- Parameters
feature (QgsFeature) –
- intersects(self, rectangle: QgsRectangle) object ¶
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.
- Parameters
rectangle (QgsRectangle) –
- Return type
object
- nearestNeighbor(self, point: QgsPointXY, neighbors: int = 1, maxDistance: float = 0) object ¶
Returns nearest neighbors to a
point
. The number of neighbors returned is specified by theneighbors
argument.If the
maxDistance
argument is greater than 0, then only features within the specified distance ofpoint
will be considered.Note that in some cases the number of returned features may differ from the requested number of
neighbors
. E.g. if not enough features exist within themaxDistance
of the search point. If multiple features are equidistant from the searchpoint
then the number of returned feature IDs may exceedneighbors
.Warning
If this
QgsSpatialIndex
object was not constructed with the FlagStoreFeatureGeometries flag, then the nearest neighbor 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 neighbors.nearestNeighbor(self, geometry:
QgsGeometry
, neighbors: int = 1, maxDistance: float = 0) -> object Returns nearest neighbors to ageometry
. The number of neighbors returned is specified by theneighbors
argument.If the
maxDistance
argument is greater than 0, then only features within the specified distance ofpoint
will be considered.Note that in some cases the number of returned features may differ from the requested number of
neighbors
. E.g. if not enough features exist within themaxDistance
of the search point. If multiple features are equidistant from the searchpoint
then the number of returned feature IDs may exceedneighbors
.Warning
If this
QgsSpatialIndex
object was not constructed with the FlagStoreFeatureGeometries flag, then the nearest neighbor 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 neighbors.New in version 3.8.
- Parameters
point (QgsPointXY) –
neighbors (int = 1) –
maxDistance (float = 0) –
- Return type
object
- refs(self) int ¶
Gets reference count - just for debugging!
- Return type
int