@@ -3769,6 +3769,46 @@ bool QgsPostgresProvider::convertField( QgsField &field, const QMap<QString, QVa
3769
3769
return true ;
3770
3770
}
3771
3771
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
+
3772
3812
QgsVectorLayerExporter::ExportError QgsPostgresProvider::createEmptyLayer ( const QString &uri,
3773
3813
const QgsFields &fields,
3774
3814
QgsWkbTypes::Type wkbType,
@@ -3953,7 +3993,7 @@ QgsVectorLayerExporter::ExportError QgsPostgresProvider::createEmptyLayer( const
3953
3993
int dim = 2 ;
3954
3994
long srid = srs.postgisSrid ();
3955
3995
3956
- QgsPostgresConn::postgisWkbType ( wkbType, geometryType, dim );
3996
+ postgisGeometryType ( wkbType, geometryType, dim );
3957
3997
3958
3998
// create geometry column
3959
3999
if ( !geometryType.isEmpty () )
0 commit comments