This class caches features of a given QgsVectorLayer.
More...
#include <qgsvectorlayercache.h>
Classes |
class | QgsCachedFeature |
| This is a wrapper class around a cached QgsFeature, which will inform the cache, when it has been deleted, so indexes can be updated that the wrapped feature needs to be fetched again if needed.
|
Signals |
void | progress (int i, bool &cancel) |
| When filling the cache, this signal gets emitted periodically to notify about the progress and to be able to cancel an operation.
|
void | finished () |
| When filling the cache, this signal gets emitted once the cache is fully initialized.
|
void | cachedLayerDeleted () |
| Is emitted when the cached layer is deleted.
|
void | attributeValueChanged (const QgsFeatureId &fid, const int &field, const QVariant &value) |
| Is emitted when an attribute is changed.
|
void | featureAdded (QgsFeatureId fid) |
| Is emitted, when a new feature has been added to the layer and this cache.
|
Detailed Description
This class caches features of a given QgsVectorLayer.
The cached features can be indexed by QgsAbstractCacheIndex.
Proper indexing for a given use-case may speed up performance substantially.
Constructor & Destructor Documentation
QgsVectorLayerCache::QgsVectorLayerCache |
( |
QgsVectorLayer * |
layer, |
|
|
int |
cacheSize, |
|
|
QObject * |
parent = NULL |
|
) |
| |
QgsVectorLayerCache::~QgsVectorLayerCache |
( |
| ) |
|
Member Function Documentation
Adds a QgsAbstractCacheIndex to this cache.
Cache indices know about features present in this cache and decide, if enough information is present in the cache to respond to a QgsFeatureRequest. The layer cache will take ownership of the index.
- Parameters
-
cacheIndex | The cache index to add. |
void QgsVectorLayerCache::attributeValueChanged |
( |
const QgsFeatureId & |
fid, |
|
|
const int & |
field, |
|
|
const QVariant & |
value |
|
) |
| |
|
signal |
Is emitted when an attribute is changed.
Is re-emitted after the layer itself emits this signal. You should connect to this signal, to be sure, to not get a cached value if querying the cache.
void QgsVectorLayerCache::cachedLayerDeleted |
( |
| ) |
|
|
signal |
Is emitted when the cached layer is deleted.
Is emitted when the cached layers layerDelete() signal is being emitted, but before the local reference to it has been set to NULL. So call to layer() will still return a valid pointer for cleanup purpose.
int QgsVectorLayerCache::cacheSize |
( |
| ) |
|
Returns the maximum number of features this cache will hold.
In case full caching is enabled, this number can change, as new features get added.
- Returns
- int
bool QgsVectorLayerCache::checkInformationCovered |
( |
const QgsFeatureRequest & |
featureRequest | ) |
|
|
protected |
Checks if the information required to complete the request is cached.
i.e. If all attributes required and the geometry is held in the cache. Please note, that this does not check, if the requested features are cached.
- Parameters
-
- Returns
- True if the information is being cached, false if not
Is emitted, when a new feature has been added to the layer and this cache.
You should connect to this signal instead of the layers', if you want to be sure that this cache has updated information for the new feature
- Parameters
-
fid | The featureid of the changed feature |
bool QgsVectorLayerCache::featureAtId |
( |
QgsFeatureId |
featureId, |
|
|
QgsFeature & |
feature, |
|
|
bool |
skipCache = false |
|
) |
| |
Gets the feature at the given feature id.
Considers the changed, added, deleted and permanent features
- Parameters
-
featureId | The id of the feature to query |
feature | The result of the operation will be written to this feature |
skipCache | Will query the layer regardless if the feature is in the cache already |
- Returns
- true in case of success
void QgsVectorLayerCache::featureRemoved |
( |
QgsFeatureId |
fid | ) |
|
|
protected |
Gets called, whenever a feature has been removed.
Broadcasts this information to indices, so they can invalidate their cache if required.
- Parameters
-
fid | The feature id of the removed feature. |
void QgsVectorLayerCache::finished |
( |
| ) |
|
|
signal |
When filling the cache, this signal gets emitted once the cache is fully initialized.
Query this VectorLayerCache for features.
If the VectorLayerCache (and moreover any of its indices) is able to satisfy the request, the returned QgsFeatureIterator will iterate over cached features. If it's not possible to fully satisfy the request from the cache, part or all of the features will be requested from the data provider.
- Parameters
-
featureRequest | The request specifying filter and required data. |
- Returns
- An iterator over the requested data.
bool QgsVectorLayerCache::isFidCached |
( |
const QgsFeatureId |
fid | ) |
|
Check if a certain feature id is cached.
- Parameters
-
fid | The feature id to look for |
- Returns
- True if this id is in the cache
Returns the layer to which this cache belongs.
void QgsVectorLayerCache::progress |
( |
int |
i, |
|
|
bool & |
cancel |
|
) |
| |
|
signal |
When filling the cache, this signal gets emitted periodically to notify about the progress and to be able to cancel an operation.
- Parameters
-
i | The number of already fetched features |
cancel | A reference to a boolean variable. Set to true and the operation will be canceled. |
- Note
- not available in python bindings
bool QgsVectorLayerCache::removeCachedFeature |
( |
QgsFeatureId |
fid | ) |
|
Removes the feature identified by fid from the cache if present.
- Parameters
-
fid | The id of the feature to delete |
- Returns
- true if the feature was removed, false if the feature id was not found in the cache
Gets called, whenever the full list of feature ids for a certain request is known.
Broadcasts this information to indices, so they can update their tables.
- Parameters
-
featureRequest | The feature request that was answered |
fids | The feature ids that have been returned |
void QgsVectorLayerCache::setCacheAddedAttributes |
( |
bool |
cacheAddedAttributes | ) |
|
If this is enabled, the subset of cached attributes will automatically be extended to also include newly added attributes.
- Parameters
-
cacheAddedAttributes | Automatically cache new attributes |
void QgsVectorLayerCache::setCacheGeometry |
( |
bool |
cacheGeometry | ) |
|
Enable or disable the caching of geometries.
- Parameters
-
cacheGeometry | Enable or disable the caching of geometries |
void QgsVectorLayerCache::setCacheSize |
( |
int |
cacheSize | ) |
|
Sets the maximum number of features to keep in the cache.
Some features will be removed from the cache if the number is smaller than the previous size of the cache.
- Parameters
-
cacheSize | indicates the maximum number of features to keep in the cache |
void QgsVectorLayerCache::setCacheSubsetOfAttributes |
( |
const QgsAttributeList & |
attributes | ) |
|
Set the subset of attributes to be cached.
- Parameters
-
attributes | The attributes to be cached |
void QgsVectorLayerCache::setFullCache |
( |
bool |
fullCache | ) |
|
This enables or disables full caching.
If enabled, all features will be held in the cache. The cache size will incrementally be increased to offer space for all features. When enabled, all features will be read into cache. As this feature will most likely be used for slow data sources, be aware, that the call to this method might take a long time.
- Parameters
-
fullCache | True: enable full caching, False: disable full caching |
Friends And Related Function Documentation
friend class QgsCachedFeature |
|
friend |
The documentation for this class was generated from the following files: