00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _QGSVECTORFILEWRITER_H_
00021 #define _QGSVECTORFILEWRITER_H_
00022
00023 #include "qgsvectorlayer.h"
00024 #include "qgsfield.h"
00025
00026 #include <QPair>
00027
00028 typedef void *OGRDataSourceH;
00029 typedef void *OGRLayerH;
00030 typedef void *OGRGeometryH;
00031
00032 class QTextCodec;
00033
00043 class CORE_EXPORT QgsVectorFileWriter
00044 {
00045 public:
00046
00047 enum WriterError
00048 {
00049 NoError = 0,
00050 ErrDriverNotFound,
00051 ErrCreateDataSource,
00052 ErrCreateLayer,
00053 ErrAttributeTypeUnsupported,
00054 ErrAttributeCreationFailed,
00055 ErrProjection,
00056 ErrFeatureWriteFailed,
00057 };
00058
00061 static WriterError writeAsShapefile( QgsVectorLayer* layer,
00062 const QString& shapefileName,
00063 const QString& fileEncoding,
00064 const QgsCoordinateReferenceSystem *destCRS,
00065 bool onlySelected = false,
00066 QString *errorMessage = 0,
00067 const QStringList &datasourceOptions = QStringList(),
00068 const QStringList &layerOptions = QStringList()
00069 );
00070
00073 static WriterError writeAsVectorFormat( QgsVectorLayer* layer,
00074 const QString& fileName,
00075 const QString& fileEncoding,
00076 const QgsCoordinateReferenceSystem *destCRS,
00077 const QString& driverName = "ESRI Shapefile",
00078 bool onlySelected = false,
00079 QString *errorMessage = 0,
00080 const QStringList &datasourceOptions = QStringList(),
00081 const QStringList &layerOptions = QStringList()
00082 );
00083
00085 QgsVectorFileWriter( const QString& vectorFileName,
00086 const QString& fileEncoding,
00087 const QgsFieldMap& fields,
00088 QGis::WkbType geometryType,
00089 const QgsCoordinateReferenceSystem* srs,
00090 const QString& driverName = "ESRI Shapefile",
00091 const QStringList &datasourceOptions = QStringList(),
00092 const QStringList &layerOptions = QStringList()
00093 );
00094
00096 static QMap< QString, QString> supportedFiltersAndFormats();
00097
00099 static QMap< QString, QString> ogrDriverList();
00100
00102 static QString fileFilterString();
00103
00105 static QString filterForDriver( const QString& driverName );
00106
00108 WriterError hasError();
00109
00113 QString errorMessage();
00114
00116 bool addFeature( QgsFeature& feature );
00117
00119 ~QgsVectorFileWriter();
00120
00125 static bool deleteShapeFile( QString theFileName );
00126
00127 protected:
00128
00129 OGRGeometryH createEmptyGeometry( QGis::WkbType wkbType );
00130
00131 OGRDataSourceH mDS;
00132 OGRLayerH mLayer;
00133 OGRGeometryH mGeom;
00134
00135 QgsFieldMap mFields;
00136
00138 WriterError mError;
00139 QString mErrorMessage;
00140
00141 QTextCodec *mCodec;
00142
00144 QGis::WkbType mWkbType;
00145
00147 QMap<int, int> mAttrIdxToOgrIdx;
00148
00149 private:
00150 static QPair<QString, QString> nameAndGlob( QString driverName );
00151 };
00152
00153 #endif