|
QGIS API Documentation
master-3f58142
|
A convenience class for writing vector files to disk. More...
#include <qgsvectorfilewriter.h>
Collaboration diagram for QgsVectorFileWriter:Public Types | |
| enum | SymbologyExport { NoSymbology = 0, FeatureSymbology, SymbolLayerSymbology } |
| enum | WriterError { NoError = 0, ErrDriverNotFound, ErrCreateDataSource, ErrCreateLayer, ErrAttributeTypeUnsupported, ErrAttributeCreationFailed, ErrProjection, ErrFeatureWriteFailed, ErrInvalidLayer } |
Public Member Functions | |
| QgsVectorFileWriter (const QString &vectorFileName, const QString &fileEncoding, const QgsFields &fields, QGis::WkbType geometryType, const QgsCoordinateReferenceSystem *srs, const QString &driverName="ESRI Shapefile", const QStringList &datasourceOptions=QStringList(), const QStringList &layerOptions=QStringList(), QString *newFilename=0, SymbologyExport symbologyExport=NoSymbology) | |
| create shapefile and initialize it | |
| ~QgsVectorFileWriter () | |
| close opened shapefile for writing | |
| bool | addFeature (QgsFeature &feature, QgsFeatureRendererV2 *renderer=0, QGis::UnitType outputUnit=QGis::Meters) |
| add feature to the currently opened shapefile | |
| QMap< int, int > | attrIdxToOgrIdx () |
| QString | errorMessage () |
| retrieves error message | |
| WriterError | hasError () |
| checks whether there were any errors in constructor | |
| void | setSymbologyExport (SymbologyExport symExport) |
| void | setSymbologyScaleDenominator (double d) |
| SymbologyExport | symbologyExport () const |
| double | symbologyScaleDenominator () const |
Static Public Member Functions | |
| static QString | convertCodecNameForEncodingOption (const QString &codecName) |
| Converts codec name to string passed to ENCODING layer creation option of OGR Shapefile. | |
| static bool | deleteShapeFile (QString theFileName) |
| Delete a shapefile (and its accompanying shx / dbf / prf) | |
| static QString | fileFilterString () |
| Returns filter string that can be used for dialogs. | |
| static QString | filterForDriver (const QString &driverName) |
| Creates a filter for an OGR driver key. | |
| static QMap< QString, QString > | ogrDriverList () |
| Returns driver list that can be used for dialogs. | |
| static QMap< QString, QString > | supportedFiltersAndFormats () |
| Returns map with format filter string as key and OGR format key as value. | |
| static WriterError | writeAsVectorFormat (QgsVectorLayer *layer, const QString &fileName, const QString &fileEncoding, const QgsCoordinateReferenceSystem *destCRS, const QString &driverName="ESRI Shapefile", bool onlySelected=false, QString *errorMessage=0, const QStringList &datasourceOptions=QStringList(), const QStringList &layerOptions=QStringList(), bool skipAttributeCreation=false, QString *newFilename=0, SymbologyExport symbologyExport=NoSymbology, double symbologyScale=1.0) |
| Write contents of vector layer to an (OGR supported) vector formt. | |
Protected Member Functions | |
| OGRGeometryH | createEmptyGeometry (QGis::WkbType wkbType) |
Protected Attributes | |
| QMap< int, int > | mAttrIdxToOgrIdx |
| map attribute indizes to OGR field indexes | |
| QTextCodec * | mCodec |
| OGRDataSourceH | mDS |
| WriterError | mError |
| contains error value if construction was not successful | |
| QString | mErrorMessage |
| QgsFields | mFields |
| OGRGeometryH | mGeom |
| OGRLayerH | mLayer |
| SymbologyExport | mSymbologyExport |
| double | mSymbologyScaleDenominator |
| Scale for symbology export (e.g. | |
| QGis::WkbType | mWkbType |
| geometry type which is being used | |
Private Member Functions | |
| void | addRendererAttributes (QgsVectorLayer *vl, QgsAttributeList &attList) |
| Adds attributes needed for classification. | |
| OGRFeatureH | createFeature (QgsFeature &feature) |
| void | createSymbolLayerTable (QgsVectorLayer *vl, const QgsCoordinateTransform *ct, OGRDataSourceH ds) |
| WriterError | exportFeaturesSymbolLevels (QgsVectorLayer *layer, QgsFeatureIterator &fit, const QgsCoordinateTransform *ct, QString *errorMessage=0) |
| Writes features considering symbol level order. | |
| double | mapUnitScaleFactor (double scaleDenominator, QgsSymbolV2::OutputUnit symbolUnits, QGis::UnitType mapUnits) |
| double | mmScaleFactor (double scaleDenominator, QgsSymbolV2::OutputUnit symbolUnits, QGis::UnitType mapUnits) |
| QgsRenderContext | renderContext () const |
| void | startRender (QgsVectorLayer *vl) const |
| void | stopRender (QgsVectorLayer *vl) const |
| QgsFeatureRendererV2 * | symbologyRenderer (QgsVectorLayer *vl) const |
| bool | writeFeature (OGRLayerH layer, OGRFeatureH feature) |
Static Private Member Functions | |
| static bool | driverMetadata (QString driverName, QString &longName, QString &trLongName, QString &glob, QString &ext) |
A convenience class for writing vector files to disk.
There are two possibilities how to use this class: 1. static call to QgsVectorFileWriter::writeAsShapefile(...) which saves the whole vector layer 2. create an instance of the class and issue calls to addFeature(...)
Currently supports only writing to shapefiles, but shouldn't be a problem to add capability to support other OGR-writable formats.
Definition at line 42 of file qgsvectorfilewriter.h.
Definition at line 60 of file qgsvectorfilewriter.h.
| NoError | |
| ErrDriverNotFound | |
| ErrCreateDataSource | |
| ErrCreateLayer | |
| ErrAttributeTypeUnsupported | |
| ErrAttributeCreationFailed | |
| ErrProjection | |
| ErrFeatureWriteFailed | |
| ErrInvalidLayer |
Definition at line 46 of file qgsvectorfilewriter.h.
| QgsVectorFileWriter::QgsVectorFileWriter | ( | const QString & | vectorFileName, |
| const QString & | fileEncoding, | ||
| const QgsFields & | fields, | ||
| QGis::WkbType | geometryType, | ||
| const QgsCoordinateReferenceSystem * | srs, | ||
| const QString & | driverName = "ESRI Shapefile", |
||
| const QStringList & | datasourceOptions = QStringList(), |
||
| const QStringList & | layerOptions = QStringList(), |
||
| QString * | newFilename = 0, |
||
| SymbologyExport | symbologyExport = NoSymbology |
||
| ) |
create shapefile and initialize it
Definition at line 56 of file qgsvectorfilewriter.cpp.
References convertCodecNameForEncodingOption(), QgsFields::count(), createEmptyGeometry(), deleteShapeFile(), driverMetadata(), ErrAttributeCreationFailed, ErrAttributeTypeUnsupported, ErrCreateDataSource, ErrCreateLayer, ErrDriverNotFound, QgsField::length(), mAttrIdxToOgrIdx, mCodec, mDS, mError, mErrorMessage, mFields, mGeom, mLayer, mWkbType, QgsField::name(), QgsField::precision(), QgsDebugMsg, QgsApplication::registerOgrDrivers(), QgsFields::size(), TO8, TO8F, QgsCoordinateReferenceSystem::toWkt(), tr, QgsField::type(), and QGis::WKBNoGeometry.
Referenced by writeAsVectorFormat().
close opened shapefile for writing
Definition at line 671 of file qgsvectorfilewriter.cpp.
| bool QgsVectorFileWriter::addFeature | ( | QgsFeature & | feature, |
| QgsFeatureRendererV2 * | renderer = 0, |
||
| QGis::UnitType | outputUnit = QGis::Meters |
||
| ) |
add feature to the currently opened shapefile
Definition at line 450 of file qgsvectorfilewriter.cpp.
References createFeature(), FeatureSymbology, mapUnitScaleFactor(), mLayer, mmScaleFactor(), mSymbologyExport, mSymbologyScaleDenominator, NoSymbology, SymbolLayerSymbology, QgsFeatureRendererV2::symbolsForFeature(), and writeFeature().
Referenced by QgsGeometryAnalyzer::addEventLayerFeature(), QgsGeometryAnalyzer::bufferFeature(), QgsGeometryAnalyzer::centroidFeature(), QgsOverlayAnalyzer::intersectFeature(), QgsGeometryAnalyzer::simplifyFeature(), and writeAsVectorFormat().
| void QgsVectorFileWriter::addRendererAttributes | ( | QgsVectorLayer * | vl, |
| QgsAttributeList & | attList | ||
| ) | [private] |
Adds attributes needed for classification.
Definition at line 1482 of file qgsvectorfilewriter.cpp.
References QgsVectorLayer::fieldNameIndex(), symbologyRenderer(), and QgsFeatureRendererV2::usedAttributes().
Referenced by writeAsVectorFormat().
| QMap<int, int> QgsVectorFileWriter::attrIdxToOgrIdx | ( | ) | [inline] |
Definition at line 141 of file qgsvectorfilewriter.h.
| QString QgsVectorFileWriter::convertCodecNameForEncodingOption | ( | const QString & | codecName | ) | [static] |
Converts codec name to string passed to ENCODING layer creation option of OGR Shapefile.
Definition at line 1026 of file qgsvectorfilewriter.cpp.
Referenced by QgsVectorFileWriter().
| OGRGeometryH QgsVectorFileWriter::createEmptyGeometry | ( | QGis::WkbType | wkbType | ) | [protected] |
Definition at line 434 of file qgsvectorfilewriter.cpp.
Referenced by createFeature(), and QgsVectorFileWriter().
| OGRFeatureH QgsVectorFileWriter::createFeature | ( | QgsFeature & | feature | ) | [private] |
Definition at line 514 of file qgsvectorfilewriter.cpp.
References QgsGeometry::asWkb(), QgsFeature::attribute(), QgsGeometry::convertToMultiType(), QgsFields::count(), createEmptyGeometry(), ErrFeatureWriteFailed, FID_TO_NUMBER, QgsFeature::geometry(), QgsFeature::id(), QgsMessageLog::logMessage(), mAttrIdxToOgrIdx, MathUtils::max(), mCodec, mError, mErrorMessage, mFields, mGeom, mLayer, mWkbType, QgsDebugMsg, QGis::singleType(), tr, QGis::WKBNoGeometry, QgsGeometry::wkbSize(), and QgsGeometry::wkbType().
Referenced by addFeature(), and exportFeaturesSymbolLevels().
| void QgsVectorFileWriter::createSymbolLayerTable | ( | QgsVectorLayer * | vl, |
| const QgsCoordinateTransform * | ct, | ||
| OGRDataSourceH | ds | ||
| ) | [private] |
Definition at line 1216 of file qgsvectorfilewriter.cpp.
References QgsMapLayer::crs(), QgsCoordinateTransform::destCRS(), QgsCoordinateReferenceSystem::mapUnits(), mapUnitScaleFactor(), mmScaleFactor(), mSymbologyScaleDenominator, QgsVectorLayer::rendererV2(), and QgsFeatureRendererV2::symbols().
| bool QgsVectorFileWriter::deleteShapeFile | ( | QString | theFileName | ) | [static] |
Delete a shapefile (and its accompanying shx / dbf / prf)
| theFileName | /path/to/file.shp |
Definition at line 880 of file qgsvectorfilewriter.cpp.
References file, and QgsDebugMsg.
Referenced by QgsVectorFileWriter().
| bool QgsVectorFileWriter::driverMetadata | ( | QString | driverName, |
| QString & | longName, | ||
| QString & | trLongName, | ||
| QString & | glob, | ||
| QString & | ext | ||
| ) | [static, private] |
Definition at line 1043 of file qgsvectorfilewriter.cpp.
References tr.
Referenced by filterForDriver(), ogrDriverList(), and QgsVectorFileWriter().
| QString QgsVectorFileWriter::errorMessage | ( | ) |
retrieves error message
Definition at line 445 of file qgsvectorfilewriter.cpp.
References mErrorMessage.
Referenced by writeAsVectorFormat().
| QgsVectorFileWriter::WriterError QgsVectorFileWriter::exportFeaturesSymbolLevels | ( | QgsVectorLayer * | layer, |
| QgsFeatureIterator & | fit, | ||
| const QgsCoordinateTransform * | ct, | ||
| QString * | errorMessage = 0 |
||
| ) | [private] |
Writes features considering symbol level order.
Definition at line 1263 of file qgsvectorfilewriter.cpp.
References createFeature(), QgsMapLayer::crs(), QgsCoordinateTransform::destCRS(), ErrFeatureWriteFailed, ErrProjection, QgsFeature::geometry(), QgsSymbolV2LevelItem::layer(), QgsCoordinateReferenceSystem::mapUnits(), mapUnitScaleFactor(), mLayer, mmScaleFactor(), mSymbologyScaleDenominator, QgsFeatureIterator::nextFeature(), NoError, QgsVectorLayer::rendererV2(), QgsSymbolLayerV2::renderingPass(), startRender(), stopRender(), QgsSymbolV2LevelItem::symbol(), QgsFeatureRendererV2::symbolForFeature(), QgsSymbolV2::symbolLayer(), QgsSymbolV2::symbolLayerCount(), QgsFeatureRendererV2::symbols(), tr, QgsGeometry::transform(), QgsLogger::warning(), QgsException::what(), and writeFeature().
Referenced by writeAsVectorFormat().
| QString QgsVectorFileWriter::fileFilterString | ( | ) | [static] |
Returns filter string that can be used for dialogs.
Definition at line 999 of file qgsvectorfilewriter.cpp.
References supportedFiltersAndFormats().
| QString QgsVectorFileWriter::filterForDriver | ( | const QString & | driverName | ) | [static] |
Creates a filter for an OGR driver key.
Definition at line 1014 of file qgsvectorfilewriter.cpp.
References driverMetadata().
Referenced by supportedFiltersAndFormats().
checks whether there were any errors in constructor
Definition at line 440 of file qgsvectorfilewriter.cpp.
References mError.
Referenced by writeAsVectorFormat().
| double QgsVectorFileWriter::mapUnitScaleFactor | ( | double | scaleDenominator, |
| QgsSymbolV2::OutputUnit | symbolUnits, | ||
| QGis::UnitType | mapUnits | ||
| ) | [private] |
Definition at line 1421 of file qgsvectorfilewriter.cpp.
References QgsSymbolV2::MapUnit, QGis::Meters, and QgsSymbolV2::MM.
Referenced by addFeature(), createSymbolLayerTable(), and exportFeaturesSymbolLevels().
| double QgsVectorFileWriter::mmScaleFactor | ( | double | scaleDenominator, |
| QgsSymbolV2::OutputUnit | symbolUnits, | ||
| QGis::UnitType | mapUnits | ||
| ) | [private] |
Definition at line 1403 of file qgsvectorfilewriter.cpp.
References QGis::Meters, and QgsSymbolV2::MM.
Referenced by addFeature(), createSymbolLayerTable(), and exportFeaturesSymbolLevels().
| QMap< QString, QString > QgsVectorFileWriter::ogrDriverList | ( | ) | [static] |
Returns driver list that can be used for dialogs.
It contains all OGR drivers + some additional internal QGIS driver names to distinguish between more supported formats of the same OGR driver
Definition at line 932 of file qgsvectorfilewriter.cpp.
References driverMetadata(), QgsApplication::registerOgrDrivers(), and TO8.
| QgsRenderContext QgsVectorFileWriter::renderContext | ( | ) | const [private] |
Definition at line 1437 of file qgsvectorfilewriter.cpp.
References mSymbologyScaleDenominator, and QgsRenderContext::setRendererScale().
Referenced by startRender(), and stopRender().
| void QgsVectorFileWriter::setSymbologyExport | ( | SymbologyExport | symExport | ) | [inline] |
Definition at line 153 of file qgsvectorfilewriter.h.
| void QgsVectorFileWriter::setSymbologyScaleDenominator | ( | double | d | ) | [inline] |
Definition at line 156 of file qgsvectorfilewriter.h.
Referenced by writeAsVectorFormat().
| void QgsVectorFileWriter::startRender | ( | QgsVectorLayer * | vl | ) | const [private] |
Definition at line 1444 of file qgsvectorfilewriter.cpp.
References renderContext(), QgsFeatureRendererV2::startRender(), and symbologyRenderer().
Referenced by exportFeaturesSymbolLevels(), and writeAsVectorFormat().
| void QgsVectorFileWriter::stopRender | ( | QgsVectorLayer * | vl | ) | const [private] |
Definition at line 1456 of file qgsvectorfilewriter.cpp.
References renderContext(), QgsFeatureRendererV2::stopRender(), and symbologyRenderer().
Referenced by exportFeaturesSymbolLevels(), and writeAsVectorFormat().
| QMap< QString, QString > QgsVectorFileWriter::supportedFiltersAndFormats | ( | ) | [static] |
Returns map with format filter string as key and OGR format key as value.
Definition at line 905 of file qgsvectorfilewriter.cpp.
References filterForDriver(), and QgsApplication::registerOgrDrivers().
Referenced by fileFilterString().
| SymbologyExport QgsVectorFileWriter::symbologyExport | ( | ) | const [inline] |
Definition at line 152 of file qgsvectorfilewriter.h.
Referenced by writeAsVectorFormat().
| QgsFeatureRendererV2 * QgsVectorFileWriter::symbologyRenderer | ( | QgsVectorLayer * | vl | ) | const [private] |
Definition at line 1468 of file qgsvectorfilewriter.cpp.
References mSymbologyExport, NoSymbology, and QgsVectorLayer::rendererV2().
Referenced by addRendererAttributes(), startRender(), and stopRender().
| double QgsVectorFileWriter::symbologyScaleDenominator | ( | ) | const [inline] |
Definition at line 155 of file qgsvectorfilewriter.h.
| QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat | ( | QgsVectorLayer * | layer, |
| const QString & | fileName, | ||
| const QString & | fileEncoding, | ||
| const QgsCoordinateReferenceSystem * | destCRS, | ||
| const QString & | driverName = "ESRI Shapefile", |
||
| bool | onlySelected = false, |
||
| QString * | errorMessage = 0, |
||
| const QStringList & | datasourceOptions = QStringList(), |
||
| const QStringList & | layerOptions = QStringList(), |
||
| bool | skipAttributeCreation = false, |
||
| QString * | newFilename = 0, |
||
| SymbologyExport | symbologyExport = NoSymbology, |
||
| double | symbologyScale = 1.0 |
||
| ) | [static] |
Write contents of vector layer to an (OGR supported) vector formt.
| layer | layer to write |
| fileName | file name to write to |
| fileEncoding | encoding to use |
| destCRS | pointer to CRS to reproject exported geometries to |
| driverName | OGR driver to use |
| onlySelected | write only selected features of layer |
| errorMessage | pointer to buffer fo error message |
| datasourceOptions | list of OGR data source creation options |
| layerOptions | list of OGR layer creation options |
| skipAttributeCreation | only write geometries |
| newFilename | QString pointer which will contain the new file name created (in case it is different to fileName). |
| symbologyExport | symbology to export |
| symbologyScale | scale of symbology |
Definition at line 685 of file qgsvectorfilewriter.cpp.
References addFeature(), addRendererAttributes(), QgsFeatureRendererV2::capabilities(), QgsMapLayer::crs(), QgsCoordinateTransform::destCRS(), ErrFeatureWriteFailed, ErrInvalidLayer, errorMessage(), ErrProjection, exportFeaturesSymbolLevels(), QgsFeature::geometry(), QgsVectorLayer::getFeatures(), hasError(), QgsFeature::id(), QgsFeature::initAttributes(), QgsCoordinateReferenceSystem::isValid(), QgsCoordinateReferenceSystem::mapUnits(), QgsFeatureIterator::nextFeature(), NoError, QgsFeatureRequest::NoGeometry, NoSymbology, QgsVectorLayer::pendingAllAttributesList(), QgsVectorLayer::pendingFields(), QgsDebugMsg, QgsVectorFileWriter(), QgsVectorLayer::rendererV2(), QgsVectorLayer::selectedFeaturesIds(), QgsFeatureRequest::setFlags(), QgsFeatureRequest::setSubsetOfAttributes(), setSymbologyScaleDenominator(), startRender(), stopRender(), SymbolLayerSymbology, QgsFeatureRendererV2::SymbolLevels, symbologyExport(), tr, QgsGeometry::transform(), QgsFeatureRendererV2::usingSymbolLevels(), QgsLogger::warning(), QgsException::what(), QGis::WKBNoGeometry, and QgsVectorLayer::wkbType().
| bool QgsVectorFileWriter::writeFeature | ( | OGRLayerH | layer, |
| OGRFeatureH | feature | ||
| ) | [private] |
Definition at line 658 of file qgsvectorfilewriter.cpp.
References ErrFeatureWriteFailed, QgsMessageLog::logMessage(), mError, mErrorMessage, and tr.
Referenced by addFeature(), and exportFeaturesSymbolLevels().
QMap<int, int> QgsVectorFileWriter::mAttrIdxToOgrIdx [protected] |
map attribute indizes to OGR field indexes
Definition at line 178 of file qgsvectorfilewriter.h.
Referenced by createFeature(), and QgsVectorFileWriter().
QTextCodec* QgsVectorFileWriter::mCodec [protected] |
Definition at line 172 of file qgsvectorfilewriter.h.
Referenced by createFeature(), and QgsVectorFileWriter().
OGRDataSourceH QgsVectorFileWriter::mDS [protected] |
Definition at line 162 of file qgsvectorfilewriter.h.
Referenced by QgsVectorFileWriter(), and ~QgsVectorFileWriter().
WriterError QgsVectorFileWriter::mError [protected] |
contains error value if construction was not successful
Definition at line 169 of file qgsvectorfilewriter.h.
Referenced by createFeature(), hasError(), QgsVectorFileWriter(), and writeFeature().
QString QgsVectorFileWriter::mErrorMessage [protected] |
Definition at line 170 of file qgsvectorfilewriter.h.
Referenced by createFeature(), errorMessage(), QgsVectorFileWriter(), and writeFeature().
QgsFields QgsVectorFileWriter::mFields [protected] |
Definition at line 166 of file qgsvectorfilewriter.h.
Referenced by createFeature(), and QgsVectorFileWriter().
OGRGeometryH QgsVectorFileWriter::mGeom [protected] |
Definition at line 164 of file qgsvectorfilewriter.h.
Referenced by createFeature(), QgsVectorFileWriter(), and ~QgsVectorFileWriter().
OGRLayerH QgsVectorFileWriter::mLayer [protected] |
Definition at line 163 of file qgsvectorfilewriter.h.
Referenced by addFeature(), createFeature(), exportFeaturesSymbolLevels(), and QgsVectorFileWriter().
SymbologyExport QgsVectorFileWriter::mSymbologyExport [protected] |
Definition at line 180 of file qgsvectorfilewriter.h.
Referenced by addFeature(), and symbologyRenderer().
double QgsVectorFileWriter::mSymbologyScaleDenominator [protected] |
Scale for symbology export (e.g.
for symbols units in map units)
Definition at line 187 of file qgsvectorfilewriter.h.
Referenced by addFeature(), createSymbolLayerTable(), exportFeaturesSymbolLevels(), and renderContext().
QGis::WkbType QgsVectorFileWriter::mWkbType [protected] |
geometry type which is being used
Definition at line 175 of file qgsvectorfilewriter.h.
Referenced by createFeature(), and QgsVectorFileWriter().