Skip to content

Commit 07746db

Browse files
committedFeb 12, 2019
[postgis] Fix creation of new Z/M enabled, curved geometry type layers
1 parent 2e20f13 commit 07746db

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed
 

‎src/providers/postgres/qgspostgresprovider.cpp

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3760,6 +3760,46 @@ bool QgsPostgresProvider::convertField( QgsField &field, const QMap<QString, QVa
37603760
return true;
37613761
}
37623762

3763+
3764+
void postgisGeometryType( QgsWkbTypes::Type wkbType, QString &geometryType, int &dim )
3765+
{
3766+
dim = 2;
3767+
QgsWkbTypes::Type flatType = QgsWkbTypes::flatType( wkbType );
3768+
geometryType = QgsWkbTypes::displayString( flatType ).toUpper();
3769+
switch ( flatType )
3770+
{
3771+
case QgsWkbTypes::Unknown:
3772+
geometryType = QStringLiteral( "GEOMETRY" );
3773+
break;
3774+
3775+
case QgsWkbTypes::NoGeometry:
3776+
geometryType.clear();
3777+
dim = 0;
3778+
break;
3779+
3780+
default:
3781+
break;
3782+
}
3783+
3784+
if ( QgsWkbTypes::hasZ( wkbType ) && QgsWkbTypes::hasM( wkbType ) )
3785+
{
3786+
dim = 4;
3787+
}
3788+
else if ( QgsWkbTypes::hasZ( wkbType ) )
3789+
{
3790+
dim = 3;
3791+
}
3792+
else if ( QgsWkbTypes::hasM( wkbType ) )
3793+
{
3794+
geometryType += QLatin1String( "M" );
3795+
dim = 3;
3796+
}
3797+
else if ( wkbType >= QgsWkbTypes::Point25D && wkbType <= QgsWkbTypes::MultiPolygon25D )
3798+
{
3799+
dim = 3;
3800+
}
3801+
}
3802+
37633803
QgsVectorLayerExporter::ExportError QgsPostgresProvider::createEmptyLayer( const QString &uri,
37643804
const QgsFields &fields,
37653805
QgsWkbTypes::Type wkbType,
@@ -3944,7 +3984,7 @@ QgsVectorLayerExporter::ExportError QgsPostgresProvider::createEmptyLayer( const
39443984
int dim = 2;
39453985
long srid = srs.postgisSrid();
39463986

3947-
QgsPostgresConn::postgisWkbType( wkbType, geometryType, dim );
3987+
postgisGeometryType( wkbType, geometryType, dim );
39483988

39493989
// create geometry column
39503990
if ( !geometryType.isEmpty() )

0 commit comments

Comments
 (0)
Please sign in to comment.