diff --git a/resources/srs.db b/resources/srs.db index b7e07ca7562..b76e80703bd 100644 Binary files a/resources/srs.db and b/resources/srs.db differ diff --git a/src/core/qgscoordinatereferencesystem.cpp b/src/core/qgscoordinatereferencesystem.cpp index cc70f444e71..9fad2d727d3 100644 --- a/src/core/qgscoordinatereferencesystem.cpp +++ b/src/core/qgscoordinatereferencesystem.cpp @@ -2032,7 +2032,7 @@ bool QgsCoordinateReferenceSystem::syncDatumTransform( const QString& dbPath ) { //not yet in database, do insert QgsDebugMsg( "Trying datum transform insert" ); - sql = QString( "INSERT INTO tbl_datum_transform ( coord_op_code, source_crs_code, target_crs_code, coord_op_method_code, p1, p2, p3, p4, p5, p6, p7 ) VALUES ( %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11 )" ) + sql = QString( "INSERT INTO tbl_datum_transform ( epsg_nr, coord_op_code, source_crs_code, target_crs_code, coord_op_method_code, p1, p2, p3, p4, p5, p6, p7 ) VALUES ( %1, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11 )" ) .arg( coord_op ).arg( source_crs ).arg( target_crs ).arg( coord_op_method ).arg( p1 ).arg( p2 ).arg( p3 ).arg( p4 ).arg( p5 ).arg( p6 ).arg( p7 ); } diff --git a/src/core/qgscoordinatetransform.cpp b/src/core/qgscoordinatetransform.cpp index 1bbb290d287..d992b4a82e5 100644 --- a/src/core/qgscoordinatetransform.cpp +++ b/src/core/qgscoordinatetransform.cpp @@ -932,7 +932,7 @@ QString QgsCoordinateTransform::datumTransformString( int datumTransform ) return transformString; } -bool QgsCoordinateTransform::datumTransformCrsInfo( int datumTransform, QString& srcProjection, QString& dstProjection ) +bool QgsCoordinateTransform::datumTransformCrsInfo( int datumTransform, int& epsgNr, QString& srcProjection, QString& dstProjection ) { sqlite3* db; int openResult = sqlite3_open( QgsApplication::srsDbFilePath().toUtf8().constData(), &db ); @@ -943,7 +943,7 @@ bool QgsCoordinateTransform::datumTransformCrsInfo( int datumTransform, QString& } sqlite3_stmt* stmt; - QString sql = QString( "SELECT source_crs_code, target_crs_code FROM tbl_datum_transform WHERE coord_op_code = %1" ).arg( datumTransform ); + QString sql = QString( "SELECT epsg_nr, source_crs_code, target_crs_code FROM tbl_datum_transform WHERE coord_op_code = %1" ).arg( datumTransform ); int prepareRes = sqlite3_prepare( db, sql.toAscii(), sql.size(), &stmt, NULL ); if ( prepareRes != SQLITE_OK ) { @@ -954,8 +954,9 @@ bool QgsCoordinateTransform::datumTransformCrsInfo( int datumTransform, QString& int srcCrsId, destCrsId; if ( sqlite3_step( stmt ) == SQLITE_ROW ) { - srcCrsId = sqlite3_column_int( stmt, 0 ); - destCrsId = sqlite3_column_int( stmt, 1 ); + epsgNr = sqlite3_column_int( stmt, 0 ); + srcCrsId = sqlite3_column_int( stmt, 1 ); + destCrsId = sqlite3_column_int( stmt, 2 ); } QgsCoordinateReferenceSystem srcCrs; diff --git a/src/core/qgscoordinatetransform.h b/src/core/qgscoordinatetransform.h index 75da5d4f7f4..a596b501fc6 100644 --- a/src/core/qgscoordinatetransform.h +++ b/src/core/qgscoordinatetransform.h @@ -214,8 +214,9 @@ class CORE_EXPORT QgsCoordinateTransform : public QObject /**Returns list of datum transformations for the given src and dest CRS*/ static QList< QList< int > > datumTransformations( const QgsCoordinateReferenceSystem& srcCRS, const QgsCoordinateReferenceSystem& destCRS ); static QString datumTransformString( int datumTransform ); - /**Gets name of source and dest geographical CRS (to show in a tooltip)*/ - static bool datumTransformCrsInfo( int datumTransform, QString& srcProjection, QString& dstProjection ); + /**Gets name of source and dest geographical CRS (to show in a tooltip) + @return epsgNr epsg code of the transformation (or 0 if not in epsg db)*/ + static bool datumTransformCrsInfo( int datumTransform, int& epsgNr, QString& srcProjection, QString& dstProjection ); int sourceDatumTransform() const { return mSourceDatumTransform; } void setSourceDatumTransform( int dt ) { mSourceDatumTransform = dt; } diff --git a/src/gui/qgsdatumtransformdialog.cpp b/src/gui/qgsdatumtransformdialog.cpp index 2e3f6ae2e93..7a2b2b2be41 100644 --- a/src/gui/qgsdatumtransformdialog.cpp +++ b/src/gui/qgsdatumtransformdialog.cpp @@ -44,9 +44,15 @@ QgsDatumTransformDialog::QgsDatumTransformDialog( const QString& layerName, cons //Describe datums in a tooltip QString srcGeoProj, destGeoProj; - if ( QgsCoordinateTransform::datumTransformCrsInfo( nr, srcGeoProj, destGeoProj ) ) + int epsgNr; + if ( QgsCoordinateTransform::datumTransformCrsInfo( nr, epsgNr, srcGeoProj, destGeoProj ) ) { - QString toolTipString = QString( "EPSG Transformations Code: %1\nSource CRS: %2\nDestination CRS: %3" ).arg( nr ).arg( srcGeoProj ).arg( destGeoProj ); + QString toolTipString; + if ( epsgNr > 0 ) + { + toolTipString.append( QString( "EPSG Transformations Code: %1\n" ).arg( epsgNr ) ); + } + toolTipString.append( QString( "Source CRS: %1\nDestination CRS: %2" ).arg( srcGeoProj ).arg( destGeoProj ) ); item->setToolTip( i, toolTipString ); } }