Skip to content

Commit d5431b3

Browse files
committedJan 9, 2012
- log addition of user coordinate systems
- include proj.4 definitions in CRS exceptions - raster layer: catch exception on extent transformation errors (fixes freeze in #4583)
1 parent 2647e1d commit d5431b3

File tree

5 files changed

+38
-19
lines changed

5 files changed

+38
-19
lines changed
 

‎i18n/qgis_de.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12958,7 +12958,7 @@ Sollen die vorhandenen Klassen vor der Klassifizierung gelöscht werden?</transl
1295812958
<message>
1295912959
<location filename="../src/core/qgscoordinatetransform.cpp" line="553"/>
1296012960
<source>forward transform</source>
12961-
<translation>Transformation</translation>
12961+
<translation>Vorwärtstransformation</translation>
1296212962
</message>
1296312963
<message>
1296412964
<location filename="../src/core/qgscoordinatetransform.cpp" line="573"/>

‎src/app/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,9 @@ void myMessageOutput( QtMsgType type, const char *msg )
187187
break;
188188
case QtFatalMsg:
189189
{
190-
fprintf( stderr, "Fatal: %s\nStacktrace (run through c++filt):\n", msg );
190+
fprintf( stderr, "Fatal: %s\n", msg );
191191
#ifdef linux
192+
fprintf( stderr, "Stacktrace (run through c++filt):\n" );
192193
void *buffer[256];
193194
int nptrs = backtrace( buffer, sizeof( buffer ) / sizeof( *buffer ) );
194195
backtrace_symbols_fd( buffer, nptrs, STDERR_FILENO );
@@ -198,7 +199,6 @@ void myMessageOutput( QtMsgType type, const char *msg )
198199
}
199200
}
200201

201-
202202
int main( int argc, char *argv[] )
203203
{
204204
QgsDebugMsg( QString( "Starting qgis main" ) );

‎src/core/qgscoordinatereferencesystem.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#include "qgsapplication.h"
3030
#include "qgscrscache.h"
3131
#include "qgslogger.h"
32-
#include "qgsmessageoutput.h"
32+
#include "qgsmessagelog.h"
3333
#include "qgis.h" //const vals declared here
3434

3535
#include <sqlite3.h>
@@ -1094,7 +1094,7 @@ bool QgsCoordinateReferenceSystem::readXML( QDomNode & theNode )
10941094
setMapUnits();
10951095

10961096
//@TODO this srs needs to be validated!!!
1097-
mIsValidFlag = true;//shamelessly hard coded for now
1097+
mIsValidFlag = true; //shamelessly hard coded for now
10981098
}
10991099
}
11001100
}
@@ -1238,13 +1238,10 @@ int QgsCoordinateReferenceSystem::openDb( QString path, sqlite3 **db )
12381238
// XXX This will likely never happen since on open, sqlite creates the
12391239
// database if it does not exist.
12401240
// ... unfortunately it happens on Windows
1241-
QgsMessageOutput* output = QgsMessageOutput::createMessageOutput();
1242-
output->setTitle( "Error" );
1243-
output->setMessage( QObject::tr( "Could not open CRS database %1<br>Error(%2): %3" )
1244-
.arg( path )
1245-
.arg( myResult )
1246-
.arg( sqlite3_errmsg( *db ) ), QgsMessageOutput::MessageText );
1247-
output->showMessage();
1241+
QgsMessageLog::logMessage( QObject::tr( "Could not open CRS database %1\nError(%2): %3" )
1242+
.arg( path )
1243+
.arg( myResult )
1244+
.arg( sqlite3_errmsg( *db ) ), QObject::tr( "CRS" ) );
12481245
}
12491246
return myResult;
12501247
}
@@ -1346,6 +1343,9 @@ bool QgsCoordinateReferenceSystem::saveAsUserCRS()
13461343
QgsDebugMsg( QString( "Update or insert sql \n%1" ).arg( mySql ) );
13471344
myResult = sqlite3_prepare( myDatabase, mySql.toUtf8(), mySql.toUtf8().length(), &myPreparedStatement, &myTail );
13481345
sqlite3_step( myPreparedStatement );
1346+
1347+
QgsMessageLog::logMessage( QObject::tr( "Saved user CRS [%1]" ).arg( toProj4() ), QObject::tr( "CRS" ) );
1348+
13491349
// XXX Need to free memory from the error msg if one is set
13501350
return myResult == SQLITE_OK;
13511351
}

‎src/core/qgscoordinatetransform.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -562,17 +562,21 @@ void QgsCoordinateTransform::transformCoords( const int& numPoints, double *x, d
562562
{
563563
if ( direction == ForwardTransform )
564564
{
565-
points += QString( "(%1, %2)\n" ).arg( x[i] ).arg( y[i] );
565+
points += QString( "(%1, %2)\n" ).arg( x[i], 0, 'f' ).arg( y[i], 0, 'f' );
566566
}
567567
else
568568
{
569-
points += QString( "(%1, %2)\n" ).arg( x[i] * RAD_TO_DEG ).arg( y[i] * RAD_TO_DEG );
569+
points += QString( "(%1, %2)\n" ).arg( x[i] * RAD_TO_DEG, 0, 'f' ).arg( y[i] * RAD_TO_DEG, 0, 'f' );
570570
}
571571
}
572572

573-
QString msg = tr( "%1 of\n%2\nfailed with error: %3\n" )
573+
QString msg = tr( "%1 of\n"
574+
"%2"
575+
"PROJ.4: %3 +to %4\n"
576+
"Error: %5" )
574577
.arg( dir )
575578
.arg( points )
579+
.arg( mSourceCRS.toProj4() ).arg( mDestCRS.toProj4() )
576580
.arg( QString::fromUtf8( pj_strerrno( projResult ) ) );
577581

578582
QgsDebugMsg( "Projection failed emitting invalid transform signal: " + msg );

‎src/core/raster/qgsrasterlayer.cpp

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -649,10 +649,25 @@ bool QgsRasterLayer::draw( QgsRenderContext& rendererContext )
649649
if ( rendererContext.coordinateTransform() )
650650
{
651651
QgsDebugMsg( "coordinateTransform set -> project extents." );
652-
myProjectedViewExtent = rendererContext.coordinateTransform()->transformBoundingBox(
653-
rendererContext.extent() );
654-
myProjectedLayerExtent = rendererContext.coordinateTransform()->transformBoundingBox(
655-
mLayerExtent );
652+
try
653+
{
654+
myProjectedViewExtent = rendererContext.coordinateTransform()->transformBoundingBox( rendererContext.extent() );
655+
}
656+
catch ( QgsCsException &cs )
657+
{
658+
QgsMessageLog::logMessage( tr( "Could not reproject view extent: %1" ).arg( cs.what() ), tr( "Raster" ) );
659+
myProjectedViewExtent = rendererContext.extent();
660+
}
661+
662+
try
663+
{
664+
myProjectedLayerExtent = rendererContext.coordinateTransform()->transformBoundingBox( mLayerExtent );
665+
}
666+
catch ( QgsCsException &cs )
667+
{
668+
QgsMessageLog::logMessage( tr( "Could not reproject layer extent: %1" ).arg( cs.what() ), tr( "Raster" ) );
669+
myProjectedLayerExtent = mLayerExtent;
670+
}
656671
}
657672
else
658673
{

0 commit comments

Comments
 (0)