19#ifndef QGSVECTORFILEWRITER_H
20#define QGSVECTORFILEWRITER_H
66 : docString( docString )
81 SetOption(
const QString &docString,
const QStringList &values,
const QString &defaultValue,
bool allowNone =
false )
83 , values( values.begin(), values.end() )
84 , defaultValue( defaultValue )
85 , allowNone( allowNone )
81 SetOption(
const QString &docString,
const QStringList &values,
const QString &defaultValue,
bool allowNone =
false ) {
…}
100 StringOption(
const QString &docString,
const QString &defaultValue = QString() )
101 :
Option( docString, String )
102 , defaultValue( defaultValue )
100 StringOption(
const QString &docString,
const QString &defaultValue = QString() ) {
…}
116 :
Option( docString, Int )
117 , defaultValue( defaultValue )
131 :
SetOption( docString, QStringList() << QStringLiteral(
"YES" ) << QStringLiteral(
"NO" ), defaultValue ?
"YES" :
"NO" )
143 :
Option( QString(), Hidden )
155 MetaData(
const QString &longName,
const QString &trLongName,
const QString &glob,
const QString &ext,
const QMap<QString, QgsVectorFileWriter::Option *> &driverOptions,
const QMap<QString, QgsVectorFileWriter::Option *> &layerOptions,
const QString &compulsoryEncoding = QString() )
156 : longName( longName )
157 , trLongName( trLongName )
160 , driverOptions( driverOptions )
161 , layerOptions( layerOptions )
162 , compulsoryEncoding( compulsoryEncoding )
155 MetaData(
const QString &longName,
const QString &trLongName,
const QString &glob,
const QString &ext,
const QMap<QString, QgsVectorFileWriter::Option *> &driverOptions,
const QMap<QString, QgsVectorFileWriter::Option *> &layerOptions,
const QString &compulsoryEncoding = QString() ) {
…}
206 SortRecommended = 1 << 1,
207 SkipNonSpatialFormats = 1 << 2,
208 SupportsMultipleLayers = 1 << 3,
237 virtual QVariant convert(
int fieldIdxInLayer,
const QVariant &value );
251 CanAddNewLayer = 1 << 0,
254 CanAppendToExistingLayer = 1 << 1,
257 CanAddNewFieldsToExistingLayer = 1 << 2,
260 CanDeleteLayer = 1 << 3
283 AppendToLayerAddFields
343 const QString &fileName,
344 const QString &fileEncoding,
346 const QString &driverName =
"GPKG",
347 bool onlySelected =
false,
348 QString *errorMessage
SIP_OUT =
nullptr,
349 const QStringList &datasourceOptions = QStringList(),
350 const QStringList &layerOptions = QStringList(),
351 bool skipAttributeCreation =
false,
352 QString *newFilename =
nullptr,
354 double symbologyScale = 1.0,
357 bool forceMulti =
false,
358 bool includeZ =
false,
362 , QString *newLayer =
nullptr );
426 const QString &fileName,
427 const QString &fileEncoding,
429 const QString &driverName =
"GPKG",
430 bool onlySelected =
false,
431 QString *errorMessage
SIP_OUT =
nullptr,
432 const QStringList &datasourceOptions = QStringList(),
433 const QStringList &layerOptions = QStringList(),
434 bool skipAttributeCreation =
false,
435 QString *newFilename =
nullptr,
437 double symbologyScale = 1.0,
440 bool forceMulti =
false,
441 bool includeZ =
false,
445 , QString *newLayer =
nullptr );
481 bool onlySelectedFeatures =
false;
490 bool skipAttributeCreation =
false;
502 double symbologyScale = 1.0;
519 bool forceMulti =
false;
522 bool includeZ =
false;
548 bool saveMetadata =
false;
565 bool includeConstraints =
false;
575 bool setFieldDomains =
true;
615 const QString &fileName,
617 QString *newFilename =
nullptr,
618 QString *errorMessage
SIP_OUT =
nullptr
620 , QString *newLayer =
nullptr );
630 const QString &fileEncoding,
634 const QString &driverName =
"GPKG",
635 const QStringList &datasourceOptions = QStringList(),
636 const QStringList &layerOptions = QStringList(),
637 QString *newFilename =
nullptr,
641 , QString *newLayer =
nullptr,
673 const QString &fileEncoding,
677 const QString &driverName,
678 const QStringList &datasourceOptions,
679 const QStringList &layerOptions,
680 QString *newFilename,
683 const QString &layerName,
685 QString *newLayer =
nullptr,
689 bool includeConstraints =
false,
690 bool setFieldDomains =
true,
712 Qgis::WkbType geometryType,
717 QString *newFilename =
nullptr,
733 const QString &fileName,
736 QString *newFilename =
nullptr,
737 QString *newLayer =
nullptr,
753 const QString &fileName,
756 QString *errorMessage
SIP_OUT =
nullptr,
757 QString *newFilename
SIP_OUT =
nullptr,
758 QString *newLayer
SIP_OUT =
nullptr );
786 static QList< QgsVectorFileWriter::FilterFormatDetails > supportedFiltersAndFormats(
VectorFormatOptions options = SortRecommended );
796 static QStringList supportedFormatExtensions(
VectorFormatOptions options = SortRecommended );
804 static bool supportsFeatureStyles(
const QString &driverName );
829 static QList< QgsVectorFileWriter::DriverDetails > ogrDriverList(
VectorFormatOptions options = SortRecommended );
836 static QString driverForExtension(
const QString &extension );
847 static QString filterForDriver(
const QString &driverName );
850 static QString convertCodecNameForEncodingOption(
const QString &codecName );
856 QString errorMessage()
const;
864 QString driver()
const;
872 QString driverLongName()
const;
905 static bool deleteShapeFile(
const QString &fileName );
933 void setSymbologyScale(
double scale );
935 static bool driverMetadata(
const QString &driverName, MetaData &driverMetadata );
942 static QStringList defaultDatasetOptions(
const QString &driverName );
949 static QStringList defaultLayerOptions(
const QString &driverName );
967 static bool targetLayerExists(
const QString &datasetName,
968 const QString &layerName );
973 static bool areThereNewFieldsToCreate(
const QString &datasetName,
974 const QString &layerName,
983 OGRLayerH mLayer =
nullptr;
984 OGRSpatialReferenceH mOgrRef =
nullptr;
992 QTextCodec *mCodec =
nullptr;
1014 bool mIncludeConstraints =
false;
1017 bool mSetFieldDomains =
true;
1024 struct PreparedWriterDetails
1026 std::unique_ptr< QgsFeatureRenderer > renderer;
1030 QString providerType;
1031 long long featureCount = 0;
1033 QString dataSourceUri;
1034 QString storageType;
1037 QSet< int > fieldsToConvertToInt;
1039 bool shallTransform =
false;
1046 std::unique_ptr< QgsGeometryEngine > filterRectEngine;
1047 QVariantMap providerUriParams;
1048 std::unique_ptr< QgsAbstractDatabaseProviderConnection > sourceDatabaseProviderConnection;
1057 PreparedWriterDetails &details );
1074 const QString &fileName,
1077 QString *newFilename =
nullptr,
1078 QString *newLayer =
nullptr,
1079 QString *errorMessage
SIP_OUT =
nullptr,
1088 const QString &fileName,
1090 QString *newFilename =
nullptr,
1091 QString *errorMessage
SIP_OUT =
nullptr,
1094 void init( QString vectorFileName, QString fileEncoding, const
QgsFields &fields,
1096 const QString &driverName, QStringList datasourceOptions,
1097 QStringList layerOptions, QString *newFilename,
1099 const QString &layerName,
1102 FieldNameSource fieldNameSource,
1112 bool mUsingTransaction = false;
1113 QSet< QMetaType::Type > mSupportedListSubTypes;
1115 Qgis::VectorFileWriterCapabilities mCapabilities;
1118 gdal::ogr_feature_unique_ptr createFeature( const
QgsFeature &feature );
1119 bool writeFeature( OGRLayerH layer, OGRFeatureH feature );
1123 double mmScaleFactor(
double scale,
Qgis::RenderUnit symbolUnits,
Qgis::DistanceUnit mapUnits );
1124 double mapUnitScaleFactor(
double scale,
Qgis::RenderUnit symbolUnits,
Qgis::DistanceUnit mapUnits );
1133 static QStringList concatenateOptions( const QMap<QString, Option *> &options );
1136 friend class TestQgsVectorFileWriter;
Provides global constants and enumerations for use throughout the application.
DistanceUnit
Units of distance.
QFlags< VectorFileWriterCapability > VectorFileWriterCapabilities
Capabilities supported by a QgsVectorFileWriter object.
WkbType
The WKB type describes the number of dimensions a geometry has.
FeatureSymbologyExport
Options for exporting features considering their symbology.
@ NoSymbology
Export only data.
Provides common functionality for database based connections.
Represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Wrapper for iterator of features from vector data provider or vector layer.
Abstract base class for all 2D vector feature renderers.
An interface for objects which accept features via addFeature(s) methods.
QFlags< SinkFlag > SinkFlags
virtual bool addFeature(QgsFeature &feature, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags())
Adds a single feature to the sink.
virtual QString lastError() const
Returns the most recent error encountered by the sink, e.g.
virtual bool addFeatures(QgsFeatureList &features, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags())=0
Adds a list of features to the sink.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Encapsulate a field in an attribute table or data source.
Container of fields for a vector layer.
A geometry is the spatial representation of a feature.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
Abstract base class for symbol layers.
QgsTask task which performs a QgsVectorFileWriter layer saving operation as a background task.
An available option for configuring file writing for a particular output format, presenting an boolea...
BoolOption(const QString &docString, bool defaultValue)
Interface to convert raw field values to their user-friendly values.
FieldValueConverter()=default
virtual ~FieldValueConverter()=default
A hidden option for file writing for a particular output format.
HiddenOption(const QString &value)
An available option for configuring file writing for a particular output format, presenting an intege...
IntOption(const QString &docString, int defaultValue)
Describes an available option for configuring file writing for a particular output format.
Option(const QString &docString, QgsVectorFileWriter::OptionType type)
QgsVectorFileWriter::OptionType type
virtual ~Option()=default
Options to pass to QgsVectorFileWriter::writeAsVectorFormat().
QString fileEncoding
Encoding to use.
QString driverName
OGR driver to use.
QgsCoordinateTransform ct
Transform to reproject exported geometries with, or invalid transform for no transformation.
QStringList attributesExportNames
Attributes export names.
QgsLayerMetadata layerMetadata
Layer metadata to save for the exported vector file.
QString layerName
Layer name. If let empty, it will be derived from the filename.
QgsRectangle filterExtent
If not empty, only features intersecting the extent will be saved.
QStringList layerOptions
List of OGR layer creation options.
QgsAttributeList attributes
Attributes to export (empty means all unless skipAttributeCreation is set)
virtual ~SaveVectorOptions()=default
QStringList datasourceOptions
List of OGR data source creation options.
An available option for configuring file writing for a particular output format, presenting a choice ...
SetOption(const QString &docString, const QStringList &values, const QString &defaultValue, bool allowNone=false)
An available option for configuring file writing for a particular output format, presenting a freefor...
StringOption(const QString &docString, const QString &defaultValue=QString())
A convenience class for writing vector layers to disk based formats (e.g.
EditionCapability
Edition capability flags.
Qgis::WkbType mWkbType
Geometry type which is being used.
double mSymbologyScale
Scale for symbology export (e.g. for symbols units in map units)
QMap< int, int > mAttrIdxToOgrIdx
Map attribute indizes to OGR field indexes.
@ ErrAttributeTypeUnsupported
@ Canceled
Writing was interrupted by manual cancellation.
@ ErrAttributeCreationFailed
@ ErrSavingMetadata
Metadata saving failed.
gdal::ogr_datasource_unique_ptr mDS
QString mOgrDriverLongName
QFlags< EditionCapability > EditionCapabilities
Combination of CanAddNewLayer, CanAppendToExistingLayer, CanAddNewFieldsToExistingLayer or CanDeleteL...
double symbologyScale() const
Returns the reference scale for output.
VectorFormatOption
Options for sorting and filtering vector formats.
QFlags< VectorFormatOption > VectorFormatOptions
WriterError mError
Contains error value if construction was not successful.
Qgis::FeatureSymbologyExport symbologyExport() const
Returns the feature symbology export handling for the writer.
FieldNameSource
Source for exported field names.
@ PreferAlias
Use the field alias as the exported field name, wherever one is set. Otherwise use the original field...
@ Original
Use original field names.
void setSymbologyExport(Qgis::FeatureSymbologyExport symExport)
Sets the feature symbology export handling for the writer.
QMap< QgsSymbolLayer *, QString > mSymbolLayerTable
QMap< int, int > sourceFieldIndexToWriterFieldIndex() const
Returns the map of original source field index to output file field index.
ActionOnExistingFile
Enumeration to describe how to handle existing files.
@ CreateOrOverwriteLayer
Create or overwrite layer.
@ CreateOrOverwriteFile
Create or overwrite file.
@ AppendToLayerNoNewFields
Append features to existing layer, but do not create new fields.
Represents a vector layer which manages a vector based dataset.
std::unique_ptr< std::remove_pointer< OGRDataSourceH >::type, OGRDataSourceDeleter > ogr_datasource_unique_ptr
Scoped OGR data source.
#define SIP_ENUM_BASETYPE(type)
QList< QgsFeature > QgsFeatureList
QSet< QgsFeatureId > QgsFeatureIds
QList< int > QgsAttributeList
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsTextRendererUtils::CurvedTextFlags)
const QgsCoordinateReferenceSystem & outputCrs
Details of available driver formats.
QString longName
Descriptive, user friendly name for the driver.
QString driverName
Unique driver name.