diff --git a/src/providers/mssql/qgsmssqldataitems.cpp b/src/providers/mssql/qgsmssqldataitems.cpp index 3babce10815f..3e407d653c33 100644 --- a/src/providers/mssql/qgsmssqldataitems.cpp +++ b/src/providers/mssql/qgsmssqldataitems.cpp @@ -542,24 +542,19 @@ QgsMssqlLayerItem *QgsMssqlSchemaItem::addLayer( const QgsMssqlLayerProperty &la QString tip = tr( "%1 as %2 in %3" ).arg( layerProperty.geometryColName, QgsWkbTypes::displayString( wkbType ), layerProperty.srid ); QgsLayerItem::LayerType layerType; - switch ( wkbType ) + QgsWkbTypes::Type flatType = QgsWkbTypes::flatType( wkbType ); + switch ( flatType ) { case QgsWkbTypes::Point: - case QgsWkbTypes::Point25D: case QgsWkbTypes::MultiPoint: - case QgsWkbTypes::MultiPoint25D: layerType = QgsLayerItem::Point; break; case QgsWkbTypes::LineString: - case QgsWkbTypes::LineString25D: case QgsWkbTypes::MultiLineString: - case QgsWkbTypes::MultiLineString25D: layerType = QgsLayerItem::Line; break; case QgsWkbTypes::Polygon: - case QgsWkbTypes::Polygon25D: case QgsWkbTypes::MultiPolygon: - case QgsWkbTypes::MultiPolygon25D: layerType = QgsLayerItem::Polygon; break; default: diff --git a/src/providers/mssql/qgsmssqlprovider.cpp b/src/providers/mssql/qgsmssqlprovider.cpp index 63728deb2343..a5a6ad4e18ca 100644 --- a/src/providers/mssql/qgsmssqlprovider.cpp +++ b/src/providers/mssql/qgsmssqlprovider.cpp @@ -352,15 +352,15 @@ void QgsMssqlProvider::loadMetadata() QSqlQuery query = QSqlQuery( mDatabase ); query.setForwardOnly( true ); - if ( !query.exec( QStringLiteral( "select f_geometry_column, coord_dimension, srid, geometry_type from geometry_columns where f_table_schema = '%1' and f_table_name = '%2'" ).arg( mSchemaName, mTableName ) ) ) + if ( !query.exec( QStringLiteral( "select f_geometry_column, srid, geometry_type from geometry_columns where f_table_schema = '%1' and f_table_name = '%2'" ).arg( mSchemaName, mTableName ) ) ) { QgsDebugMsg( query.lastError().text() ); } if ( query.isActive() && query.next() ) { mGeometryColName = query.value( 0 ).toString(); - mSRId = query.value( 2 ).toInt(); - mWkbType = getWkbType( query.value( 3 ).toString(), query.value( 1 ).toInt() ); + mSRId = query.value( 1 ).toInt(); + mWkbType = getWkbType( query.value( 2 ).toString() ); } } @@ -1658,42 +1658,9 @@ void QgsMssqlProvider::mssqlWkbTypeAndDimension( QgsWkbTypes::Type wkbType, QStr dim = 0; } -QgsWkbTypes::Type QgsMssqlProvider::getWkbType( const QString &geometryType, int dim ) +QgsWkbTypes::Type QgsMssqlProvider::getWkbType( const QString &geometryType ) { - if ( dim == 3 ) - { - if ( geometryType == QLatin1String( "POINT" ) ) - return QgsWkbTypes::Point25D; - if ( geometryType == QLatin1String( "LINESTRING" ) ) - return QgsWkbTypes::LineString25D; - if ( geometryType == QLatin1String( "POLYGON" ) ) - return QgsWkbTypes::Polygon25D; - if ( geometryType == QLatin1String( "MULTIPOINT" ) ) - return QgsWkbTypes::MultiPoint25D; - if ( geometryType == QLatin1String( "MULTILINESTRING" ) ) - return QgsWkbTypes::MultiLineString25D; - if ( geometryType == QLatin1String( "MULTIPOLYGON" ) ) - return QgsWkbTypes::MultiPolygon25D; - else - return QgsWkbTypes::Unknown; - } - else - { - if ( geometryType == QLatin1String( "POINT" ) ) - return QgsWkbTypes::Point; - if ( geometryType == QLatin1String( "LINESTRING" ) ) - return QgsWkbTypes::LineString; - if ( geometryType == QLatin1String( "POLYGON" ) ) - return QgsWkbTypes::Polygon; - if ( geometryType == QLatin1String( "MULTIPOINT" ) ) - return QgsWkbTypes::MultiPoint; - if ( geometryType == QLatin1String( "MULTILINESTRING" ) ) - return QgsWkbTypes::MultiLineString; - if ( geometryType == QLatin1String( "MULTIPOLYGON" ) ) - return QgsWkbTypes::MultiPolygon; - else - return QgsWkbTypes::Unknown; - } + return QgsWkbTypes::parseType( geometryType ); } diff --git a/src/providers/mssql/qgsmssqlprovider.h b/src/providers/mssql/qgsmssqlprovider.h index a6b787766890..1fdd18179193 100644 --- a/src/providers/mssql/qgsmssqlprovider.h +++ b/src/providers/mssql/qgsmssqlprovider.h @@ -213,7 +213,7 @@ class QgsMssqlProvider : public QgsVectorDataProvider } static void mssqlWkbTypeAndDimension( QgsWkbTypes::Type wkbType, QString &geometryType, int &dim ); - static QgsWkbTypes::Type getWkbType( const QString &wkbType, int dim ); + static QgsWkbTypes::Type getWkbType( const QString &wkbType ); friend class QgsMssqlFeatureSource; diff --git a/src/providers/mssql/qgsmssqltablemodel.cpp b/src/providers/mssql/qgsmssqltablemodel.cpp index 945c01163853..d8f8036bdc8c 100644 --- a/src/providers/mssql/qgsmssqltablemodel.cpp +++ b/src/providers/mssql/qgsmssqltablemodel.cpp @@ -397,61 +397,5 @@ QString QgsMssqlTableModel::layerURI( const QModelIndex &index, const QString &c QgsWkbTypes::Type QgsMssqlTableModel::wkbTypeFromMssql( QString type ) { type = type.toUpper(); - - if ( type == QLatin1String( "POINT" ) ) - { - return QgsWkbTypes::Point; - } - else if ( type == QLatin1String( "POINTM" ) ) - { - return QgsWkbTypes::Point25D; - } - else if ( type == QLatin1String( "MULTIPOINT" ) ) - { - return QgsWkbTypes::MultiPoint; - } - else if ( type == QLatin1String( "MULTIPOINTM" ) ) - { - return QgsWkbTypes::MultiPoint25D; - } - else if ( type == QLatin1String( "LINESTRING" ) ) - { - return QgsWkbTypes::LineString; - } - else if ( type == QLatin1String( "LINESTRINGM" ) ) - { - return QgsWkbTypes::LineString25D; - } - else if ( type == QLatin1String( "MULTILINESTRING" ) ) - { - return QgsWkbTypes::MultiLineString; - } - else if ( type == QLatin1String( "MULTILINESTRINGM" ) ) - { - return QgsWkbTypes::MultiLineString25D; - } - else if ( type == QLatin1String( "POLYGON" ) ) - { - return QgsWkbTypes::Polygon; - } - else if ( type == QLatin1String( "POLYGONM" ) ) - { - return QgsWkbTypes::Polygon25D; - } - else if ( type == QLatin1String( "MULTIPOLYGON" ) ) - { - return QgsWkbTypes::MultiPolygon; - } - else if ( type == QLatin1String( "MULTIPOLYGONM" ) ) - { - return QgsWkbTypes::MultiPolygon25D; - } - else if ( type == QLatin1String( "NONE" ) ) - { - return QgsWkbTypes::NoGeometry; - } - else - { - return QgsWkbTypes::Unknown; - } + return QgsWkbTypes::parseType( type ); }