19 #ifndef QGSVECTORFILEWRITER_H 20 #define QGSVECTORFILEWRITER_H 22 #include "qgis_core.h" 63 : docString( docString )
65 virtual ~
Option() =
default;
77 SetOption(
const QString &docString,
const QStringList &values,
const QString &defaultValue,
bool allowNone =
false )
79 , values( values.toSet() )
80 , defaultValue( defaultValue )
81 , allowNone( allowNone )
95 StringOption(
const QString &docString,
const QString &defaultValue = QString() )
96 :
Option( docString, String )
97 , defaultValue( defaultValue )
110 :
Option( docString, Int )
111 , defaultValue( defaultValue )
124 :
SetOption( docString, QStringList() << QStringLiteral(
"YES" ) << QStringLiteral(
"NO" ), defaultValue ?
"YES" :
"NO" )
135 :
Option( QString(), Hidden )
147 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() )
148 : longName( longName )
149 , trLongName( trLongName )
152 , driverOptions( driverOptions )
153 , layerOptions( layerOptions )
154 , compulsoryEncoding( compulsoryEncoding )
195 SortRecommended = 1 << 1,
196 SkipNonSpatialFormats = 1 << 2,
209 FieldValueConverter() =
default;
211 virtual ~FieldValueConverter() =
default;
226 virtual QVariant convert(
int fieldIdxInLayer,
const QVariant &value );
240 CanAddNewLayer = 1 << 0,
243 CanAppendToExistingLayer = 1 << 1,
246 CanAddNewFieldsToExistingLayer = 1 << 2,
249 CanDeleteLayer = 1 << 3
273 AppendToLayerAddFields
331 const QString &fileName,
332 const QString &fileEncoding,
334 const QString &driverName =
"GPKG",
335 bool onlySelected =
false,
336 QString *errorMessage
SIP_OUT =
nullptr,
337 const QStringList &datasourceOptions = QStringList(),
338 const QStringList &layerOptions = QStringList(),
339 bool skipAttributeCreation =
false,
340 QString *newFilename =
nullptr,
342 double symbologyScale = 1.0,
345 bool forceMulti =
false,
346 bool includeZ =
false,
350 , QString *newLayer =
nullptr );
414 const QString &fileName,
415 const QString &fileEncoding,
417 const QString &driverName =
"GPKG",
418 bool onlySelected =
false,
419 QString *errorMessage
SIP_OUT =
nullptr,
420 const QStringList &datasourceOptions = QStringList(),
421 const QStringList &layerOptions = QStringList(),
422 bool skipAttributeCreation =
false,
423 QString *newFilename =
nullptr,
425 double symbologyScale = 1.0,
428 bool forceMulti =
false,
429 bool includeZ =
false,
433 , QString *newLayer =
nullptr );
469 bool onlySelectedFeatures =
false;
478 bool skipAttributeCreation =
false;
487 double symbologyScale = 1.0;
498 bool forceMulti =
false;
501 bool includeZ =
false;
542 const QString &fileName,
544 QString *newFilename =
nullptr,
545 QString *errorMessage
SIP_OUT =
nullptr 547 , QString *newLayer =
nullptr );
557 const QString &fileEncoding,
561 const QString &driverName =
"GPKG",
562 const QStringList &datasourceOptions = QStringList(),
563 const QStringList &layerOptions = QStringList(),
564 QString *newFilename =
nullptr,
566 QgsFeatureSink::SinkFlags sinkFlags =
nullptr 568 , QString *newLayer =
nullptr,
595 const QString &fileEncoding,
599 const QString &driverName,
600 const QStringList &datasourceOptions,
601 const QStringList &layerOptions,
602 QString *newFilename,
605 const QString &layerName,
607 QString *newLayer =
nullptr,
609 QgsFeatureSink::SinkFlags sinkFlags =
nullptr 637 QString *newFilename =
nullptr,
638 QString *newLayer =
nullptr );
653 const QString &fileName,
656 QString *newFilename =
nullptr,
657 QString *newLayer =
nullptr,
658 QString *errorMessage
SIP_OUT =
nullptr );
687 static QList< QgsVectorFileWriter::FilterFormatDetails > supportedFiltersAndFormats( VectorFormatOptions options = SortRecommended );
698 static QStringList supportedFormatExtensions( VectorFormatOptions options = SortRecommended );
707 static bool supportsFeatureStyles(
const QString &driverName );
733 static QList< QgsVectorFileWriter::DriverDetails > ogrDriverList( VectorFormatOptions options = SortRecommended );
741 static QString driverForExtension(
const QString &extension );
749 static QString fileFilterString( VectorFormatOptions options = SortRecommended );
752 static QString filterForDriver(
const QString &driverName );
755 static QString convertCodecNameForEncodingOption(
const QString &codecName );
761 QString errorMessage();
763 bool addFeature(
QgsFeature &feature, QgsFeatureSink::Flags flags =
nullptr )
override;
764 bool addFeatures(
QgsFeatureList &features, QgsFeatureSink::Flags flags =
nullptr )
override;
783 static bool deleteShapeFile(
const QString &fileName );
802 void setSymbologyScale(
double scale );
804 static bool driverMetadata(
const QString &driverName,
MetaData &driverMetadata );
812 static QStringList defaultDatasetOptions(
const QString &driverName );
820 static QStringList defaultLayerOptions(
const QString &driverName );
834 static QgsVectorFileWriter::EditionCapabilities editionCapabilities(
const QString &datasetName );
840 static bool targetLayerExists(
const QString &datasetName,
841 const QString &layerName );
847 static bool areThereNewFieldsToCreate(
const QString &datasetName,
848 const QString &layerName,
857 OGRLayerH mLayer =
nullptr;
866 QTextCodec *mCodec =
nullptr;
891 struct PreparedWriterDetails
893 std::unique_ptr< QgsFeatureRenderer > renderer;
897 QString providerType;
898 long featureCount = 0;
900 QString dataSourceUri;
904 QSet< int > fieldsToConvertToInt;
906 bool shallTransform =
false;
913 std::unique_ptr< QgsGeometryEngine > filterRectEngine;
914 QVariantMap providerUriParams;
923 PreparedWriterDetails &details );
939 const QString &fileName,
942 QString *newFilename =
nullptr,
943 QString *newLayer =
nullptr,
944 QString *errorMessage
SIP_OUT =
nullptr );
952 const QString &fileName,
954 QString *newFilename =
nullptr,
955 QString *errorMessage
SIP_OUT =
nullptr,
956 QString *newLayer =
nullptr ) SIP_DEPRECATED;
958 void init( QString vectorFileName, QString fileEncoding, const
QgsFields &fields,
960 const QString &driverName, QStringList datasourceOptions,
961 QStringList layerOptions, QString *newFilename,
963 const QString &layerName,
974 bool mUsingTransaction = false;
975 bool supportsStringList = false;
979 bool writeFeature( OGRLayerH layer, OGRFeatureH feature );
984 double mapUnitScaleFactor(
double scale,
QgsUnitTypes::RenderUnit symbolUnits,
QgsUnitTypes::DistanceUnit mapUnits );
993 static QStringList concatenateOptions( const QMap<QString,
Option *> &options );
996 friend class TestQgsVectorFileWriter;
Append features to existing layer, but do not create new fields.
Wrapper for iterator of features from vector data provider or vector layer.
BoolOption(const QString &docString, bool defaultValue)
A rectangle specified with double values.
QgsVectorFileWriter::OptionType type
Details of available driver formats.
void setSymbologyExport(QgsVectorFileWriter::SymbologyExport symExport)
QSet< QgsFeatureId > QgsFeatureIds
QMap< int, int > attrIdxToOgrIdx()
WriterError mError
Contains error value if construction was not successful.
QList< QgsFeature > QgsFeatureList
Handles storage of information regarding WKB types and their properties.
SymbologyExport mSymbologyExport
QgsAttributeList attributes
Attributes to export (empty means all unless skipAttributeCreation is set)
Helper functions for various unit types.
An interface for objects which accept features via addFeature(s) methods.
QMap< QgsSymbolLayer *, QString > mSymbolLayerTable
Container of fields for a vector layer.
A geometry is the spatial representation of a feature.
StringOption(const QString &docString, const QString &defaultValue=QString())
QStringList layerOptions
List of OGR layer creation options.
A convenience class for writing vector files to disk.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
gdal::ogr_datasource_unique_ptr mDS
Create or overwrite file.
QgsVectorFileWriter::SymbologyExport symbologyExport() const
Base class for feedback objects to be used for cancellation of something running in a worker thread...
IntOption(const QString &docString, int defaultValue)
Options to pass to writeAsVectorFormat()
Option(const QString &docString, QgsVectorFileWriter::OptionType type)
Type
The WKB type describes the number of dimensions a geometry has.
std::unique_ptr< std::remove_pointer< OGRFeatureH >::type, OGRFeatureDeleter > ogr_feature_unique_ptr
Scoped OGR feature.
QString driverName
Unique driver name.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
QStringList datasourceOptions
List of OGR data source creation options.
SetOption(const QString &docString, const QStringList &values, const QString &defaultValue, bool allowNone=false)
Create or overwrite layer.
ActionOnExistingFile
Combination of CanAddNewLayer, CanAppendToExistingLayer, CanAddNewFieldsToExistingLayer or CanDeleteL...
QString driverName
OGR driver to use.
Encapsulate a field in an attribute table or data source.
Contains information about the context in which a coordinate transform is executed.
QMap< int, int > mAttrIdxToOgrIdx
Map attribute indizes to OGR field indexes.
QgsRectangle filterExtent
If not empty, only features intersecting the extent will be saved.
double symbologyScale() const
Returns the reference scale for output.
DistanceUnit
Units of distance.
Contains information about the context of a rendering operation.
QString fileEncoding
Encoding to use.
HiddenOption(const QString &value)
EditionCapability
Edition capability flags.
double mSymbologyScale
Scale for symbology export (e.g. for symbols units in map units)
This class represents a coordinate reference system (CRS).
const QgsCoordinateReferenceSystem & outputCrs
QgsCoordinateTransform ct
Transform to reproject exported geometries with, or invalid transform for no transformation.
VectorFormatOption
Options for sorting and filtering vector formats.
Interface to convert raw field values to their user-friendly value.
QgsTask task which performs a QgsVectorFileWriter layer saving operation as a background task...
QList< int > QgsAttributeList
QString layerName
Layer name. If let empty, it will be derived from the filename.
std::unique_ptr< std::remove_pointer< OGRDataSourceH >::type, OGRDataSourceDeleter > ogr_datasource_unique_ptr
Scoped OGR data source.
Represents a vector layer which manages a vector based data sets.
Writing was interrupted by manual cancellation.
QgsWkbTypes::Type mWkbType
Geometry type which is being used.
QString longName
Descriptive, user friendly name for the driver.
void * OGRSpatialReferenceH