Skip to content

Commit 368146c

Browse files
committed
allow saving single geometries as multi geometries
1 parent 214b593 commit 368146c

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

src/core/qgis.h

+21
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,27 @@ class CORE_EXPORT QGis
6666
WKBMultiPolygon25D,
6767
};
6868

69+
static WkbType flatType( WkbType type )
70+
{
71+
switch ( type )
72+
{
73+
case WKBMultiPoint:
74+
return WKBPoint;
75+
case WKBMultiLineString:
76+
return WKBLineString;
77+
case WKBMultiPolygon:
78+
return WKBPolygon;
79+
case WKBMultiPoint25D:
80+
return WKBPoint25D;
81+
case WKBMultiLineString25D:
82+
return WKBLineString25D;
83+
case WKBMultiPolygon25D:
84+
return WKBPolygon25D;
85+
default:
86+
return type;
87+
}
88+
}
89+
6990
enum GeometryType
7091
{
7192
Point,

src/core/qgsvectorfilewriter.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,13 @@ bool QgsVectorFileWriter::addFeature( QgsFeature& feature )
482482
{
483483
// build geometry from WKB
484484
QgsGeometry *geom = feature.geometry();
485+
486+
// turn single geoemetry to multi geometry if needed
487+
if ( geom && geom->wkbType() != mWkbType && geom->wkbType() == QGis::flatType( mWkbType ) )
488+
{
489+
geom->convertToMultiType();
490+
}
491+
485492
if ( geom && geom->wkbType() != mWkbType )
486493
{
487494
// there's a problem when layer type is set as wkbtype Polygon

src/providers/postgres/qgspostgresprovider.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,7 @@ QString QgsPostgresProvider::pkParamWhereClause( int offset, const char *alias )
683683
QString whereClause;
684684

685685
QString aliased;
686-
if ( alias ) aliased = QString("%1.").arg( alias );
686+
if ( alias ) aliased = QString( "%1." ).arg( alias );
687687

688688
switch ( mPrimaryKeyType )
689689
{

0 commit comments

Comments
 (0)