From 5984107edf54a74772dddbbeca79e28e98826032 Mon Sep 17 00:00:00 2001 From: Martin Dobias Date: Sat, 9 Mar 2019 13:50:32 +0000 Subject: [PATCH] [browser] Fix addition of PostGIS layers with unknown CRS When a PostGIS table does not have CRS specified (srid == 0) then it was not possible to correctly load it from browser (but it worked from DB manager). The problem was that browser item used negative srid in layer URI, messing up everything. Also fixed the display of srid in tooltip (it says "unknown" rather than showing -2147483648) --- src/providers/postgres/qgspostgresdataitems.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/providers/postgres/qgspostgresdataitems.cpp b/src/providers/postgres/qgspostgresdataitems.cpp index ba095686d207..bc621dc489e9 100644 --- a/src/providers/postgres/qgspostgresdataitems.cpp +++ b/src/providers/postgres/qgspostgresdataitems.cpp @@ -516,7 +516,7 @@ QString QgsPGLayerItem::createUri() uri.setDataSource( mLayerProperty.schemaName, mLayerProperty.tableName, mLayerProperty.geometryColName, mLayerProperty.sql, cols.join( ',' ) ); uri.setWkbType( mLayerProperty.types.at( 0 ) ); - if ( uri.wkbType() != QgsWkbTypes::NoGeometry ) + if ( uri.wkbType() != QgsWkbTypes::NoGeometry && mLayerProperty.srids.at( 0 ) != std::numeric_limits::min() ) uri.setSrid( QString::number( mLayerProperty.srids.at( 0 ) ) ); QgsDebugMsg( QStringLiteral( "layer uri: %1" ).arg( uri.uri( false ) ) ); return uri.uri( false ); @@ -750,7 +750,12 @@ QgsPGLayerItem *QgsPGSchemaItem::createLayer( QgsPostgresLayerProperty layerProp tip = tr( "Table" ); } QgsWkbTypes::Type wkbType = layerProperty.types.at( 0 ); - tip += tr( "\n%1 as %2 in %3" ).arg( layerProperty.geometryColName, QgsPostgresConn::displayStringForWkbType( wkbType ) ).arg( layerProperty.srids.at( 0 ) ); + tip += tr( "\n%1 as %2" ).arg( layerProperty.geometryColName, QgsPostgresConn::displayStringForWkbType( wkbType ) ); + if ( layerProperty.srids.at( 0 ) != std::numeric_limits::min() ) + tip += tr( " (srid %1)" ).arg( layerProperty.srids.at( 0 ) ); + else + tip += tr( " (unknown srid)" ); + if ( !layerProperty.tableComment.isEmpty() ) { tip = layerProperty.tableComment + '\n' + tip;