mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
create multipart layers whether the input is a singlepart shapefile (fix #5547)
This commit is contained in:
parent
796a15ac9d
commit
08e844f6d0
@ -204,6 +204,9 @@ QgsVectorLayerImport::importLayer( QgsVectorLayer* layer,
|
||||
}
|
||||
|
||||
QgsFieldMap fields = skipAttributeCreation ? QgsFieldMap() : layer->pendingFields();
|
||||
QGis::WkbType wkbType = layer->wkbType();
|
||||
|
||||
// Special handling for Shapefiles
|
||||
if ( layer->providerType() == "ogr" && layer->storageType() == "ESRI Shapefile" )
|
||||
{
|
||||
// convert field names to lowercase
|
||||
@ -211,6 +214,31 @@ QgsVectorLayerImport::importLayer( QgsVectorLayer* layer,
|
||||
{
|
||||
fldIt.value().setName( fldIt.value().name().toLower() );
|
||||
}
|
||||
|
||||
// convert wkbtype to multipart (see #5547)
|
||||
switch ( wkbType )
|
||||
{
|
||||
case QGis::WKBPoint:
|
||||
wkbType = QGis::WKBMultiPoint;
|
||||
break;
|
||||
case QGis::WKBLineString:
|
||||
wkbType = QGis::WKBMultiLineString;
|
||||
break;
|
||||
case QGis::WKBPolygon:
|
||||
wkbType = QGis::WKBMultiPolygon;
|
||||
break;
|
||||
case QGis::WKBPoint25D:
|
||||
wkbType = QGis::WKBMultiPoint25D;
|
||||
break;
|
||||
case QGis::WKBLineString25D:
|
||||
wkbType = QGis::WKBMultiLineString25D;
|
||||
break;
|
||||
case QGis::WKBPolygon25D:
|
||||
wkbType = QGis::WKBMultiPolygon25D;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool overwrite = false;
|
||||
@ -220,7 +248,7 @@ QgsVectorLayerImport::importLayer( QgsVectorLayer* layer,
|
||||
}
|
||||
|
||||
QgsVectorLayerImport * writer =
|
||||
new QgsVectorLayerImport( uri, providerKey, fields, layer->wkbType(), outputCRS, overwrite, options );
|
||||
new QgsVectorLayerImport( uri, providerKey, fields, wkbType, outputCRS, overwrite, options );
|
||||
|
||||
// check whether file creation was successful
|
||||
ImportError err = writer->hasError();
|
||||
@ -240,7 +268,7 @@ QgsVectorLayerImport::importLayer( QgsVectorLayer* layer,
|
||||
QgsAttributeList allAttr = skipAttributeCreation ? QgsAttributeList() : layer->pendingAllAttributesList();
|
||||
QgsFeature fet;
|
||||
|
||||
layer->select( allAttr, QgsRectangle(), layer->wkbType() != QGis::WKBNoGeometry );
|
||||
layer->select( allAttr, QgsRectangle(), wkbType != QGis::WKBNoGeometry );
|
||||
|
||||
const QgsFeatureIds& ids = layer->selectedFeaturesIds();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user