Skip to content

Commit 528c4ca

Browse files
committed
vector file writer: assume shapefiles contain multitype data (fixes #10584)
1 parent 372c3ce commit 528c4ca

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/core/qgsvectorfilewriter.cpp

+9-1
Original file line numberDiff line numberDiff line change
@@ -1852,6 +1852,8 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat( QgsVe
18521852
outputCRS = &layer->crs();
18531853
}
18541854

1855+
QGis::WkbType wkbType = layer->wkbType();
1856+
18551857
if ( layer->providerType() == "ogr" )
18561858
{
18571859
QStringList theURIParts = layer->dataProvider()->dataSourceUri().split( "|" );
@@ -1863,10 +1865,16 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat( QgsVe
18631865
*errorMessage = QObject::tr( "Cannot overwrite a OGR layer in place" );
18641866
return ErrCreateDataSource;
18651867
}
1868+
1869+
// Shapefiles might contain multi types although wkbType() only reports singles
1870+
if ( layer->storageType() == "ESRI Shapefile" )
1871+
{
1872+
wkbType = QGis::multiType( wkbType );
1873+
}
18661874
}
18671875

18681876
QgsVectorFileWriter* writer =
1869-
new QgsVectorFileWriter( fileName, fileEncoding, skipAttributeCreation ? QgsFields() : layer->pendingFields(), layer->wkbType(), outputCRS, driverName, datasourceOptions, layerOptions, newFilename, symbologyExport );
1877+
new QgsVectorFileWriter( fileName, fileEncoding, skipAttributeCreation ? QgsFields() : layer->pendingFields(), wkbType, outputCRS, driverName, datasourceOptions, layerOptions, newFilename, symbologyExport );
18701878
writer->setSymbologyScaleDenominator( symbologyScale );
18711879

18721880
if ( newFilename )

0 commit comments

Comments
 (0)