Skip to content

Commit b21167c

Browse files
committedNov 18, 2013
Fix proj string manipulation for reverse datum transformations
1 parent 99cee10 commit b21167c

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed
 

‎src/core/qgscoordinatetransform.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,16 @@ void QgsCoordinateTransform::initialise()
193193
{
194194
destProjString += ( " " + datumTransformString( mDestinationDatumTransform ) );
195195
}
196-
else if ( sourceProjString.contains( "+nadgrids" ) ) //add null grid if source transformation is ntv2
196+
else if ( !useDefaultDatumTransform && sourceProjString.contains( "+nadgrids" ) ) //add null grid if source transformation is ntv2
197197
{
198198
destProjString += " +nadgrids=@null";
199199
}
200+
201+
if ( mSourceDatumTransform == -1 && !useDefaultDatumTransform && destProjString.contains( "+nadgrids" ) )
202+
{
203+
sourceProjString += " +nadgrids=@null";
204+
}
205+
200206
mDestinationProjection = pj_init_plus( destProjString.toUtf8() );
201207

202208
#ifdef COORDINATE_TRANSFORM_VERBOSE
@@ -792,8 +798,9 @@ QList< QList< int > > QgsCoordinateTransform::datumTransformations( const QgsCoo
792798
QList<int> directTransforms;
793799
searchDatumTransform( QString( "SELECT coord_op_code FROM tbl_datum_transform WHERE source_crs_code = %1 AND target_crs_code = %2" ).arg( srcAuthCode ).arg( destAuthCode ),
794800
directTransforms );
801+
QList<int> reverseDirectTransforms;
795802
searchDatumTransform( QString( "SELECT coord_op_code FROM tbl_datum_transform WHERE source_crs_code = %1 AND target_crs_code = %2" ).arg( destAuthCode ).arg( srcAuthCode ),
796-
directTransforms );
803+
reverseDirectTransforms );
797804
QList<int> srcToWgs84;
798805
searchDatumTransform( QString( "SELECT coord_op_code FROM tbl_datum_transform WHERE ( source_crs_code = %1 AND target_crs_code = %2 ) OR ( source_crs_code = %2 AND target_crs_code = %1 )" ).arg( srcAuthCode ).arg( 4326 ),
799806
srcToWgs84 );
@@ -808,6 +815,12 @@ QList< QList< int > > QgsCoordinateTransform::datumTransformations( const QgsCoo
808815
transformations.push_back( QList<int>() << *directIt << -1 );
809816
}
810817

818+
//add direct datum transformations
819+
directIt = reverseDirectTransforms.constBegin();
820+
for ( ; directIt != reverseDirectTransforms.constEnd(); ++directIt )
821+
{
822+
transformations.push_back( QList<int>() << -1 << *directIt );
823+
}
811824

812825
QList<int>::const_iterator srcWgsIt = srcToWgs84.constBegin();
813826
for ( ; srcWgsIt != srcToWgs84.constEnd(); ++srcWgsIt )

‎src/gui/qgsdatumtransformdialog.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,7 @@ QList< int > QgsDatumTransformDialog::selectedDatumTransform()
7171
for ( int i = 0; i < 2; ++i )
7272
{
7373
int transformNr = item->data( i, Qt::UserRole ).toInt();
74-
if ( transformNr != -1 )
75-
{
76-
list << transformNr;
77-
}
74+
list << transformNr;
7875
}
7976
}
8077
return list;

0 commit comments

Comments
 (0)
Please sign in to comment.