QGIS API Documentation 3.41.0-Master (45a0abf3bec)
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
QgsFeaturePool Class Referenceabstract

A feature pool is based on a vector layer and caches features. More...

#include <qgsfeaturepool.h>

Inheritance diagram for QgsFeaturePool:
Inheritance graph
[legend]

Public Member Functions

 QgsFeaturePool (QgsVectorLayer *layer)
 Creates a new feature pool for layer.
 
virtual ~QgsFeaturePool ()=default
 
QgsFeatureIds allFeatureIds () const
 Returns the complete set of feature ids in this pool.
 
QgsCoordinateReferenceSystem crs () const
 The coordinate reference system of this layer.
 
virtual void deleteFeature (QgsFeatureId fid)=0
 Removes a feature from this pool.
 
Qgis::GeometryType geometryType () const
 The geometry type of this layer.
 
bool getFeature (QgsFeatureId id, QgsFeature &feature)
 Retrieves the feature with the specified id into feature.
 
QgsFeatureIds getFeatures (const QgsFeatureRequest &request, QgsFeedback *feedback=nullptr)
 Gets features for the provided request.
 
QgsFeatureIds getIntersects (const QgsRectangle &rect) const
 Gets all feature ids in the bounding box rect.
 
QgsVectorLayerlayer () const
 Gets a pointer to the underlying layer.
 
QString layerId () const
 The layer id of the layer.
 
QString layerName () const
 Returns the name of the layer.
 
QPointer< QgsVectorLayerlayerPtr () const
 Gets a QPointer to the underlying layer.
 
virtual void updateFeature (QgsFeature &feature)=0
 Updates a feature in this pool.
 
- Public Member Functions inherited from QgsFeatureSink
virtual ~QgsFeatureSink ()=default
 
virtual bool addFeature (QgsFeature &feature, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags())
 Adds a single feature to the sink.
 
virtual bool addFeatures (QgsFeatureIterator &iterator, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags())
 Adds all features from the specified iterator to the sink.
 
virtual bool addFeatures (QgsFeatureList &features, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags())=0
 Adds a list of features to the sink.
 
virtual void finalize ()
 Finalizes the sink, flushing any buffered features to the destination.
 
virtual bool flushBuffer ()
 Flushes any internal buffer which may exist in the sink, causing any buffered features to be added to the sink's destination.
 
virtual QString lastError () const
 Returns the most recent error encountered by the sink, e.g.
 

Protected Member Functions

void insertFeature (const QgsFeature &feature, bool skipLock=false)
 Inserts a feature into the cache and the spatial index.
 
bool isFeatureCached (QgsFeatureId fid)
 Checks if the feature fid is cached.
 
void refreshCache (const QgsFeature &feature)
 Changes a feature in the cache and the spatial index.
 
void removeFeature (const QgsFeatureId featureId)
 Removes a feature from the cache and the spatial index.
 
void setFeatureIds (const QgsFeatureIds &ids)
 Sets all the feature ids governed by this feature pool.
 

Additional Inherited Members

- Public Types inherited from QgsFeatureSink
enum  Flag { FastInsert = 1 << 1 , RollBackOnErrors = 1 << 2 }
 Flags controlling how features are added to a sink. More...
 
typedef QFlags< FlagFlags
 
enum  SinkFlag { RegeneratePrimaryKey = 1 << 1 }
 Flags that can be set on a QgsFeatureSink. More...
 
typedef QFlags< SinkFlagSinkFlags
 

Detailed Description

A feature pool is based on a vector layer and caches features.

Note
This class is a technology preview and unstable API.
Since
QGIS 3.4

Definition at line 37 of file qgsfeaturepool.h.

Constructor & Destructor Documentation

◆ QgsFeaturePool()

QgsFeaturePool::QgsFeaturePool ( QgsVectorLayer layer)

Creates a new feature pool for layer.

Must be created on the same thread as layer.

Definition at line 30 of file qgsfeaturepool.cpp.

◆ ~QgsFeaturePool()

virtual QgsFeaturePool::~QgsFeaturePool ( )
virtualdefault

Member Function Documentation

◆ allFeatureIds()

QgsFeatureIds QgsFeaturePool::allFeatureIds ( ) const

Returns the complete set of feature ids in this pool.

Note that this concerns the features governed by this pool, which are not necessarily all cached.

Note
This method can safely be called from a different thread vs the object's creation thread or the original layer's thread.
not available in Python bindings

Definition at line 99 of file qgsfeaturepool.cpp.

◆ crs()

QgsCoordinateReferenceSystem QgsFeaturePool::crs ( ) const

The coordinate reference system of this layer.

Definition at line 174 of file qgsfeaturepool.cpp.

◆ deleteFeature()

virtual void QgsFeaturePool::deleteFeature ( QgsFeatureId  fid)
pure virtual

Removes a feature from this pool.

Implementations will remove the feature from the layer or from the data provider.

Warning
This method can safely be called from a different thread vs the object's creation thread or the original layer's thread. The update will be delegated to run in the main thread, and care must be taken to avoid deadlocks if the main thread is busy.

Implemented in QgsVectorDataProviderFeaturePool, and QgsVectorLayerFeaturePool.

◆ geometryType()

Qgis::GeometryType QgsFeaturePool::geometryType ( ) const

The geometry type of this layer.

Definition at line 179 of file qgsfeaturepool.cpp.

◆ getFeature()

bool QgsFeaturePool::getFeature ( QgsFeatureId  id,
QgsFeature feature 
)

Retrieves the feature with the specified id into feature.

It will be retrieved from the cache or from the underlying feature source if unavailable. If the feature is neither available from the cache nor from the source it will return false.

Note
This method can safely be called from a different thread vs the object's creation thread or the original layer's thread.

Definition at line 42 of file qgsfeaturepool.cpp.

◆ getFeatures()

QgsFeatureIds QgsFeaturePool::getFeatures ( const QgsFeatureRequest request,
QgsFeedback feedback = nullptr 
)

Gets features for the provided request.

No features will be fetched from the cache and the request is sent directly to the underlying feature source. Results of the request are cached in the pool and the ids of all the features are returned. This is used to warm the cache for a particular area of interest (bounding box) or other set of features. This will get a new feature source from the source vector layer.

If feedback is specified, the call may return if the feedback is canceled.

Warning
This must be called from the same thread as the vector layer belongs to.

Definition at line 74 of file qgsfeaturepool.cpp.

◆ getIntersects()

QgsFeatureIds QgsFeaturePool::getIntersects ( const QgsRectangle rect) const

Gets all feature ids in the bounding box rect.

It will use a spatial index to determine the ids.

Note
This method can safely be called from a different thread vs the object's creation thread or the original layer's thread.
not available in Python bindings

Definition at line 104 of file qgsfeaturepool.cpp.

◆ insertFeature()

void QgsFeaturePool::insertFeature ( const QgsFeature feature,
bool  skipLock = false 
)
protected

Inserts a feature into the cache and the spatial index.

To be used by implementations of addFeature.

Note
This method can safely be called from a different thread vs the object's creation thread or the original layer's thread.

Definition at line 124 of file qgsfeaturepool.cpp.

◆ isFeatureCached()

bool QgsFeaturePool::isFeatureCached ( QgsFeatureId  fid)
protected

Checks if the feature fid is cached.

Note
not available in Python bindings
Since
QGIS 3.4

Definition at line 163 of file qgsfeaturepool.cpp.

◆ layer()

QgsVectorLayer * QgsFeaturePool::layer ( ) const

Gets a pointer to the underlying layer.

May return a \c nullptr if the layer has been deleted.

Warning
This must be called from the same thread as the vector layer belongs to.

Definition at line 111 of file qgsfeaturepool.cpp.

◆ layerId()

QString QgsFeaturePool::layerId ( ) const

The layer id of the layer.

Definition at line 184 of file qgsfeaturepool.cpp.

◆ layerName()

QString QgsFeaturePool::layerName ( ) const

Returns the name of the layer.

Should be preferred over layer().name() because it can directly be run on the background thread.

Definition at line 169 of file qgsfeaturepool.cpp.

◆ layerPtr()

QPointer< QgsVectorLayer > QgsFeaturePool::layerPtr ( ) const

Gets a QPointer to the underlying layer.

Warning
Access to any methods of the object will need to be done on the main thread and the pointer will need to be checked for validity before usage.
Note
not available in Python bindings

Definition at line 119 of file qgsfeaturepool.cpp.

◆ refreshCache()

void QgsFeaturePool::refreshCache ( const QgsFeature feature)
protected

Changes a feature in the cache and the spatial index.

To be used by implementations of updateFeature.

Note
This method can safely be called from a different thread vs the object's creation thread or the original layer's thread.

Definition at line 134 of file qgsfeaturepool.cpp.

◆ removeFeature()

void QgsFeaturePool::removeFeature ( const QgsFeatureId  featureId)
protected

Removes a feature from the cache and the spatial index.

To be used by implementations of deleteFeature.

Note
This method can safely be called from a different thread vs the object's creation thread or the original layer's thread.

Definition at line 145 of file qgsfeaturepool.cpp.

◆ setFeatureIds()

void QgsFeaturePool::setFeatureIds ( const QgsFeatureIds ids)
protected

Sets all the feature ids governed by this feature pool.

Should be called by subclasses constructor and whenever they insert a new feature.

Note
not available in Python bindings

Definition at line 158 of file qgsfeaturepool.cpp.

◆ updateFeature()

virtual void QgsFeaturePool::updateFeature ( QgsFeature feature)
pure virtual

Updates a feature in this pool.

Implementations will update the feature on the layer or on the data provider.

Warning
This method can safely be called from a different thread vs the object's creation thread or the original layer's thread. The update will be delegated to run in the main thread, and care must be taken to avoid deadlocks if the main thread is busy.

Implemented in QgsVectorDataProviderFeaturePool, and QgsVectorLayerFeaturePool.


The documentation for this class was generated from the following files: