@@ -3760,6 +3760,46 @@ bool QgsPostgresProvider::convertField( QgsField &field, const QMap<QString, QVa
3760
3760
return true ;
3761
3761
}
3762
3762
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
+
3763
3803
QgsVectorLayerExporter::ExportError QgsPostgresProvider::createEmptyLayer ( const QString &uri,
3764
3804
const QgsFields &fields,
3765
3805
QgsWkbTypes::Type wkbType,
@@ -3944,7 +3984,7 @@ QgsVectorLayerExporter::ExportError QgsPostgresProvider::createEmptyLayer( const
3944
3984
int dim = 2 ;
3945
3985
long srid = srs.postgisSrid ();
3946
3986
3947
- QgsPostgresConn::postgisWkbType ( wkbType, geometryType, dim );
3987
+ postgisGeometryType ( wkbType, geometryType, dim );
3948
3988
3949
3989
// create geometry column
3950
3990
if ( !geometryType.isEmpty () )
0 commit comments