QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
|
Go to the documentation of this file.
26 #include <QMutexLocker>
30 : mFeatureCache( CACHE_SIZE )
32 , mGeometryType( layer->geometryType() )
34 , mLayerName( layer->name() )
50 QgsFeature *cachedFeature = mFeatureCache.object(
id );
54 feature = *cachedFeature;
60 if ( !mFeatureSource->getFeatures(
QgsFeatureRequest(
id ) ).nextFeature( feature ) )
65 mFeatureCache.insert(
id,
new QgsFeature( feature ) );
75 Q_ASSERT( QThread::currentThread() == qApp->thread() );
77 mFeatureCache.clear();
82 mFeatureSource = qgis::make_unique<QgsVectorLayerFeatureSource>( mLayer );
109 Q_ASSERT( QThread::currentThread() == qApp->thread() );
111 return mLayer.data();
124 mFeatureCache.insert( feature.
id(),
new QgsFeature( feature ) );
132 mFeatureCache.remove( feature.
id() );
150 mFeatureCache.remove( origFeature.
id() );
161 return mFeatureCache.contains( fid );
172 return mFeatureSource->crs();
177 return mGeometryType;
183 return mFeatureSource->id();
void changeMode(Mode mode)
Change the mode of the lock to mode.
bool deleteFeature(const QgsFeature &feature)
Removes a feature from the index.
QgsFeatureIds getFeatures(const QgsFeatureRequest &request, QgsFeedback *feedback=nullptr)
Gets features for the provided request.
void setFeatureIds(const QgsFeatureIds &ids)
Sets all the feature ids governed by this feature pool.
QPointer< QgsVectorLayer > layerPtr() const
Gets a QPointer to the underlying layer.
bool getFeature(QgsFeatureId id, QgsFeature &feature)
Retrieves the feature with the specified id into feature.
void unlock()
Unlocks the lock.
A rectangle specified with double values.
The QgsReadWriteLocker class is a convenience class that simplifies locking and unlocking QReadWriteL...
This class wraps a request for features to a vector layer (or directly its vector data provider).
bool isFeatureCached(QgsFeatureId fid)
Checks if the feature fid is cached.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
QgsWkbTypes::GeometryType geometryType() const
The geometry type of this layer.
QString layerName() const
Returns the name of the layer.
A spatial index for QgsFeature objects.
QSet< QgsFeatureId > QgsFeatureIds
QgsCoordinateReferenceSystem crs() const
The coordinate reference system of this layer.
This class represents a coordinate reference system (CRS).
void removeFeature(const QgsFeatureId featureId)
Removes a feature from the cache and the spatial index.
QgsFeatureIds allFeatureIds() const
Returns the complete set of feature ids in this pool.
QgsVectorLayer * layer() const
Gets a pointer to the underlying layer.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
bool nextFeature(QgsFeature &f)
Represents a vector layer which manages a vector based data sets.
Partial snapshot of vector layer's state (only the members necessary for access to features)
QList< QgsFeatureId > intersects(const QgsRectangle &rectangle) const
Returns a list of features with a bounding box which intersects the specified rectangle.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
QString layerId() const
The layer id of the layer.
QgsFeaturePool(QgsVectorLayer *layer)
Creates a new feature pool for layer.
Wrapper for iterator of features from vector data provider or vector layer.
QgsFeatureIds getIntersects(const QgsRectangle &rect) const
Gets all feature ids in the bounding box rect.
bool addFeature(QgsFeature &feature, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags()) override
Adds a feature to the index.
void refreshCache(const QgsFeature &feature)
Changes a feature in the cache and the spatial index.
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
void insertFeature(const QgsFeature &feature, bool skipLock=false)
Inserts a feature into the cache and the spatial index.