Skip to content

Commit 6c5cb2e

Browse files
wonder-sknyalldawson
authored andcommittedMay 17, 2020
Test for transformCoordinates()
1 parent 68bbf46 commit 6c5cb2e

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
 

‎tests/src/core/testqgsgdalprovider.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class TestQgsGdalProvider : public QObject
5858
void bandNameWithDescription(); // test band name for when description available (#16047)
5959
void interactionBetweenRasterChangeAndCache(); // test that updading a raster invalidates the GDAL dataset cache (#20104)
6060
void scale0(); //test when data has scale 0 (#20493)
61+
void transformCoordinates();
6162

6263
private:
6364
QString mTestDataDir;
@@ -369,5 +370,34 @@ void TestQgsGdalProvider::scale0()
369370
delete provider;
370371
}
371372

373+
void TestQgsGdalProvider::transformCoordinates()
374+
{
375+
// Test implementation of QgsRasterDataProvider::transformCoordinates()
376+
QString raster = QStringLiteral( TEST_DATA_DIR ) + "/float1-16.tif";
377+
QgsDataProvider *provider = QgsProviderRegistry::instance()->createProvider( QStringLiteral( "gdal" ), raster, QgsDataProvider::ProviderOptions() );
378+
QgsRasterDataProvider *rp = dynamic_cast< QgsRasterDataProvider * >( provider );
379+
QVERIFY( rp );
380+
QVERIFY( rp->isValid() );
381+
382+
// forward transform - image coordinates to georeferenced coordinates
383+
QgsPoint pt1Layer = rp->transformCoordinates( QgsPoint( 0, 0 ), QgsRasterDataProvider::TransformImageToLayer ); // bottom-left corner
384+
QgsPoint pt2Layer = rp->transformCoordinates( QgsPoint( 4, 0 ), QgsRasterDataProvider::TransformImageToLayer );
385+
QgsPoint pt3Layer = rp->transformCoordinates( QgsPoint( 4, 4 ), QgsRasterDataProvider::TransformImageToLayer ); // top-right corner
386+
387+
QCOMPARE( pt1Layer, QgsPoint( 106.0, -7.0, 0 ) );
388+
QCOMPARE( pt2Layer, QgsPoint( 106.8, -7.0, 0 ) );
389+
QCOMPARE( pt3Layer, QgsPoint( 106.8, -6.2, 0 ) );
390+
391+
// inverse transform - georeferenced coordinates to image coordinates
392+
QgsPoint pt1Image = rp->transformCoordinates( QgsPoint( 106.0, -7.0 ), QgsRasterDataProvider::TransformLayerToImage ); // bottom-left corner
393+
QgsPoint pt2Image = rp->transformCoordinates( QgsPoint( 106.8, -7.0 ), QgsRasterDataProvider::TransformLayerToImage );
394+
QgsPoint pt3Image = rp->transformCoordinates( QgsPoint( 106.8, -6.2 ), QgsRasterDataProvider::TransformLayerToImage ); // top-right corner
395+
396+
QCOMPARE( pt1Image, QgsPoint( 0, 0, 0 ) );
397+
QCOMPARE( pt2Image, QgsPoint( 4, 0, 0 ) );
398+
QCOMPARE( pt3Image, QgsPoint( 4, 4, 0 ) );
399+
400+
}
401+
372402
QGSTEST_MAIN( TestQgsGdalProvider )
373403
#include "testqgsgdalprovider.moc"

0 commit comments

Comments
 (0)
Please sign in to comment.