QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
QgsVectorDataProvider Class Referenceabstract

This is the base class for vector data providers. More...

#include <qgsvectordataprovider.h>

Inheritance diagram for QgsVectorDataProvider:
Inheritance graph
[legend]

Classes

struct  NativeType
 

Public Types

enum  Capability {
  NoCapabilities = 0, AddFeatures = 1, DeleteFeatures = 1 << 1, ChangeAttributeValues = 1 << 2,
  AddAttributes = 1 << 3, DeleteAttributes = 1 << 4, SaveAsShapefile = 1 << 5, CreateSpatialIndex = 1 << 6,
  SelectAtId = 1 << 7, ChangeGeometries = 1 << 8, SelectGeometryAtId = 1 << 9, RandomSelectGeometryAtId = 1 << 10,
  SequentialSelectGeometryAtId = 1 << 11, CreateAttributeIndex = 1 << 12, SelectEncoding = 1 << 13, SimplifyGeometries = 1 << 14,
  SimplifyGeometriesWithTopologicalValidation = 1 << 15
}
 enumeration with capabilities that providers might implement More...
 
- Public Types inherited from QgsDataProvider
enum  DataCapability {
  NoDataCapabilities = 0, File = 1, Dir = 1 << 1, Database = 1 << 2,
  Net = 1 << 3
}
 

Public Member Functions

 QgsVectorDataProvider (QString uri=QString())
 Constructor of the vector provider. More...
 
virtual ~QgsVectorDataProvider ()
 Destructor. More...
 
virtual QgsAbstractFeatureSourcefeatureSource () const
 Return feature source object that can be used for querying provider's data. More...
 
virtual QString storageType () const
 Returns the permanent storage type for this layer as a friendly name. More...
 
virtual QgsFeatureIterator getFeatures (const QgsFeatureRequest &request=QgsFeatureRequest())=0
 Query the provider for features specified in request. More...
 
virtual QGis::WkbType geometryType () const =0
 Get feature type. More...
 
virtual long featureCount () const =0
 Number of features in the layer. More...
 
virtual const QgsFieldsfields () const =0
 Return a map of indexes with field names for this layer. More...
 
virtual QString dataComment () const
 Return a short comment for the data that this provider is providing access to (e.g. More...
 
virtual QVariant minimumValue (int index)
 Returns the minimum value of an attribute. More...
 
virtual QVariant maximumValue (int index)
 Returns the maximum value of an attribute. More...
 
virtual void uniqueValues (int index, QList< QVariant > &uniqueValues, int limit=-1)
 Return unique values of an attribute. More...
 
virtual void enumValues (int index, QStringList &enumList)
 Returns the possible enum values of an attribute. More...
 
virtual bool addFeatures (QgsFeatureList &flist)
 Adds a list of features. More...
 
virtual bool deleteFeatures (const QgsFeatureIds &id)
 Deletes one or more features. More...
 
virtual bool addAttributes (const QList< QgsField > &attributes)
 Adds new attributes. More...
 
virtual bool deleteAttributes (const QgsAttributeIds &attributes)
 Deletes existing attributes. More...
 
virtual bool changeAttributeValues (const QgsChangedAttributesMap &attr_map)
 Changes attribute values of existing features. More...
 
virtual QVariant defaultValue (int fieldId)
 Returns the default value for field specified by fieldId. More...
 
virtual bool changeGeometryValues (QgsGeometryMap &geometry_map)
 Changes geometries of existing features. More...
 
virtual bool createSpatialIndex ()
 Creates a spatial index on the datasource (if supported by the provider type). More...
 
virtual bool createAttributeIndex (int field)
 Create an attribute index on the datasource. More...
 
virtual int capabilities () const
 Returns a bitmask containing the supported capabilities Note, some capabilities may change depending on whether a spatial filter is active on this provider, so it may be prudent to check this value per intended operation. More...
 
QString capabilitiesString () const
 Returns the above in friendly format. More...
 
virtual void setEncoding (const QString &e)
 Set encoding used for accessing data from layer. More...
 
QString encoding () const
 Get encoding which is used for accessing data. More...
 
int fieldNameIndex (const QString &fieldName) const
 Returns the index of a field name or -1 if the field does not exist. More...
 
QMap< QString, int > fieldNameMap () const
 Return a map where the key is the name of the field and the value is its index. More...
 
virtual QgsAttributeList attributeIndexes ()
 Return list of indexes to fetch all attributes in nextFeature() More...
 
virtual QgsAttributeList pkAttributeIndexes ()
 Return list of indexes of fields that make up the primary key. More...
 
virtual QgsAttrPalIndexNameHash palAttributeIndexNames () const
 Return list of indexes to names for QgsPalLabeling fix. More...
 
bool supportedType (const QgsField &field) const
 check if provider supports type of field More...
 
const QList< NativeType > & nativeTypes () const
 Returns the names of the supported types. More...
 
virtual bool doesStrictFeatureTypeCheck () const
 Returns true if the provider is strict about the type of inserted features (e.g. More...
 
bool hasErrors ()
 Provider has errors to report. More...
 
void clearErrors ()
 Clear recorded errors. More...
 
QStringList errors ()
 Get recorded errors. More...
 
virtual bool isSaveAndLoadStyleToDBSupported ()
 It returns false by default. More...
 
- Public Member Functions inherited from QgsDataProvider
 QgsDataProvider (QString const &uri="")
 
virtual ~QgsDataProvider ()
 We need this so the subclass destructors get called. More...
 
virtual
QgsCoordinateReferenceSystem 
crs ()=0
 
virtual void setDataSourceUri (const QString &uri)
 Set the data source specification. More...
 
virtual QString dataSourceUri () const
 Get the data source specification. More...
 
virtual QgsRectangle extent ()=0
 Get the extent of the layer. More...
 
virtual bool isValid ()=0
 Returns true if this is a valid layer. More...
 
virtual void updateExtents ()
 Update the extents of the layer. More...
 
virtual bool setSubsetString (QString subset, bool updateFeatureCount=true)
 Set the subset string used to create a subset of features in the layer. More...
 
virtual bool supportsSubsetString ()
 provider supports setting of subset strings More...
 
virtual QString subsetString ()
 Returns the subset definition string (typically sql) currently in use by the layer and used by the provider to limit the feature set. More...
 
virtual QStringList subLayers () const
 Sub-layers handled by this provider, in order from bottom to top. More...
 
virtual QStringList subLayerStyles () const
 Sub-layer styles for each sub-layer handled by this provider, in order from bottom to top. More...
 
virtual uint subLayerCount () const
 return the number of layers for the current data source More...
 
virtual void setLayerOrder (const QStringList &layers)
 Reorder the list of layer names to be rendered by this provider (in order from bottom to top) More...
 
virtual void setSubLayerVisibility (const QString &name, bool vis)
 Set the visibility of the given sublayer name. More...
 
virtual QString name () const =0
 return a provider name More...
 
virtual QString description () const =0
 return description More...
 
virtual QString fileVectorFilters () const
 return vector file filter string More...
 
virtual QString fileRasterFilters () const
 return raster file filter string More...
 
virtual void reloadData ()
 Reloads the data from the source. More...
 
virtual QDateTime timestamp () const
 Time stamp of data source in the moment when data/metadata were loaded by provider. More...
 
virtual QDateTime dataTimestamp () const
 Current time stamp of data source. More...
 
virtual QgsError error () const
 Get current status error. More...
 

Static Public Member Functions

static const QStringList & availableEncodings ()
 Returns a list of available encodings. More...
 
static QVariant convertValue (QVariant::Type type, QString value)
 

Static Public Attributes

static const int EditingCapabilities
 bitmask of all provider's editing capabilities More...
 

Protected Member Functions

void clearMinMaxCache ()
 
void fillMinMaxCache ()
 
void pushError (QString msg)
 
- Protected Member Functions inherited from QgsDataProvider
void appendError (const QgsErrorMessage &theMessage)
 Add error message. More...
 
void setError (const QgsError &theError)
 Set error message. More...
 

Protected Attributes

bool mCacheMinMaxDirty
 
QMap< int, QVariant > mCacheMinValues
 
QMap< int, QVariant > mCacheMaxValues
 
QTextCodec * mEncoding
 Encoding. More...
 
bool mFetchFeaturesWithoutGeom
 should provider fetch also features that don't have geometry? More...
 
bool mFetchGeom
 True if geometry should be added to the features in nextFeature calls. More...
 
QgsAttributeList mAttributesToFetch
 List of attribute indices to fetch with nextFeature calls. More...
 
QList< NativeTypemNativeTypes
 The names of the providers native types. More...
 
QgsAttrPalIndexNameHash mAttrPalIndexName
 Old-style mapping of index to name for QgsPalLabeling fix. More...
 
- Protected Attributes inherited from QgsDataProvider
QDateTime mTimestamp
 Timestamp of data in the moment when the data were loaded by provider. More...
 
QgsError mError
 Error. More...
 

Additional Inherited Members

- Signals inherited from QgsDataProvider
void fullExtentCalculated ()
 This is emitted whenever the worker thread has fully calculated the PostGIS extents for this layer, and its event has been received by this provider. More...
 
void dataChanged ()
 This is emitted whenever an asynchronous operation has finished and the data should be redrawn. More...
 
void dataChanged (int changed)
 This is emitted whenever data or metadata (e.g. More...
 

Detailed Description

This is the base class for vector data providers.

Data providers abstract the retrieval and writing (where supported) of feature and attribute information from a spatial datasource.

Constructor & Destructor Documentation

QgsVectorDataProvider::QgsVectorDataProvider ( QString  uri = QString())

Constructor of the vector provider.

Parameters
uriuniform resource locator (URI) for a dataset
QgsVectorDataProvider::~QgsVectorDataProvider ( )
virtual

Destructor.

Member Function Documentation

bool QgsVectorDataProvider::addAttributes ( const QList< QgsField > &  attributes)
virtual

Adds new attributes.

Parameters
attributeslist of new attributes
Returns
true in case of success and false in case of failure
bool QgsVectorDataProvider::addFeatures ( QgsFeatureList flist)
virtual

Adds a list of features.

Returns
true in case of success and false in case of failure
QgsAttributeList QgsVectorDataProvider::attributeIndexes ( )
virtual

Return list of indexes to fetch all attributes in nextFeature()

const QStringList & QgsVectorDataProvider::availableEncodings ( )
static

Returns a list of available encodings.

int QgsVectorDataProvider::capabilities ( ) const
virtual

Returns a bitmask containing the supported capabilities Note, some capabilities may change depending on whether a spatial filter is active on this provider, so it may be prudent to check this value per intended operation.

QString QgsVectorDataProvider::capabilitiesString ( ) const

Returns the above in friendly format.

bool QgsVectorDataProvider::changeAttributeValues ( const QgsChangedAttributesMap attr_map)
virtual

Changes attribute values of existing features.

Parameters
attr_mapa map containing changed attributes
Returns
true in case of success and false in case of failure
bool QgsVectorDataProvider::changeGeometryValues ( QgsGeometryMap geometry_map)
virtual

Changes geometries of existing features.

Parameters
geometry_mapA QgsGeometryMap whose index contains the feature IDs that will have their geometries changed. The second map parameter being the new geometries themselves
Returns
True in case of success and false in case of failure
void QgsVectorDataProvider::clearErrors ( )

Clear recorded errors.

void QgsVectorDataProvider::clearMinMaxCache ( )
protected
QVariant QgsVectorDataProvider::convertValue ( QVariant::Type  type,
QString  value 
)
static
bool QgsVectorDataProvider::createAttributeIndex ( int  field)
virtual

Create an attribute index on the datasource.

bool QgsVectorDataProvider::createSpatialIndex ( )
virtual

Creates a spatial index on the datasource (if supported by the provider type).

Returns
true in case of success
QString QgsVectorDataProvider::dataComment ( ) const
virtual

Return a short comment for the data that this provider is providing access to (e.g.

the comment for postgres table).

QVariant QgsVectorDataProvider::defaultValue ( int  fieldId)
virtual

Returns the default value for field specified by fieldId.

bool QgsVectorDataProvider::deleteAttributes ( const QgsAttributeIds attributes)
virtual

Deletes existing attributes.

Parameters
attributesa set containing indices of attributes
Returns
true in case of success and false in case of failure
bool QgsVectorDataProvider::deleteFeatures ( const QgsFeatureIds id)
virtual

Deletes one or more features.

Parameters
idlist containing feature ids to delete
Returns
true in case of success and false in case of failure
virtual bool QgsVectorDataProvider::doesStrictFeatureTypeCheck ( ) const
inlinevirtual

Returns true if the provider is strict about the type of inserted features (e.g.

no multipolygon in a polygon layer)

QString QgsVectorDataProvider::encoding ( ) const

Get encoding which is used for accessing data.

virtual void QgsVectorDataProvider::enumValues ( int  index,
QStringList &  enumList 
)
inlinevirtual

Returns the possible enum values of an attribute.

Returns an empty stringlist if a provider does not support enum types or if the given attribute is not an enum type.

Parameters
indexthe index of the attribute
enumListreference to the list to fill
QStringList QgsVectorDataProvider::errors ( )

Get recorded errors.

virtual long QgsVectorDataProvider::featureCount ( ) const
pure virtual

Number of features in the layer.

Returns
long containing number of features
virtual QgsAbstractFeatureSource* QgsVectorDataProvider::featureSource ( ) const
inlinevirtual

Return feature source object that can be used for querying provider's data.

The returned feature source is independent from provider - any changes to provider's state (e.g. change of subset string) will not be reflected in the feature source, therefore it can be safely used for processing in background without having to care about possible changes within provider that may happen concurrently. Also, even in the case of provider being deleted, any feature source obtained from the provider will be kept alive and working (they are independent and owned by the caller).

Sometimes there are cases when some data needs to be shared between vector data provider and its feature source. In such cases, the implementation must ensure that the data is not susceptible to run condition. For example, if it is possible that both feature source and provider may need reading/writing to some shared data at the same time, some synchronization mechanisms must be used (e.g. mutexes) to prevent data corruption.

Note
added in 2.4
Returns
new instance of QgsAbstractFeatureSource (caller is responsible for deleting it)
int QgsVectorDataProvider::fieldNameIndex ( const QString &  fieldName) const

Returns the index of a field name or -1 if the field does not exist.

QMap< QString, int > QgsVectorDataProvider::fieldNameMap ( ) const

Return a map where the key is the name of the field and the value is its index.

virtual const QgsFields& QgsVectorDataProvider::fields ( ) const
pure virtual

Return a map of indexes with field names for this layer.

Returns
map of fields
See also
QgsFields
void QgsVectorDataProvider::fillMinMaxCache ( )
protected
virtual QGis::WkbType QgsVectorDataProvider::geometryType ( ) const
pure virtual

Get feature type.

Returns
int representing the feature type
virtual QgsFeatureIterator QgsVectorDataProvider::getFeatures ( const QgsFeatureRequest request = QgsFeatureRequest())
pure virtual

Query the provider for features specified in request.

bool QgsVectorDataProvider::hasErrors ( )

Provider has errors to report.

virtual bool QgsVectorDataProvider::isSaveAndLoadStyleToDBSupported ( )
inlinevirtual

It returns false by default.

Must be implemented by providers that support saving and loading styles to db returning true

QVariant QgsVectorDataProvider::maximumValue ( int  index)
virtual

Returns the maximum value of an attribute.

Parameters
indexthe index of the attribute

Default implementation walks all numeric attributes and caches minimal and maximal values. If provider has facilities to retrieve maximal value directly, override this function.

QVariant QgsVectorDataProvider::minimumValue ( int  index)
virtual

Returns the minimum value of an attribute.

Parameters
indexthe index of the attribute

Default implementation walks all numeric attributes and caches minimal and maximal values. If provider has facilities to retrieve minimal value directly, override this function.

const QList< QgsVectorDataProvider::NativeType > & QgsVectorDataProvider::nativeTypes ( ) const

Returns the names of the supported types.

virtual QgsAttrPalIndexNameHash QgsVectorDataProvider::palAttributeIndexNames ( ) const
inlinevirtual

Return list of indexes to names for QgsPalLabeling fix.

virtual QgsAttributeList QgsVectorDataProvider::pkAttributeIndexes ( )
inlinevirtual

Return list of indexes of fields that make up the primary key.

void QgsVectorDataProvider::pushError ( QString  msg)
protected
void QgsVectorDataProvider::setEncoding ( const QString &  e)
virtual

Set encoding used for accessing data from layer.

QString QgsVectorDataProvider::storageType ( ) const
virtual

Returns the permanent storage type for this layer as a friendly name.

bool QgsVectorDataProvider::supportedType ( const QgsField field) const

check if provider supports type of field

void QgsVectorDataProvider::uniqueValues ( int  index,
QList< QVariant > &  uniqueValues,
int  limit = -1 
)
virtual

Return unique values of an attribute.

Parameters
indexthe index of the attribute
uniqueValuesvalues reference to the list to fill
limitmaxmum number of the values to return

Default implementation simply iterates the features

Member Data Documentation

const int QgsVectorDataProvider::EditingCapabilities
static
Initial value:

bitmask of all provider's editing capabilities

QgsAttributeList QgsVectorDataProvider::mAttributesToFetch
protected

List of attribute indices to fetch with nextFeature calls.

QgsAttrPalIndexNameHash QgsVectorDataProvider::mAttrPalIndexName
protected

Old-style mapping of index to name for QgsPalLabeling fix.

QMap<int, QVariant> QgsVectorDataProvider::mCacheMaxValues
protected
bool QgsVectorDataProvider::mCacheMinMaxDirty
protected
QMap<int, QVariant> QgsVectorDataProvider::mCacheMinValues
protected
QTextCodec* QgsVectorDataProvider::mEncoding
protected

Encoding.

bool QgsVectorDataProvider::mFetchFeaturesWithoutGeom
protected

should provider fetch also features that don't have geometry?

bool QgsVectorDataProvider::mFetchGeom
protected

True if geometry should be added to the features in nextFeature calls.

QList< NativeType > QgsVectorDataProvider::mNativeTypes
protected

The names of the providers native types.


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