@@ -204,13 +204,41 @@ QgsVectorLayerImport::importLayer( QgsVectorLayer* layer,
204
204
}
205
205
206
206
QgsFieldMap fields = skipAttributeCreation ? QgsFieldMap () : layer->pendingFields ();
207
+ QGis::WkbType wkbType = layer->wkbType ();
208
+
209
+ // Special handling for Shapefiles
207
210
if ( layer->providerType () == " ogr" && layer->storageType () == " ESRI Shapefile" )
208
211
{
209
212
// convert field names to lowercase
210
213
for ( QgsFieldMap::iterator fldIt = fields.begin (); fldIt != fields.end (); ++fldIt )
211
214
{
212
215
fldIt.value ().setName ( fldIt.value ().name ().toLower () );
213
216
}
217
+
218
+ // convert wkbtype to multipart (see #5547)
219
+ switch ( wkbType )
220
+ {
221
+ case QGis::WKBPoint:
222
+ wkbType = QGis::WKBMultiPoint;
223
+ break ;
224
+ case QGis::WKBLineString:
225
+ wkbType = QGis::WKBMultiLineString;
226
+ break ;
227
+ case QGis::WKBPolygon:
228
+ wkbType = QGis::WKBMultiPolygon;
229
+ break ;
230
+ case QGis::WKBPoint25D:
231
+ wkbType = QGis::WKBMultiPoint25D;
232
+ break ;
233
+ case QGis::WKBLineString25D:
234
+ wkbType = QGis::WKBMultiLineString25D;
235
+ break ;
236
+ case QGis::WKBPolygon25D:
237
+ wkbType = QGis::WKBMultiPolygon25D;
238
+ break ;
239
+ default :
240
+ break ;
241
+ }
214
242
}
215
243
216
244
bool overwrite = false ;
@@ -220,7 +248,7 @@ QgsVectorLayerImport::importLayer( QgsVectorLayer* layer,
220
248
}
221
249
222
250
QgsVectorLayerImport * writer =
223
- new QgsVectorLayerImport ( uri, providerKey, fields, layer-> wkbType () , outputCRS, overwrite, options );
251
+ new QgsVectorLayerImport ( uri, providerKey, fields, wkbType, outputCRS, overwrite, options );
224
252
225
253
// check whether file creation was successful
226
254
ImportError err = writer->hasError ();
@@ -240,7 +268,7 @@ QgsVectorLayerImport::importLayer( QgsVectorLayer* layer,
240
268
QgsAttributeList allAttr = skipAttributeCreation ? QgsAttributeList () : layer->pendingAllAttributesList ();
241
269
QgsFeature fet;
242
270
243
- layer->select ( allAttr, QgsRectangle (), layer-> wkbType () != QGis::WKBNoGeometry );
271
+ layer->select ( allAttr, QgsRectangle (), wkbType != QGis::WKBNoGeometry );
244
272
245
273
const QgsFeatureIds& ids = layer->selectedFeaturesIds ();
246
274
0 commit comments