Skip to content

Commit a61abe5

Browse files
committedFeb 12, 2019
[postgis] Fix creation of new Z/M enabled, curved geometry type layers
(cherry picked from commit 07746db)
1 parent 05dd5f1 commit a61abe5

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
@@ -3769,6 +3769,46 @@ bool QgsPostgresProvider::convertField( QgsField &field, const QMap<QString, QVa
37693769
return true;
37703770
}
37713771

3772+
3773+
void postgisGeometryType( QgsWkbTypes::Type wkbType, QString &geometryType, int &dim )
3774+
{
3775+
dim = 2;
3776+
QgsWkbTypes::Type flatType = QgsWkbTypes::flatType( wkbType );
3777+
geometryType = QgsWkbTypes::displayString( flatType ).toUpper();
3778+
switch ( flatType )
3779+
{
3780+
case QgsWkbTypes::Unknown:
3781+
geometryType = QStringLiteral( "GEOMETRY" );
3782+
break;
3783+
3784+
case QgsWkbTypes::NoGeometry:
3785+
geometryType.clear();
3786+
dim = 0;
3787+
break;
3788+
3789+
default:
3790+
break;
3791+
}
3792+
3793+
if ( QgsWkbTypes::hasZ( wkbType ) && QgsWkbTypes::hasM( wkbType ) )
3794+
{
3795+
dim = 4;
3796+
}
3797+
else if ( QgsWkbTypes::hasZ( wkbType ) )
3798+
{
3799+
dim = 3;
3800+
}
3801+
else if ( QgsWkbTypes::hasM( wkbType ) )
3802+
{
3803+
geometryType += QLatin1String( "M" );
3804+
dim = 3;
3805+
}
3806+
else if ( wkbType >= QgsWkbTypes::Point25D && wkbType <= QgsWkbTypes::MultiPolygon25D )
3807+
{
3808+
dim = 3;
3809+
}
3810+
}
3811+
37723812
QgsVectorLayerExporter::ExportError QgsPostgresProvider::createEmptyLayer( const QString &uri,
37733813
const QgsFields &fields,
37743814
QgsWkbTypes::Type wkbType,
@@ -3953,7 +3993,7 @@ QgsVectorLayerExporter::ExportError QgsPostgresProvider::createEmptyLayer( const
39533993
int dim = 2;
39543994
long srid = srs.postgisSrid();
39553995

3956-
QgsPostgresConn::postgisWkbType( wkbType, geometryType, dim );
3996+
postgisGeometryType( wkbType, geometryType, dim );
39573997

39583998
// create geometry column
39593999
if ( !geometryType.isEmpty() )

0 commit comments

Comments
 (0)
Please sign in to comment.