QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsmemoryprovider.h
Go to the documentation of this file.
1/***************************************************************************
2 memoryprovider.h - provider with storage in memory
3 ------------------
4 begin : June 2008
5 copyright : (C) 2008 by Martin Dobias
6 email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#define SIP_NO_FILE
17
20#include "qgsfields.h"
21#include "qgsprovidermetadata.h"
22
24typedef QMap<QgsFeatureId, QgsFeature> QgsFeatureMap;
25
26class QgsSpatialIndex;
27
28class QgsMemoryFeatureIterator;
29
30class QgsMemoryProvider final: public QgsVectorDataProvider
31{
32 Q_OBJECT
33
34 public:
35 explicit QgsMemoryProvider( const QString &uri, const QgsVectorDataProvider::ProviderOptions &coordinateTransformContext,
37
38 ~QgsMemoryProvider() override;
39
41 static QString providerKey();
43 static QString providerDescription();
44
45 /* Implementation of functions from QgsVectorDataProvider */
46
48
49 QString dataSourceUri( bool expandAuthConfig = true ) const override;
50 QString storageType() const override;
51 QgsFeatureIterator getFeatures( const QgsFeatureRequest &request ) const override;
52 Qgis::WkbType wkbType() const override;
53 long long featureCount() const override;
54 QgsFields fields() const override;
56 bool deleteFeatures( const QgsFeatureIds &id ) override;
57 bool addAttributes( const QList<QgsField> &attributes ) override;
58 bool renameAttributes( const QgsFieldNameMap &renamedAttributes ) override;
59 bool deleteAttributes( const QgsAttributeIds &attributes ) override;
60 bool changeAttributeValues( const QgsChangedAttributesMap &attr_map ) override;
61 bool changeGeometryValues( const QgsGeometryMap &geometry_map ) override;
62 QString subsetString() const override;
63 bool setSubsetString( const QString &theSQL, bool updateFeatureCount = true ) override;
64 bool supportsSubsetString() const override { return true; }
65 bool createSpatialIndex() override;
68 bool truncate() override;
69
70 /* Implementation of functions from QgsDataProvider */
71
72 QString name() const override;
73 QString description() const override;
74 QgsRectangle extent() const override;
75 void updateExtents() override;
76 bool isValid() const override;
77 QgsCoordinateReferenceSystem crs() const override;
78 void handlePostCloneOperations( QgsVectorDataProvider *source ) override;
79
80 private:
81 // Coordinate reference system
83
84 // fields
85 QgsFields mFields;
86 Qgis::WkbType mWkbType;
87 mutable QgsRectangle mExtent;
88
89 // features
90 QgsFeatureMap mFeatures;
91 QgsFeatureId mNextFeatureId;
92
93 // indexing
94 QgsSpatialIndex *mSpatialIndex = nullptr;
95
96 QString mSubsetString;
97
98 friend class QgsMemoryFeatureSource;
99};
100
101
102class QgsMemoryProviderMetadata final: public QgsProviderMetadata
103{
104 Q_OBJECT
105
106 public:
107 QgsMemoryProviderMetadata();
108 QIcon icon() const override;
110 QList< Qgis::LayerType > supportedLayerTypes() const override;
111};
112
SpatialIndexPresence
Enumeration of spatial index presence states.
Definition: qgis.h:349
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition: qgis.h:182
Base class that can be used for any class that is capable of returning features.
This class represents a coordinate reference system (CRS).
Abstract base class for spatial data provider implementations.
virtual QString name() const =0
Returns a provider name.
virtual QgsCoordinateReferenceSystem crs() const =0
Returns the coordinate system for the data source.
QFlags< ReadFlag > ReadFlags
virtual QString subsetString() const
Returns the subset definition string (typically sql) currently in use by the layer and used by the pr...
virtual bool isValid() const =0
Returns true if this is a valid layer.
virtual bool supportsSubsetString() const
Returns true if the provider supports setting of subset strings.
virtual QString dataSourceUri(bool expandAuthConfig=false) const
Gets the data source specification.
virtual QString description() const =0
Returns description.
virtual void updateExtents()
Update the extents of the layer.
virtual bool setSubsetString(const QString &subset, bool updateFeatureCount=true)
Set the subset string used to create a subset of features in the layer.
virtual QgsRectangle extent() const =0
Returns the extent of the layer.
Wrapper for iterator of features from vector data provider or vector layer.
This class wraps a request for features to a vector layer (or directly its vector data provider).
QFlags< Flag > Flags
virtual Qgis::SpatialIndexPresence hasSpatialIndex() const
Returns an enum value representing the presence of a valid spatial index on the source,...
Container of fields for a vector layer.
Definition: qgsfields.h:45
Holds data provider key, description, and associated shared library file or function pointer informat...
virtual QIcon icon() const
Returns an icon representing the provider.
virtual QgsDataProvider * createProvider(const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags=QgsDataProvider::ReadFlags())
Class factory to return a pointer to a newly created QgsDataProvider object.
virtual QList< Qgis::LayerType > supportedLayerTypes() const
Returns a list of the map layer types supported by the provider.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
A spatial index for QgsFeature objects.
This is the base class for vector data providers.
virtual bool changeGeometryValues(const QgsGeometryMap &geometry_map)
Changes geometries of existing features.
virtual bool createSpatialIndex()
Creates a spatial index on the datasource (if supported by the provider type).
long long featureCount() const override=0
Number of features in the layer.
virtual QString storageType() const
Returns the permanent storage type for this layer as a friendly name.
virtual bool truncate()
Removes all features from the layer.
virtual void handlePostCloneOperations(QgsVectorDataProvider *source)
Handles any post-clone operations required after this vector data provider was cloned from the source...
QFlags< Capability > Capabilities
virtual QgsAbstractFeatureSource * featureSource() const =0
Returns feature source object that can be used for querying provider's data.
virtual bool changeAttributeValues(const QgsChangedAttributesMap &attr_map)
Changes attribute values of existing features.
virtual bool deleteFeatures(const QgsFeatureIds &id)
Deletes one or more features from the provider.
bool addFeatures(QgsFeatureList &flist, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags()) override
Adds a list of features to the sink.
QgsFields fields() const override=0
Returns the fields associated with this data provider.
Qgis::WkbType wkbType() const override=0
Returns the geometry type which is returned by this layer.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const override=0
Query the provider for features specified in request.
virtual bool addAttributes(const QList< QgsField > &attributes)
Adds new attributes to the provider.
virtual Q_INVOKABLE QgsVectorDataProvider::Capabilities capabilities() const
Returns flags containing the supported capabilities.
virtual bool renameAttributes(const QgsFieldNameMap &renamedAttributes)
Renames existing attributes.
virtual bool deleteAttributes(const QgsAttributeIds &attributes)
Deletes existing attributes from the provider.
QMap< int, QString > QgsFieldNameMap
Definition: qgsattributes.h:45
QMap< QgsFeatureId, QgsGeometry > QgsGeometryMap
Definition: qgsfeature.h:912
QMap< QgsFeatureId, QgsAttributeMap > QgsChangedAttributesMap
Definition: qgsfeature.h:903
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:917
QSet< QgsFeatureId > QgsFeatureIds
Definition: qgsfeatureid.h:37
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
Definition: qgsfeatureid.h:28
QSet< int > QgsAttributeIds
QMap< QgsFeatureId, QgsFeature > QgsFeatureMap
Setting options for creating vector data providers.