QGIS API Documentation  3.4.15-Madeira (e83d02e274)
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 
18 #include "qgsvectordataprovider.h"
20 #include "qgsfields.h"
21 
23 typedef QMap<QgsFeatureId, QgsFeature> QgsFeatureMap;
24 
25 class QgsSpatialIndex;
26 
27 class QgsMemoryFeatureIterator;
28 
29 class QgsMemoryProvider : public QgsVectorDataProvider
30 {
31  Q_OBJECT
32 
33  public:
34  explicit QgsMemoryProvider( const QString &uri, const QgsVectorDataProvider::ProviderOptions &options );
35 
36  ~QgsMemoryProvider() override;
37 
39  static QString providerKey();
41  static QString providerDescription();
42 
47  static QgsMemoryProvider *createProvider( const QString &uri, const QgsVectorDataProvider::ProviderOptions &options );
48 
49  /* Implementation of functions from QgsVectorDataProvider */
50 
51  QgsAbstractFeatureSource *featureSource() const override;
52 
53  QString dataSourceUri( bool expandAuthConfig = true ) const override;
54  QString storageType() const override;
55  QgsFeatureIterator getFeatures( const QgsFeatureRequest &request ) const override;
56  QgsWkbTypes::Type wkbType() const override;
57  long featureCount() const override;
58  QgsFields fields() const override;
59  bool addFeatures( QgsFeatureList &flist, QgsFeatureSink::Flags flags = nullptr ) override;
60  bool deleteFeatures( const QgsFeatureIds &id ) override;
61  bool addAttributes( const QList<QgsField> &attributes ) override;
62  bool renameAttributes( const QgsFieldNameMap &renamedAttributes ) override;
63  bool deleteAttributes( const QgsAttributeIds &attributes ) override;
64  bool changeAttributeValues( const QgsChangedAttributesMap &attr_map ) override;
65  bool changeGeometryValues( const QgsGeometryMap &geometry_map ) override;
66  QString subsetString() const override;
67  bool setSubsetString( const QString &theSQL, bool updateFeatureCount = true ) override;
68  bool supportsSubsetString() const override { return true; }
69  bool createSpatialIndex() override;
70  QgsVectorDataProvider::Capabilities capabilities() const override;
71 
72  /* Implementation of functions from QgsDataProvider */
73 
74  QString name() const override;
75  QString description() const override;
76  QgsRectangle extent() const override;
77  void updateExtents() override;
78  bool isValid() const override;
79  QgsCoordinateReferenceSystem crs() const override;
80 
81  private:
82  // Coordinate reference system
84 
85  // fields
86  QgsFields mFields;
87  QgsWkbTypes::Type mWkbType;
88  mutable QgsRectangle mExtent;
89 
90  // features
91  QgsFeatureMap mFeatures;
92  QgsFeatureId mNextFeatureId;
93 
94  // indexing
95  QgsSpatialIndex *mSpatialIndex = nullptr;
96 
97  QString mSubsetString;
98 
99  friend class QgsMemoryFeatureSource;
100 };
101 
Wrapper for iterator of features from vector data provider or vector layer.
QMap< QgsFeatureId, QgsGeometry > QgsGeometryMap
Definition: qgsfeature.h:566
virtual bool setSubsetString(const QString &subset, bool updateFeatureCount=true)
Set the subset string used to create a subset of features in the layer.
A rectangle specified with double values.
Definition: qgsrectangle.h:40
QSet< QgsFeatureId > QgsFeatureIds
Definition: qgsfeatureid.h:34
QgsWkbTypes::Type wkbType() const override=0
Returns the geometry type which is returned by this layer.
virtual void updateExtents()
Update the extents of the layer.
virtual bool addAttributes(const QList< QgsField > &attributes)
Adds new attributes to the provider.
bool addFeatures(QgsFeatureList &flist, QgsFeatureSink::Flags flags=nullptr) override
Adds a list of features to the sink.
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:571
virtual bool deleteFeatures(const QgsFeatureIds &id)
Deletes one or more features from the provider.
virtual bool renameAttributes(const QgsFieldNameMap &renamedAttributes)
Renames existing attributes.
qint64 QgsFeatureId
Definition: qgsfeatureid.h:25
Container of fields for a vector layer.
Definition: qgsfields.h:42
virtual QString name() const =0
Returns a provider name.
virtual QgsAbstractFeatureSource * featureSource() const =0
Returns feature source object that can be used for querying provider&#39;s data.
QSet< int > QgsAttributeIds
virtual bool createSpatialIndex()
Creates a spatial index on the datasource (if supported by the provider type).
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:68
virtual bool isValid() const =0
Returns true if this is a valid layer.
virtual QgsCoordinateReferenceSystem crs() const =0
Returns the coordinate system for the data source.
QgsFields fields() const override=0
Returns the fields associated with this data provider.
virtual bool changeAttributeValues(const QgsChangedAttributesMap &attr_map)
Changes attribute values of existing features.
virtual QString storageType() const
Returns the permanent storage type for this layer as a friendly name.
This class wraps a request for features to a vector layer (or directly its vector data provider)...
virtual QString dataSourceUri(bool expandAuthConfig=false) const
Gets the data source specification.
virtual bool supportsSubsetString() const
Returns true if the provider supports setting of subset strings.
virtual bool changeGeometryValues(const QgsGeometryMap &geometry_map)
Changes geometries of existing features.
Base class that can be used for any class that is capable of returning features.
QMap< int, QString > QgsFieldNameMap
Definition: qgsattributes.h:44
QMap< QgsFeatureId, QgsFeature > QgsFeatureMap
Setting options for creating vector data providers.
A spatial index for QgsFeature objects.
QMap< QgsFeatureId, QgsAttributeMap > QgsChangedAttributesMap
Definition: qgsfeature.h:557
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const override=0
Query the provider for features specified in request.
virtual QgsVectorDataProvider::Capabilities capabilities() const
Returns flags containing the supported capabilities.
long featureCount() const override=0
Number of features in the layer.
This class represents a coordinate reference system (CRS).
virtual QString description() const =0
Returns description.
virtual bool deleteAttributes(const QgsAttributeIds &attributes)
Deletes existing attributes from the provider.
virtual QgsRectangle extent() const =0
Returns the extent of the layer.
virtual QString subsetString() const
Returns the subset definition string (typically sql) currently in use by the layer and used by the pr...
This is the base class for vector data providers.