QgsVectorDataProvider Class Reference
[QGIS core library]

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

#include <qgsvectordataprovider.h>

Inheritance diagram for QgsVectorDataProvider:

Inheritance graph
[legend]
Collaboration diagram for QgsVectorDataProvider:

Collaboration graph
[legend]

List of all members.

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

Public Member Functions

 QgsVectorDataProvider (QString uri=QString())
 Constructor of the vector provider.
virtual ~QgsVectorDataProvider ()
 Destructor.
virtual QString storageType () const
 Returns the permanent storage type for this layer as a friendly name.
virtual void select (QgsAttributeList fetchAttributes=QgsAttributeList(), QgsRectangle rect=QgsRectangle(), bool fetchGeometry=true, bool useIntersect=false)=0
 Select features based on a bounding rectangle.
virtual long updateFeatureCount ()
 This function does nothing useful, it's kept only for compatibility.
virtual bool featureAtId (int featureId, QgsFeature &feature, bool fetchGeometry=true, QgsAttributeList fetchAttributes=QgsAttributeList())
 Gets the feature at the given feature ID.
virtual bool nextFeature (QgsFeature &feature)=0
 Get the next feature resulting from a select operation.
virtual QGis::WkbType geometryType () const =0
 Get feature type.
virtual long featureCount () const =0
 Number of features in the layer.
virtual uint fieldCount () const =0
 Number of attribute fields for a feature in the layer.
virtual const QgsFieldMapfields () const =0
 Return a map of indexes with field names for this layer.
virtual QString dataComment () const
 Return a short comment for the data that this provider is providing access to (e.g.
virtual void rewind ()=0
 Restart reading features from previous select operation.
virtual QVariant minimumValue (int index)
 Returns the minimum value of an attribute.
virtual QVariant maximumValue (int index)
 Returns the maximum value of an attribute.
virtual void uniqueValues (int index, QList< QVariant > &uniqueValues, int limit=-1)
 Return unique values of an attribute.
virtual void enumValues (int index, QStringList &enumList)
 Returns the possible enum values of an attribute.
virtual bool addFeatures (QgsFeatureList &flist)
 Adds a list of features.
virtual bool deleteFeatures (const QgsFeatureIds &id)
 Deletes one or more features.
virtual bool addAttributes (const QList< QgsField > &attributes)
 Adds new attributes.
virtual bool addAttributes (const QMap< QString, QString > &attributes)
 Add new attributes.
virtual bool deleteAttributes (const QgsAttributeIds &attributes)
 Deletes existing attributes.
virtual bool changeAttributeValues (const QgsChangedAttributesMap &attr_map)
 Changes attribute values of existing features.
virtual QVariant defaultValue (int fieldId)
 Returns the default value for field specified by fieldId.
virtual bool changeGeometryValues (QgsGeometryMap &geometry_map)
 Changes geometries of existing features.
virtual bool createSpatialIndex ()
 Creates a spatial index on the datasource (if supported by the provider type).
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 void setEncoding (const QString &e)
 Set encoding used for accessing data from layer.
QString encoding () const
 Get encoding which is used for accessing data.
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 QgsAttributeList attributeIndexes ()
 Return list of indexes to fetch all attributes in nextFeature().
void enableGeometrylessFeatures (bool fetch)
 Set whether provider should also return features that don't have associated geometry.
bool supportedType (const QgsField &field) const
 check if provider supports type of field
const QList< NativeType > & nativeTypes () const
 Returns the names of the supported types.
const QMap< QString,
QVariant::Type > & 
supportedNativeTypes () const
 Returns the names of the supported types.
virtual bool doesStrictFeatureTypeCheck () const
 Returns true if the provider is strict about the type of inserted features (e.g.

Static Public Member Functions

static const QStringList & availableEncodings ()

Static Public Attributes

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

Protected Member Functions

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

Protected Attributes

bool mCacheMinMaxDirty
QMap< int, QVariant > mCacheMinValues
QMap< int, QVariant > mCacheMaxValues
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.
QgsAttributeList mAttributesToFetch
 List of attribute indices to fetch with nextFeature calls.
QList< NativeTypemNativeTypes
 The names of the providers native types.

Private Attributes

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

Static Private Attributes

static QStringList smEncodings

Classes

struct  NativeType


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

Definition at line 49 of file qgsvectordataprovider.h.


Constructor & Destructor Documentation

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

Constructor of the vector provider.

Parameters:
uri uniform resource locator (URI) for a dataset

Definition at line 28 of file qgsvectordataprovider.cpp.

References setEncoding().

QgsVectorDataProvider::~QgsVectorDataProvider (  )  [virtual]

Destructor.

Definition at line 38 of file qgsvectordataprovider.cpp.


Member Function Documentation

QString QgsVectorDataProvider::storageType (  )  const [virtual]

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

Definition at line 42 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayer::storageType().

virtual void QgsVectorDataProvider::select ( QgsAttributeList  fetchAttributes = QgsAttributeList(),
QgsRectangle  rect = QgsRectangle(),
bool  fetchGeometry = true,
bool  useIntersect = false 
) [pure virtual]

Select features based on a bounding rectangle.

Features can be retrieved with calls to nextFeature.

Parameters:
fetchAttributes list of attributes which should be fetched
rect spatial filter
fetchGeometry true if the feature geometry should be fetched
useIntersect true if an accurate intersection test should be used, false if a test based on bounding box is sufficient

Referenced by QgsInterpolator::cacheBaseData(), QgsZonalStatistics::calculateStatistics(), QgsGraduatedSymbolRendererV2::createRenderer(), featureAtId(), QgsMapTip::fetchFeature(), fillMinMaxCache(), QgsVectorLayer::select(), and uniqueValues().

long QgsVectorDataProvider::updateFeatureCount (  )  [virtual]

This function does nothing useful, it's kept only for compatibility.

Todo:
to be removed

Definition at line 47 of file qgsvectordataprovider.cpp.

bool QgsVectorDataProvider::featureAtId ( int  featureId,
QgsFeature feature,
bool  fetchGeometry = true,
QgsAttributeList  fetchAttributes = QgsAttributeList() 
) [virtual]

Gets the feature at the given feature ID.

Parameters:
featureId of the feature to be returned
feature which will receive the data
fetchGeometry flag which if true, will cause the geometry to be fetched from the provider
fetchAttributes a list containing the indexes of the attribute fields to copy
Returns:
True when feature was found, otherwise false
Default implementation traverses all features until it finds the one with correct ID. In case the provider supports reading the feature directly, override this function.

Definition at line 52 of file qgsvectordataprovider.cpp.

References QgsFeature::id(), nextFeature(), and select().

Referenced by QgsVectorLayer::featureAtId(), QgsVectorLayer::nextFeature(), QgsVectorLayer::selectedFeatures(), and QgsVectorLayer::translateFeature().

virtual bool QgsVectorDataProvider::nextFeature ( QgsFeature feature  )  [pure virtual]

Get the next feature resulting from a select operation.

Parameters:
feature feature which will receive data from the provider
Returns:
true when there was a feature to fetch, false when end was hit

Referenced by QgsInterpolator::cacheBaseData(), QgsZonalStatistics::calculateStatistics(), QgsGraduatedSymbolRendererV2::createRenderer(), featureAtId(), QgsMapTip::fetchFeature(), fillMinMaxCache(), and uniqueValues().

virtual QGis::WkbType QgsVectorDataProvider::geometryType (  )  const [pure virtual]

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

Number of features in the layer.

Returns:
long containing number of features

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

virtual uint QgsVectorDataProvider::fieldCount (  )  const [pure virtual]

Number of attribute fields for a feature in the layer.

Referenced by attributeIndexes().

virtual const QgsFieldMap& QgsVectorDataProvider::fields (  )  const [pure virtual]

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 68 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayer::dataComment().

virtual void QgsVectorDataProvider::rewind (  )  [pure virtual]

Restart reading features from previous select operation.

Referenced by QgsZonalStatistics::calculateStatistics().

QVariant QgsVectorDataProvider::minimumValue ( int  index  )  [virtual]

Returns the minimum value of an attribute.

Parameters:
index the 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 300 of file qgsvectordataprovider.cpp.

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

Referenced by QgsGraduatedSymbolRendererV2::createRenderer().

QVariant QgsVectorDataProvider::maximumValue ( int  index  )  [virtual]

Returns the maximum value of an attribute.

Parameters:
index the 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 316 of file qgsvectordataprovider.cpp.

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

Referenced by QgsGraduatedSymbolRendererV2::createRenderer().

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

Return unique values of an attribute.

Parameters:
index the index of the attribute
uniqueValues values reference to the list to fill
limit maxmum number of the values to return (added in 1.4)
Default implementation simply iterates the features

Definition at line 332 of file qgsvectordataprovider.cpp.

References QgsFeature::attributeMap(), nextFeature(), and select().

Referenced by QgsAttributeEditor::createAttributeEditor().

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:
index the index of the attribute
enumList reference to the list to fill
Note:
: added in version 1.2

Definition at line 210 of file qgsvectordataprovider.h.

Referenced by QgsAttributeEditor::createAttributeEditor().

bool QgsVectorDataProvider::addFeatures ( QgsFeatureList flist  )  [virtual]

Adds a list of features.

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

Definition at line 73 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayer::commitChanges().

bool QgsVectorDataProvider::deleteFeatures ( const QgsFeatureIds id  )  [virtual]

Deletes one or more features.

Parameters:
id list containing feature ids to delete
Returns:
true in case of success and false in case of failure

Definition at line 78 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayer::commitChanges().

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

Adds new attributes.

Parameters:
attributes list of new attributes
Returns:
true in case of success and false in case of failure
Note:
added in 1.2

Definition at line 83 of file qgsvectordataprovider.cpp.

Referenced by addAttributes(), QgsZonalStatistics::calculateStatistics(), and QgsVectorLayer::commitChanges().

bool QgsVectorDataProvider::addAttributes ( const QMap< QString, QString > &  attributes  )  [virtual]

Add new attributes.

Parameters:
attributes map of attributes name as key and type as value
Returns:
true in case of success and false in case of failure
Note:
deprecated

Definition at line 88 of file qgsvectordataprovider.cpp.

References addAttributes(), and supportedNativeTypes().

bool QgsVectorDataProvider::deleteAttributes ( const QgsAttributeIds attributes  )  [virtual]

Deletes existing attributes.

Parameters:
attributes a set containing names of attributes
Returns:
true in case of success and false in case of failure

Definition at line 104 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayer::commitChanges().

bool QgsVectorDataProvider::changeAttributeValues ( const QgsChangedAttributesMap attr_map  )  [virtual]

Changes attribute values of existing features.

Parameters:
attr_map a map containing changed attributes
Returns:
true in case of success and false in case of failure

Definition at line 109 of file qgsvectordataprovider.cpp.

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

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

Returns the default value for field specified by fieldId.

Definition at line 114 of file qgsvectordataprovider.cpp.

bool QgsVectorDataProvider::changeGeometryValues ( QgsGeometryMap geometry_map  )  [virtual]

Changes geometries of existing features.

Parameters:
geometry_map A 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 119 of file qgsvectordataprovider.cpp.

Referenced by QgsVectorLayer::commitChanges().

bool QgsVectorDataProvider::createSpatialIndex (  )  [virtual]

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

Returns:
true in case of success

Definition at line 124 of file qgsvectordataprovider.cpp.

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.

Definition at line 129 of file qgsvectordataprovider.cpp.

References NoCapabilities.

Referenced by QgsVectorLayer::addFeature(), QgsVectorLayer::addFeatures(), capabilitiesString(), QgsVectorLayer::commitChanges(), QgsVectorLayer::deleteSelectedFeatures(), and QgsVectorLayer::startEditing().

QString QgsVectorDataProvider::capabilitiesString (  )  const

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

Set encoding used for accessing data from layer.

Definition at line 135 of file qgsvectordataprovider.cpp.

References mEncoding, and QgsDebugMsg.

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

QString QgsVectorDataProvider::encoding (  )  const

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 218 of file qgsvectordataprovider.cpp.

References fields().

Referenced by QgsZonalStatistics::calculateStatistics(), QgsUniqueValueRenderer::readXML(), QgsGraduatedSymbolRenderer::readXML(), and QgsContinuousColorRenderer::readXML().

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 232 of file qgsvectordataprovider.cpp.

References fields().

QgsAttributeList QgsVectorDataProvider::attributeIndexes (  )  [virtual]

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

Definition at line 246 of file qgsvectordataprovider.cpp.

References fieldCount().

Referenced by QgsVectorLayer::featureAtId(), QgsMapTip::fetchFeature(), QgsVectorLayer::pendingAllAttributesList(), and QgsVectorLayer::selectedFeatures().

void QgsVectorDataProvider::enableGeometrylessFeatures ( bool  fetch  ) 

Set whether provider should also return features that don't have associated geometry.

false by default

Definition at line 257 of file qgsvectordataprovider.cpp.

References mFetchFeaturesWithoutGeom.

bool QgsVectorDataProvider::supportedType ( const QgsField field  )  const

check if provider supports type of field

Note:
added in 1.2

Definition at line 284 of file qgsvectordataprovider.cpp.

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

Referenced by QgsVectorLayer::addAttribute().

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

Returns the names of the supported types.

Note:
added in 1.2

Definition at line 262 of file qgsvectordataprovider.cpp.

References mNativeTypes.

Referenced by supportedNativeTypes().

const QMap< QString, QVariant::Type > & QgsVectorDataProvider::supportedNativeTypes (  )  const

Returns the names of the supported types.

Note:
deprecated

Definition at line 267 of file qgsvectordataprovider.cpp.

References mOldTypeList, and nativeTypes().

Referenced by QgsVectorLayer::addAttribute(), and addAttributes().

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 351 of file qgsvectordataprovider.h.

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

Definition at line 440 of file qgsvectordataprovider.cpp.

References smEncodings.

Referenced by QgsEncodingFileDialog::QgsEncodingFileDialog().

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

Definition at line 430 of file qgsvectordataprovider.cpp.

void QgsVectorDataProvider::clearMinMaxCache (  )  [protected]

Definition at line 355 of file qgsvectordataprovider.cpp.

References mCacheMinMaxDirty.

void QgsVectorDataProvider::fillMinMaxCache (  )  [protected]


Member Data Documentation

Initial value:

bitmask of all provider's editing capabilities

Definition at line 80 of file qgsvectordataprovider.h.

Referenced by QgsVectorLayer::startEditing().

Definition at line 362 of file qgsvectordataprovider.h.

Referenced by clearMinMaxCache(), and fillMinMaxCache().

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

Definition at line 363 of file qgsvectordataprovider.h.

Referenced by fillMinMaxCache(), and minimumValue().

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

Definition at line 363 of file qgsvectordataprovider.h.

Referenced by fillMinMaxCache(), and maximumValue().

QTextCodec* QgsVectorDataProvider::mEncoding [protected]

Encoding.

Definition at line 366 of file qgsvectordataprovider.h.

Referenced by encoding(), and setEncoding().

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

Definition at line 369 of file qgsvectordataprovider.h.

Referenced by enableGeometrylessFeatures().

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

Definition at line 372 of file qgsvectordataprovider.h.

List of attribute indices to fetch with nextFeature calls.

Definition at line 375 of file qgsvectordataprovider.h.

The names of the providers native types.

Definition at line 378 of file qgsvectordataprovider.h.

Referenced by nativeTypes(), and supportedType().

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

old notation

Definition at line 382 of file qgsvectordataprovider.h.

Referenced by supportedNativeTypes().

QStringList QgsVectorDataProvider::smEncodings [static, private]

Definition at line 384 of file qgsvectordataprovider.h.

Referenced by availableEncodings().


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

Generated on Sat Feb 4 19:17:57 2012 for Quantum GIS API Documentation by  doxygen 1.5.6