QGIS API Documentation  master-3f58142
QgsVectorDataProvider Class Reference

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

#include <qgsvectordataprovider.h>

+ Inheritance diagram for QgsVectorDataProvider:
+ Collaboration diagram for QgsVectorDataProvider:

List of all members.

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
}
 enumeration with capabilities that providers might implement More...

Public Member Functions

 QgsVectorDataProvider (QString uri=QString())
 Constructor of the vector provider.
virtual ~QgsVectorDataProvider ()
 Destructor.
virtual bool addAttributes (const QList< QgsField > &attributes)
 Adds new attributes.
virtual bool addFeatures (QgsFeatureList &flist)
 Adds a list of features.
virtual QgsAttributeList attributeIndexes ()
 Return list of indexes to fetch all attributes in nextFeature()
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.
QString capabilitiesString () const
 Returns the above in friendly format.
virtual bool changeAttributeValues (const QgsChangedAttributesMap &attr_map)
 Changes attribute values of existing features.
virtual bool changeGeometryValues (QgsGeometryMap &geometry_map)
 Changes geometries of existing features.
void clearErrors ()
virtual bool createAttributeIndex (int field)
 Create an attribute index on the datasource.
virtual bool createSpatialIndex ()
 Creates a spatial index on the datasource (if supported by the provider type).
virtual QString dataComment () const
 Return a short comment for the data that this provider is providing access to (e.g.
virtual QVariant defaultValue (int fieldId)
 Returns the default value for field specified by fieldId.
virtual bool deleteAttributes (const QgsAttributeIds &attributes)
 Deletes existing attributes.
virtual bool deleteFeatures (const QgsFeatureIds &id)
 Deletes one or more features.
virtual bool doesStrictFeatureTypeCheck () const
 Returns true if the provider is strict about the type of inserted features (e.g.
QString encoding () const
 Get encoding which is used for accessing data.
virtual void enumValues (int index, QStringList &enumList)
 Returns the possible enum values of an attribute.
QStringList errors ()
virtual long featureCount () const =0
 Number of features in the layer.
int fieldNameIndex (const QString &fieldName) const
 Returns the index of a field name or -1 if the field does not exist.
QMap< QString, int > fieldNameMap () const
 Return a map where the key is the name of the field and the value is its index.
virtual const QgsFieldsfields () const =0
 Return a map of indexes with field names for this layer.
virtual QGis::WkbType geometryType () const =0
 Get feature type.
virtual QgsFeatureIterator getFeatures (const QgsFeatureRequest &request=QgsFeatureRequest())=0
 Query the provider for features specified in request.
bool hasErrors ()
virtual bool isSaveAndLoadStyleToDBSupported ()
 It returns false by default.
virtual QVariant maximumValue (int index)
 Returns the maximum value of an attribute.
virtual QVariant minimumValue (int index)
 Returns the minimum value of an attribute.
const QList< NativeType > & nativeTypes () const
 Returns the names of the supported types.
virtual QgsAttrPalIndexNameHash palAttributeIndexNames () const
 Return list of indexes to names for QgsPalLabeling fix.
virtual QgsAttributeList pkAttributeIndexes ()
 Return list of indexes of fields that make up the primary key.
virtual void setEncoding (const QString &e)
 Set encoding used for accessing data from layer.
virtual QString storageType () const
 Returns the permanent storage type for this layer as a friendly name.
bool supportedType (const QgsField &field) const
 check if provider supports type of field
virtual void uniqueValues (int index, QList< QVariant > &uniqueValues, int limit=-1)
 Return unique values of an attribute.

Static Public Member Functions

static const QStringList & availableEncodings ()
 Returns a list of available encodings.

Static Public Attributes

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

Protected Member Functions

void clearMinMaxCache ()
QVariant convertValue (QVariant::Type type, QString value)
void fillMinMaxCache ()
void pushError (QString msg)

Protected Attributes

QgsAttributeList mAttributesToFetch
 List of attribute indices to fetch with nextFeature calls.
QgsAttrPalIndexNameHash mAttrPalIndexName
 Old-style mapping of index to name for QgsPalLabeling fix.
QMap< int, QVariant > mCacheMaxValues
bool mCacheMinMaxDirty
QMap< int, QVariant > mCacheMinValues
QTextCodec * mEncoding
 Encoding.
bool mFetchFeaturesWithoutGeom
 should provider fetch also features that don't have geometry?
bool mFetchGeom
 True if geometry should be added to the features in nextFeature calls.
QList< NativeTypemNativeTypes
 The names of the providers native types.

Private Attributes

QStringList mErrors
QMap< QString, QVariant::Type > mOldTypeList
 old notation

Static Private Attributes

static QStringList smEncodings

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.

Definition at line 48 of file qgsvectordataprovider.h.


Member Enumeration Documentation

enumeration with capabilities that providers might implement

Enumerator:
NoCapabilities 

provider has no capabilities

AddFeatures 

allows adding features

DeleteFeatures 

allows deletion of features

ChangeAttributeValues 

allows modification of attribute values

AddAttributes 

allows addition of new attributes (fields)

DeleteAttributes 

allows deletion of attributes (fields)

SaveAsShapefile 

DEPRECATED - do not use.

CreateSpatialIndex 

allows creation of spatial index

SelectAtId 

fast access to features using their ID

ChangeGeometries 

allows modifications of geometries

SelectGeometryAtId 

DEPRECATED - do not use.

RandomSelectGeometryAtId 

DEPRECATED - do not use.

SequentialSelectGeometryAtId 

DEPRECATED - do not use.

CreateAttributeIndex 
SelectEncoding 

allows user to select encoding

Definition at line 58 of file qgsvectordataprovider.h.


Constructor & Destructor Documentation

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

Constructor of the vector provider.

Parameters:
uriuniform resource locator (URI) for a dataset

Definition at line 30 of file qgsvectordataprovider.cpp.

References setEncoding().

Destructor.

Definition at line 40 of file qgsvectordataprovider.cpp.


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
Note:
added in 1.2

Definition at line 66 of file qgsvectordataprovider.cpp.

Referenced by QgsZonalStatistics::calculateStatistics(), QgsVectorLayerEditBuffer::commitChanges(), and QgsGeometryAnalyzer::eventLayer().

Adds a list of features.

Returns:
true in case of success and false in case of failure

Definition at line 54 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayerEditBuffer::commitChanges(), QgsGeometryAnalyzer::eventLayer(), and QgsVectorLayerImport::flushBuffer().

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

Definition at line 229 of file qgsvectordataprovider.cpp.

References QgsFields::count(), and fields().

const QStringList & QgsVectorDataProvider::availableEncodings ( ) [static]

Returns a list of available encodings.

Definition at line 406 of file qgsvectordataprovider.cpp.

References _compareEncodings(), and smEncodings.

Referenced by QgsEncodingFileDialog::QgsEncodingFileDialog().

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

Definition at line 78 of file qgsvectordataprovider.cpp.

Referenced by QgsZonalStatistics::calculateStatistics(), and QgsVectorLayerEditBuffer::commitChanges().

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

Definition at line 90 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayerEditBuffer::commitChanges().

Definition at line 316 of file qgsvectordataprovider.cpp.

References mCacheMinMaxDirty.

QVariant QgsVectorDataProvider::convertValue ( QVariant::Type  type,
QString  value 
) [protected]

Definition at line 391 of file qgsvectordataprovider.cpp.

bool QgsVectorDataProvider::createAttributeIndex ( int  field) [virtual]

Create an attribute index on the datasource.

Definition at line 101 of file qgsvectordataprovider.cpp.

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

Returns:
true in case of success

Definition at line 96 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayerImport::createSpatialIndex().

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).

Definition at line 49 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayer::dataComment().

QVariant QgsVectorDataProvider::defaultValue ( int  fieldId) [virtual]

Returns the default value for field specified by fieldId.

Definition at line 84 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayerEditUtils::splitFeatures().

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

Definition at line 72 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayerEditBuffer::commitChanges().

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

Definition at line 60 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayerEditBuffer::commitChanges().

virtual bool QgsVectorDataProvider::doesStrictFeatureTypeCheck ( ) const [inline, virtual]

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

no multipolygon in a polygon layer)

Note:
: added in version 1.4

Definition at line 311 of file qgsvectordataprovider.h.

virtual void QgsVectorDataProvider::enumValues ( int  index,
QStringList &  enumList 
) [inline, virtual]

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
Note:
: added in version 1.2

Definition at line 176 of file qgsvectordataprovider.h.

Referenced by QgsAttributeEditor::createAttributeEditor().

virtual long QgsVectorDataProvider::featureCount ( ) const [pure virtual]

Number of features in the layer.

Returns:
long containing number of features

Referenced by QgsZonalStatistics::calculateStatistics(), QgsVectorLayer::extent(), QgsVectorLayer::featureCount(), and QgsVectorLayer::pendingFeatureCount().

int QgsVectorDataProvider::fieldNameIndex ( const QString &  fieldName) const

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

Definition at line 202 of file qgsvectordataprovider.cpp.

References QgsFields::count(), fields(), and QgsDataProvider::name().

Referenced by QgsZonalStatistics::calculateStatistics().

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

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

Definition at line 216 of file qgsvectordataprovider.cpp.

References QgsFields::count(), fields(), and QgsDataProvider::name().

Referenced by QgsVectorLayer::attributeEditorElementFromDomElement().

virtual bool QgsVectorDataProvider::isSaveAndLoadStyleToDBSupported ( ) [inline, virtual]

It returns false by default.

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

Definition at line 336 of file qgsvectordataprovider.h.

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.

Definition at line 277 of file qgsvectordataprovider.cpp.

References fields(), fillMinMaxCache(), mCacheMaxValues, and QgsDebugMsg.

Referenced by QgsVectorLayer::maximumValue().

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.

Definition at line 261 of file qgsvectordataprovider.cpp.

References fields(), fillMinMaxCache(), mCacheMinValues, and QgsDebugMsg.

Referenced by QgsVectorLayer::minimumValue().

Returns the names of the supported types.

Note:
added in 1.2

Definition at line 240 of file qgsvectordataprovider.cpp.

References mNativeTypes.

Referenced by QgsOfflineEditing::applyAttributesAdded().

Return list of indexes to names for QgsPalLabeling fix.

Definition at line 280 of file qgsvectordataprovider.h.

Referenced by QgsPalLayerSettings::readDataDefinedProperty().

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

Note:
added in 2.0

Definition at line 275 of file qgsvectordataprovider.h.

Referenced by QgsVectorLayer::pendingPkAttributesList().

void QgsVectorDataProvider::pushError ( QString  msg) [protected]

Definition at line 484 of file qgsvectordataprovider.cpp.

References mErrors.

void QgsVectorDataProvider::setEncoding ( const QString &  e) [virtual]

Set encoding used for accessing data from layer.

Definition at line 113 of file qgsvectordataprovider.cpp.

References QgsMessageLog::logMessage(), mEncoding, and tr.

Referenced by QgsVectorDataProvider(), QgsVectorLayer::readXml(), and QgsVectorLayer::setProviderEncoding().

QString QgsVectorDataProvider::storageType ( ) const [virtual]

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

Definition at line 44 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayer::storageType().

bool QgsVectorDataProvider::supportedType ( const QgsField field) const

check if provider supports type of field

Note:
added in 1.2

Definition at line 245 of file qgsvectordataprovider.cpp.

References QgsField::length(), mNativeTypes, QgsField::precision(), and QgsField::type().

Referenced by QgsVectorLayerEditBuffer::addAttribute().

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 (added in 1.4)

Default implementation simply iterates the features

Definition at line 293 of file qgsvectordataprovider.cpp.

References QgsFeature::attribute(), getFeatures(), and QgsFeatureIterator::nextFeature().

Referenced by QgsAttributeEditor::createAttributeEditor(), and QgsVectorLayer::uniqueValues().


Member Data Documentation

Initial value:

bitmask of all provider's editing capabilities

Definition at line 92 of file qgsvectordataprovider.h.

Referenced by QgsVectorLayer::startEditing().

List of attribute indices to fetch with nextFeature calls.

Definition at line 357 of file qgsvectordataprovider.h.

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

Definition at line 365 of file qgsvectordataprovider.h.

QMap<int, QVariant> QgsVectorDataProvider::mCacheMaxValues [protected]

Definition at line 345 of file qgsvectordataprovider.h.

Referenced by fillMinMaxCache(), and maximumValue().

Definition at line 344 of file qgsvectordataprovider.h.

Referenced by clearMinMaxCache(), and fillMinMaxCache().

QMap<int, QVariant> QgsVectorDataProvider::mCacheMinValues [protected]

Definition at line 345 of file qgsvectordataprovider.h.

Referenced by fillMinMaxCache(), and minimumValue().

QTextCodec* QgsVectorDataProvider::mEncoding [protected]

Encoding.

Definition at line 348 of file qgsvectordataprovider.h.

Referenced by encoding(), and setEncoding().

QStringList QgsVectorDataProvider::mErrors [private]

Definition at line 372 of file qgsvectordataprovider.h.

Referenced by clearErrors(), errors(), hasErrors(), and pushError().

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

Definition at line 351 of file qgsvectordataprovider.h.

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

Definition at line 354 of file qgsvectordataprovider.h.

The names of the providers native types.

Definition at line 360 of file qgsvectordataprovider.h.

Referenced by nativeTypes(), and supportedType().

QMap<QString, QVariant::Type> QgsVectorDataProvider::mOldTypeList [private]

old notation

Definition at line 369 of file qgsvectordataprovider.h.

QStringList QgsVectorDataProvider::smEncodings [static, private]

Definition at line 374 of file qgsvectordataprovider.h.

Referenced by availableEncodings().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines