#include <qgsvectordataprovider.h>
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 QgsFieldMap & | fields () 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< NativeType > | mNativeTypes |
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 |
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.
enumeration with capabilities that providers might implement
Definition at line 49 of file qgsvectordataprovider.h.
QgsVectorDataProvider::QgsVectorDataProvider | ( | QString | uri = QString() |
) |
Constructor of the vector provider.
uri | uniform resource locator (URI) for a dataset |
Definition at line 28 of file qgsvectordataprovider.cpp.
References setEncoding().
QgsVectorDataProvider::~QgsVectorDataProvider | ( | ) | [virtual] |
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.
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.
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.
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 |
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.
feature | feature which will receive data from the provider |
Referenced by QgsInterpolator::cacheBaseData(), QgsZonalStatistics::calculateStatistics(), QgsGraduatedSymbolRendererV2::createRenderer(), featureAtId(), QgsMapTip::fetchFeature(), fillMinMaxCache(), and uniqueValues().
virtual QGis::WkbType QgsVectorDataProvider::geometryType | ( | ) | const [pure virtual] |
Get feature type.
Referenced by QgsGeometryAnalyzer::dissolve(), QgsVectorLayer::geometryType(), QgsOverlayAnalyzer::intersection(), QgsVectorLayer::setDataProvider(), and QgsGeometryAnalyzer::simplify().
virtual long QgsVectorDataProvider::featureCount | ( | ) | const [pure virtual] |
Number of features in the layer.
Referenced by QgsZonalStatistics::calculateStatistics(), QgsVectorLayer::featureCount(), QgsVectorLayer::pendingFeatureCount(), and QgsVectorLayer::updateExtents().
virtual uint QgsVectorDataProvider::fieldCount | ( | ) | const [pure virtual] |
virtual const QgsFieldMap& QgsVectorDataProvider::fields | ( | ) | const [pure virtual] |
Return a map of indexes with field names for this layer.
Referenced by QgsGeometryAnalyzer::buffer(), QgsGeometryAnalyzer::centroids(), QgsVectorLayer::commitChanges(), QgsVectorLayer::deleteAttribute(), QgsGeometryAnalyzer::dissolve(), QgsMapTip::fetchFeature(), fieldNameIndex(), fieldNameMap(), fillMinMaxCache(), QgsVectorLayer::hasCompatibleSymbology(), QgsOverlayAnalyzer::intersection(), maximumValue(), minimumValue(), QgsVectorLayer::pendingFields(), QgsVectorLayer::setDataProvider(), QgsGeometryAnalyzer::simplify(), QgsVectorLayer::startEditing(), QgsProjectFileTransform::transform0110to1000(), QgsVectorLayer::writeSymbology(), QgsUniqueValueRenderer::writeXML(), and QgsContinuousColorRenderer::writeXML().
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.
index | the index of the attribute |
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.
index | the index of the attribute |
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.
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) |
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.
index | the index of the attribute | |
enumList | reference to the list to fill |
Definition at line 210 of file qgsvectordataprovider.h.
Referenced by QgsAttributeEditor::createAttributeEditor().
bool QgsVectorDataProvider::addFeatures | ( | QgsFeatureList & | flist | ) | [virtual] |
Adds a list of features.
Definition at line 73 of file qgsvectordataprovider.cpp.
Referenced by QgsVectorLayer::commitChanges().
bool QgsVectorDataProvider::deleteFeatures | ( | const QgsFeatureIds & | id | ) | [virtual] |
Deletes one or more features.
id | list containing feature ids to delete |
Definition at line 78 of file qgsvectordataprovider.cpp.
Referenced by QgsVectorLayer::commitChanges().
bool QgsVectorDataProvider::addAttributes | ( | const QList< QgsField > & | attributes | ) | [virtual] |
Adds new attributes.
attributes | list of new attributes |
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.
attributes | map of attributes name as key and type as value |
Definition at line 88 of file qgsvectordataprovider.cpp.
References addAttributes(), and supportedNativeTypes().
bool QgsVectorDataProvider::deleteAttributes | ( | const QgsAttributeIds & | attributes | ) | [virtual] |
Deletes existing attributes.
attributes | a set containing names of attributes |
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.
attr_map | a map containing changed attributes |
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.
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 |
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).
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 |
Returns the above in friendly format.
Definition at line 158 of file qgsvectordataprovider.cpp.
References AddAttributes, AddFeatures, capabilities(), ChangeAttributeValues, ChangeGeometries, CreateSpatialIndex, DeleteAttributes, DeleteFeatures, QgsDebugMsg, and SelectAtId.
Referenced by QgsVectorLayer::capabilitiesString().
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 |
Get encoding which is used for accessing data.
Definition at line 148 of file qgsvectordataprovider.cpp.
References mEncoding.
Referenced by QgsGeometryAnalyzer::buffer(), QgsGeometryAnalyzer::centroids(), QgsGeometryAnalyzer::convexHull(), QgsGeometryAnalyzer::dissolve(), QgsGeometryAnalyzer::extent(), QgsOverlayAnalyzer::intersection(), QgsGeometryAnalyzer::simplify(), and QgsVectorLayer::writeXml().
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
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.
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.
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)
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] |
void QgsVectorDataProvider::fillMinMaxCache | ( | ) | [protected] |
Definition at line 360 of file qgsvectordataprovider.cpp.
References QgsFeature::attributeMap(), fields(), mCacheMaxValues, mCacheMinMaxDirty, mCacheMinValues, nextFeature(), and select().
Referenced by maximumValue(), and minimumValue().
const int QgsVectorDataProvider::EditingCapabilities [static] |
Initial value:
AddFeatures | DeleteFeatures | ChangeAttributeValues | ChangeGeometries | AddAttributes | DeleteAttributes
Definition at line 80 of file qgsvectordataprovider.h.
Referenced by QgsVectorLayer::startEditing().
bool QgsVectorDataProvider::mCacheMinMaxDirty [protected] |
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().
bool QgsVectorDataProvider::mFetchFeaturesWithoutGeom [protected] |
should provider fetch also features that don't have geometry?
Definition at line 369 of file qgsvectordataprovider.h.
Referenced by enableGeometrylessFeatures().
bool QgsVectorDataProvider::mFetchGeom [protected] |
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.
QList< NativeType > QgsVectorDataProvider::mNativeTypes [protected] |
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] |