mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-01 00:46:20 -05:00
More consistent exception throwing in QgsCoordinateTransform::transformBoundingBox
Depending on the os and proj versions, we weren't always getting an exception when a bad bounding box transform was made. So now we explicitly check the result, and if everything was invalid then we also throw an exception. This makes the behavior consistent across different platforms, and fixes running the provider tests on non Travis platforms (highly likely also fixes various issues encountered while running QGIS)
This commit is contained in:
parent
957cf652aa
commit
705416c489
@ -426,6 +426,12 @@ QgsRectangle QgsCoordinateTransform::transformBoundingBox( const QgsRectangle &r
|
||||
}
|
||||
}
|
||||
|
||||
if ( bb_rect.isNull() )
|
||||
{
|
||||
// something bad happened when reprojecting the filter rect... no finite points were left!
|
||||
throw QgsCsException( QObject::tr( "Could not transform bounding box to target CRS" ) );
|
||||
}
|
||||
|
||||
if ( handle180Crossover )
|
||||
{
|
||||
//subtract temporary addition of 360 degrees from longitudes
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "qgsrectangle.h"
|
||||
#include <QObject>
|
||||
#include "qgstest.h"
|
||||
#include "qgsexception.h"
|
||||
|
||||
class TestQgsCoordinateTransform: public QObject
|
||||
{
|
||||
@ -204,6 +205,20 @@ void TestQgsCoordinateTransform::transformBoundingBox()
|
||||
QGSCOMPARENEAR( resultRect.yMinimum(), expectedRect.yMinimum(), 0.001 );
|
||||
QGSCOMPARENEAR( resultRect.xMaximum(), expectedRect.xMaximum(), 0.001 );
|
||||
QGSCOMPARENEAR( resultRect.yMaximum(), expectedRect.yMaximum(), 0.001 );
|
||||
|
||||
// test transforming a bounding box, resulting in an invalid transform - exception must be thrown
|
||||
tr = QgsCoordinateTransform( QgsCoordinateReferenceSystem( 4326 ), QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:28356" ) ) );
|
||||
QgsRectangle rect( -99999999999, 99999999999, -99999999998, 99999999998 );
|
||||
bool errorObtained = false;
|
||||
try
|
||||
{
|
||||
resultRect = tr.transformBoundingBox( rect );
|
||||
}
|
||||
catch ( QgsCsException & )
|
||||
{
|
||||
errorObtained = true;
|
||||
}
|
||||
QVERIFY( errorObtained );
|
||||
}
|
||||
|
||||
QGSTEST_MAIN( TestQgsCoordinateTransform )
|
||||
|
Loading…
x
Reference in New Issue
Block a user