Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Flag a lot of situations where ballpark transforms are appropriate
so warnings are not shown

Fixes #45621
  • Loading branch information
nyalldawson committed Jan 25, 2022
1 parent b8c6bb8 commit 9bf2356
Show file tree
Hide file tree
Showing 43 changed files with 148 additions and 60 deletions.
1 change: 1 addition & 0 deletions src/3d/qgs3dmapscene.cpp
Expand Up @@ -1137,6 +1137,7 @@ QgsRectangle Qgs3DMapScene::sceneExtent()
{
QgsRectangle terrainExtent = terrainGenerator->extent();
QgsCoordinateTransform terrainToMapTransform( terrainGenerator->crs(), mMap.crs(), QgsProject::instance() );
terrainToMapTransform.setBallparkTransformsAreAppropriate( true );
terrainExtent = terrainToMapTransform.transformBoundingBox( terrainExtent );
extent.combineExtentWith( terrainExtent );
}
Expand Down
3 changes: 2 additions & 1 deletion src/3d/qgs3dutils.cpp
Expand Up @@ -452,7 +452,8 @@ static QgsRectangle _tryReprojectExtent2D( const QgsRectangle &extent, const Qgs
if ( crs1 != crs2 )
{
// reproject if necessary
const QgsCoordinateTransform ct( crs1, crs2, context );
QgsCoordinateTransform ct( crs1, crs2, context );
ct.setBallparkTransformsAreAppropriate( true );
try
{
extentMapCrs = ct.transformBoundingBox( extentMapCrs );
Expand Down
3 changes: 2 additions & 1 deletion src/3d/terrain/qgsdemterraingenerator.cpp
Expand Up @@ -110,7 +110,8 @@ void QgsDemTerrainGenerator::updateGenerator()
if ( dem )
{
QgsRectangle te = dem->extent();
const QgsCoordinateTransform terrainToMapTransform( dem->crs(), mCrs, mTransformContext );
QgsCoordinateTransform terrainToMapTransform( dem->crs(), mCrs, mTransformContext );
terrainToMapTransform.setBallparkTransformsAreAppropriate( true );
te = terrainToMapTransform.transformBoundingBox( te );

mTerrainTilingScheme = QgsTilingScheme( te, mCrs );
Expand Down
3 changes: 2 additions & 1 deletion src/3d/terrain/qgsterraindownloader.cpp
Expand Up @@ -128,7 +128,8 @@ QByteArray QgsTerrainDownloader::getHeightMap( const QgsRectangle &extentOrig, i
if ( destCrs != mOnlineDtm->crs() )
{
// if in different CRS - need to reproject extent and resolution
const QgsCoordinateTransform ct( destCrs, mOnlineDtm->crs(), context );
QgsCoordinateTransform ct( destCrs, mOnlineDtm->crs(), context );
ct.setBallparkTransformsAreAppropriate( true );
extentTr = ct.transformBoundingBox( extentOrig );
}

Expand Down
6 changes: 4 additions & 2 deletions src/3d/terrain/qgsterraingenerator.cpp
Expand Up @@ -22,7 +22,8 @@
QgsAABB QgsTerrainGenerator::rootChunkBbox( const Qgs3DMapSettings &map ) const
{
QgsRectangle te = extent();
const QgsCoordinateTransform terrainToMapTransform( crs(), map.crs(), map.transformContext() );
QgsCoordinateTransform terrainToMapTransform( crs(), map.crs(), map.transformContext() );
terrainToMapTransform.setBallparkTransformsAreAppropriate( true );
te = terrainToMapTransform.transformBoundingBox( te );

float hMin, hMax;
Expand All @@ -34,7 +35,8 @@ QgsAABB QgsTerrainGenerator::rootChunkBbox( const Qgs3DMapSettings &map ) const
float QgsTerrainGenerator::rootChunkError( const Qgs3DMapSettings &map ) const
{
QgsRectangle te = extent();
const QgsCoordinateTransform terrainToMapTransform( crs(), map.crs(), map.transformContext() );
QgsCoordinateTransform terrainToMapTransform( crs(), map.crs(), map.transformContext() );
terrainToMapTransform.setBallparkTransformsAreAppropriate( true );
te = terrainToMapTransform.transformBoundingBox( te );

// use texel size as the error
Expand Down
4 changes: 3 additions & 1 deletion src/3d/terrain/qgsterraintileloader_p.cpp
Expand Up @@ -51,7 +51,9 @@ QgsTerrainTileLoader::QgsTerrainTileLoader( QgsTerrainEntity *terrain, QgsChunkN

const QgsChunkNodeId nodeId = node->tileId();
const QgsRectangle extentTerrainCrs = map.terrainGenerator()->tilingScheme().tileToExtent( nodeId );
mExtentMapCrs = terrain->terrainToMapTransform().transformBoundingBox( extentTerrainCrs );
QgsCoordinateTransform transform = terrain->terrainToMapTransform();
transform.setBallparkTransformsAreAppropriate( true );
mExtentMapCrs = transform.transformBoundingBox( extentTerrainCrs );
mTileDebugText = nodeId.text();
}

Expand Down
Expand Up @@ -149,7 +149,8 @@ QVariantMap QgsExportLayersInformationAlgorithm::processAlgorithm( const QVarian
{
if ( layer->crs() != mCrs )
{
const QgsCoordinateTransform transform( layer->crs(), mCrs, context.transformContext() );
QgsCoordinateTransform transform( layer->crs(), mCrs, context.transformContext() );
transform.setBallparkTransformsAreAppropriate( true );
try
{
rect = transform.transformBoundingBox( rect );
Expand Down
Expand Up @@ -150,6 +150,7 @@ bool QgsGeometryChecker::fixError( QgsGeometryCheckError *error, int method, boo
const QMap<QgsFeatureId, QList<QgsGeometryCheck::Change>> &layerChanges = it.value();
QgsFeaturePool *featurePool = mFeaturePools[it.key()];
QgsCoordinateTransform t( featurePool->layer()->crs(), mContext->mapCrs, QgsProject::instance() );
t.setBallparkTransformsAreAppropriate( true );
for ( auto layerChangeIt = layerChanges.constBegin(); layerChangeIt != layerChanges.constEnd(); ++layerChangeIt )
{
bool removed = false;
Expand Down
6 changes: 4 additions & 2 deletions src/app/3d/qgs3dmapconfigwidget.cpp
Expand Up @@ -418,7 +418,8 @@ void Qgs3DMapConfigWidget::updateMaxZoomLevel()
if ( QgsRasterLayer *demLayer = qobject_cast<QgsRasterLayer *>( cboTerrainLayer->currentLayer() ) )
{
te = demLayer->extent();
const QgsCoordinateTransform terrainToMapTransform( demLayer->crs(), mMap->crs(), QgsProject::instance()->transformContext() );
QgsCoordinateTransform terrainToMapTransform( demLayer->crs(), mMap->crs(), QgsProject::instance()->transformContext() );
terrainToMapTransform.setBallparkTransformsAreAppropriate( true );
te = terrainToMapTransform.transformBoundingBox( te );
}
}
Expand All @@ -427,7 +428,8 @@ void Qgs3DMapConfigWidget::updateMaxZoomLevel()
if ( QgsMeshLayer *meshLayer = qobject_cast<QgsMeshLayer *>( cboTerrainLayer->currentLayer() ) )
{
te = meshLayer->extent();
const QgsCoordinateTransform terrainToMapTransform( meshLayer->crs(), mMap->crs(), QgsProject::instance()->transformContext() );
QgsCoordinateTransform terrainToMapTransform( meshLayer->crs(), mMap->crs(), QgsProject::instance()->transformContext() );
terrainToMapTransform.setBallparkTransformsAreAppropriate( true );
te = terrainToMapTransform.transformBoundingBox( te );
}
}
Expand Down
1 change: 1 addition & 0 deletions src/app/mesh/qgsmaptooleditmeshframe.cpp
Expand Up @@ -727,6 +727,7 @@ static QList<QgsMapToolIdentify::IdentifyResult> searchFeatureOnMap( QgsMapMouse
{
QgsRectangle rect( x - sr, y - sr, x + sr, y + sr );
QgsCoordinateTransform transform = canvas->mapSettings().layerTransform( vectorLayer );
transform.setBallparkTransformsAreAppropriate( true );

try
{
Expand Down
1 change: 1 addition & 0 deletions src/app/qgisapp.cpp
Expand Up @@ -7384,6 +7384,7 @@ void QgisApp::dxfExport()
if ( d.exportMapExtent() )
{
QgsCoordinateTransform t( lMapCanvas->mapSettings().destinationCrs(), d.crs(), QgsProject::instance() );
t.setBallparkTransformsAreAppropriate( true );
dxfExport.setExtent( t.transformBoundingBox( lMapCanvas->extent() ) );
}
}
Expand Down
1 change: 1 addition & 0 deletions src/app/qgsmaptoolselectionhandler.cpp
Expand Up @@ -265,6 +265,7 @@ void QgsMapToolSelectionHandler::selectPolygonPressEvent( QgsMapMouseEvent *e )
{
QgsRectangle rect( x - sr, y - sr, x + sr, y + sr );
QgsCoordinateTransform transform = mCanvas->mapSettings().layerTransform( vectorLayer );
transform.setBallparkTransformsAreAppropriate( true );

try
{
Expand Down
2 changes: 2 additions & 0 deletions src/app/qgsprojectproperties.cpp
Expand Up @@ -217,6 +217,7 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
// reproject extent
QgsCoordinateTransform ct( QgsProject::instance()->crs(),
QgsCoordinateReferenceSystem::fromEpsgId( 4326 ), QgsProject::instance() );
ct.setBallparkTransformsAreAppropriate( true );

g = g.densifyByCount( 5 );
try
Expand Down Expand Up @@ -2334,6 +2335,7 @@ void QgsProjectProperties::addWmtsGrid( const QString &crsStr )
// calculate top, left and scale based on CRS bounds
QgsCoordinateReferenceSystem crs = QgsCoordinateReferenceSystem::fromOgcWmsCrs( crsStr );
QgsCoordinateTransform crsTransform( QgsCoordinateReferenceSystem::fromOgcWmsCrs( geoEpsgCrsAuthId() ), crs, QgsProject::instance() );
crsTransform.setBallparkTransformsAreAppropriate( true );
try
{
// firstly transform CRS bounds expressed in WGS84 to CRS
Expand Down
4 changes: 3 additions & 1 deletion src/core/dxf/qgsdxfexport.cpp
Expand Up @@ -663,7 +663,9 @@ void QgsDxfExport::writeEntities()
const QgsCoordinateTransform ct( job->crs, mMapSettings.destinationCrs(), mMapSettings.transformContext() );

QgsFeatureRequest request = QgsFeatureRequest().setSubsetOfAttributes( job->attributes, job->fields ).setExpressionContext( job->renderContext.expressionContext() );
request.setFilterRect( ct.transformBoundingBox( mExtent, Qgis::TransformDirection::Reverse ) );
QgsCoordinateTransform extentTransform = ct;
extentTransform.setBallparkTransformsAreAppropriate( true );
request.setFilterRect( extentTransform.transformBoundingBox( mExtent, Qgis::TransformDirection::Reverse ) );

QgsFeatureIterator featureIt = job->featureSource.getFeatures( request );

Expand Down
6 changes: 5 additions & 1 deletion src/core/labeling/qgsvectorlayerlabelprovider.cpp
Expand Up @@ -149,7 +149,11 @@ QList<QgsLabelFeature *> QgsVectorLayerLabelProvider::labelFeatures( QgsRenderCo

QgsRectangle layerExtent = ctx.extent();
if ( mSettings.ct.isValid() && !mSettings.ct.isShortCircuited() )
layerExtent = mSettings.ct.transformBoundingBox( ctx.extent(), Qgis::TransformDirection::Reverse );
{
QgsCoordinateTransform extentTransform = mSettings.ct;
extentTransform.setBallparkTransformsAreAppropriate( true );
layerExtent = extentTransform.transformBoundingBox( ctx.extent(), Qgis::TransformDirection::Reverse );
}

QgsFeatureRequest request;
request.setFilterRect( layerExtent );
Expand Down
6 changes: 4 additions & 2 deletions src/core/layout/qgslayoutitemattributetable.cpp
Expand Up @@ -431,10 +431,12 @@ bool QgsLayoutItemAttributeTable::getTableContents( QgsLayoutTableContents &cont
visibleRegion = QgsGeometry::fromQPolygonF( mMap->visibleExtentPolygon() );
selectionRect = visibleRegion.boundingBox();
//transform back to layer CRS
QgsCoordinateTransform coordTransform( layer->crs(), mMap->crs(), mLayout->project() );
const QgsCoordinateTransform coordTransform( layer->crs(), mMap->crs(), mLayout->project() );
QgsCoordinateTransform extentTransform = coordTransform;
extentTransform.setBallparkTransformsAreAppropriate( true );
try
{
selectionRect = coordTransform.transformBoundingBox( selectionRect, Qgis::TransformDirection::Reverse );
selectionRect = extentTransform.transformBoundingBox( selectionRect, Qgis::TransformDirection::Reverse );
visibleRegion.transform( coordTransform, Qgis::TransformDirection::Reverse );
}
catch ( QgsCsException &cse )
Expand Down
8 changes: 5 additions & 3 deletions src/core/layout/qgslayoutitemmapgrid.cpp
Expand Up @@ -2588,6 +2588,8 @@ int QgsLayoutItemMapGrid::crsGridParams( QgsRectangle &crsRect, QgsCoordinateTra
try
{
const QgsCoordinateTransform tr( mMap->crs(), mCRS, mLayout->project() );
QgsCoordinateTransform extentTransform = tr;
extentTransform.setBallparkTransformsAreAppropriate( true );
const QPolygonF mapPolygon = mMap->transformedMapPolygon();
const QRectF mbr = mapPolygon.boundingRect();
const QgsRectangle mapBoundingRect( mbr.left(), mbr.bottom(), mbr.right(), mbr.top() );
Expand All @@ -2605,17 +2607,17 @@ int QgsLayoutItemMapGrid::crsGridParams( QgsRectangle &crsRect, QgsCoordinateTra
if ( lowerLeft.x() > upperRight.x() )
{
//we've crossed the line
crsRect = tr.transformBoundingBox( mapBoundingRect, Qgis::TransformDirection::Forward, true );
crsRect = extentTransform.transformBoundingBox( mapBoundingRect, Qgis::TransformDirection::Forward, true );
}
else
{
//didn't cross the line
crsRect = tr.transformBoundingBox( mapBoundingRect );
crsRect = extentTransform.transformBoundingBox( mapBoundingRect );
}
}
else
{
crsRect = tr.transformBoundingBox( mapBoundingRect );
crsRect = extentTransform.transformBoundingBox( mapBoundingRect );
}

inverseTransform = QgsCoordinateTransform( mCRS, mMap->crs(), mLayout->project() );
Expand Down
3 changes: 2 additions & 1 deletion src/core/maprenderer/qgsrendereditemresults.cpp
Expand Up @@ -133,7 +133,8 @@ QList<const QgsRenderedAnnotationItemDetails *> QgsRenderedItemResults::rendered

void QgsRenderedItemResults::appendResults( const QList<QgsRenderedItemDetails *> &results, const QgsRenderContext &context )
{
const QgsCoordinateTransform layerToMapTransform = context.coordinateTransform();
QgsCoordinateTransform layerToMapTransform = context.coordinateTransform();
layerToMapTransform.setBallparkTransformsAreAppropriate( true );
for ( QgsRenderedItemDetails *details : results )
{
try
Expand Down
17 changes: 13 additions & 4 deletions src/core/pointcloud/qgspointcloudlayerrenderer.cpp
Expand Up @@ -150,13 +150,22 @@ bool QgsPointCloudLayerRenderer::render()

const QgsRectangle rootNodeExtentLayerCoords = pc->nodeMapExtent( root );
QgsRectangle rootNodeExtentMapCoords;
try
if ( !context.renderContext().coordinateTransform().isShortCircuited() )
{
rootNodeExtentMapCoords = context.renderContext().coordinateTransform().transformBoundingBox( rootNodeExtentLayerCoords );
try
{
QgsCoordinateTransform extentTransform = context.renderContext().coordinateTransform();
extentTransform.setBallparkTransformsAreAppropriate( true );
rootNodeExtentMapCoords = extentTransform.transformBoundingBox( rootNodeExtentLayerCoords );
}
catch ( QgsCsException & )
{
QgsDebugMsg( QStringLiteral( "Could not transform node extent to map CRS" ) );
rootNodeExtentMapCoords = rootNodeExtentLayerCoords;
}
}
catch ( QgsCsException & )
else
{
QgsDebugMsg( QStringLiteral( "Could not transform node extent to map CRS" ) );
rootNodeExtentMapCoords = rootNodeExtentLayerCoords;
}

Expand Down
17 changes: 13 additions & 4 deletions src/core/pointcloud/qgspointcloudrenderer.cpp
Expand Up @@ -207,13 +207,22 @@ QVector<QVariantMap> QgsPointCloudRenderer::identify( QgsPointCloudLayer *layer,

const QgsRectangle rootNodeExtentLayerCoords = index->nodeMapExtent( root );
QgsRectangle rootNodeExtentMapCoords;
try
if ( !renderContext.coordinateTransform().isShortCircuited() )
{
rootNodeExtentMapCoords = renderContext.coordinateTransform().transformBoundingBox( rootNodeExtentLayerCoords );
try
{
QgsCoordinateTransform extentTransform = renderContext.coordinateTransform();
extentTransform.setBallparkTransformsAreAppropriate( true );
rootNodeExtentMapCoords = extentTransform.transformBoundingBox( rootNodeExtentLayerCoords );
}
catch ( QgsCsException & )
{
QgsDebugMsg( QStringLiteral( "Could not transform node extent to map CRS" ) );
rootNodeExtentMapCoords = rootNodeExtentLayerCoords;
}
}
catch ( QgsCsException & )
else
{
QgsDebugMsg( QStringLiteral( "Could not transform node extent to map CRS" ) );
rootNodeExtentMapCoords = rootNodeExtentLayerCoords;
}

Expand Down
9 changes: 6 additions & 3 deletions src/core/processing/qgsprocessingparameters.cpp
Expand Up @@ -1092,7 +1092,8 @@ QgsRectangle QgsProcessingParameters::parameterAsExtent( const QgsProcessingPara
const QgsReferencedRectangle rr = val.value<QgsReferencedRectangle>();
if ( crs.isValid() && rr.crs().isValid() && crs != rr.crs() )
{
const QgsCoordinateTransform ct( rr.crs(), crs, context.project() );
QgsCoordinateTransform ct( rr.crs(), crs, context.project() );
ct.setBallparkTransformsAreAppropriate( true );
try
{
return ct.transformBoundingBox( rr );
Expand Down Expand Up @@ -1153,7 +1154,8 @@ QgsRectangle QgsProcessingParameters::parameterAsExtent( const QgsProcessingPara
const QgsCoordinateReferenceSystem rectCrs( match.captured( 5 ) );
if ( crs.isValid() && rectCrs.isValid() && crs != rectCrs )
{
const QgsCoordinateTransform ct( rectCrs, crs, context.project() );
QgsCoordinateTransform ct( rectCrs, crs, context.project() );
ct.setBallparkTransformsAreAppropriate( true );
try
{
return ct.transformBoundingBox( rect );
Expand All @@ -1176,7 +1178,8 @@ QgsRectangle QgsProcessingParameters::parameterAsExtent( const QgsProcessingPara
const QgsRectangle rect = layer->extent();
if ( crs.isValid() && layer->crs().isValid() && crs != layer->crs() )
{
const QgsCoordinateTransform ct( layer->crs(), crs, context.project() );
QgsCoordinateTransform ct( layer->crs(), crs, context.project() );
ct.setBallparkTransformsAreAppropriate( true );
try
{
return ct.transformBoundingBox( rect );
Expand Down
1 change: 1 addition & 0 deletions src/core/processing/qgsprocessingutils.cpp
Expand Up @@ -958,6 +958,7 @@ QgsRectangle QgsProcessingUtils::combineLayerExtents( const QList<QgsMapLayer *>
{
//transform layer extent to target CRS
QgsCoordinateTransform ct( layer->crs(), crs, context.transformContext() );
ct.setBallparkTransformsAreAppropriate( true );
try
{
QgsRectangle reprojExtent = ct.transformBoundingBox( layer->extent() );
Expand Down
4 changes: 3 additions & 1 deletion src/core/qgsfeatureiterator.cpp
Expand Up @@ -125,7 +125,9 @@ QgsRectangle QgsAbstractFeatureIterator::filterRectToSourceCrs( const QgsCoordin
if ( mRequest.filterRect().isNull() )
return QgsRectangle();

return transform.transformBoundingBox( mRequest.filterRect(), Qgis::TransformDirection::Reverse );
QgsCoordinateTransform extentTransform = transform;
extentTransform.setBallparkTransformsAreAppropriate( true );
return extentTransform.transformBoundingBox( mRequest.filterRect(), Qgis::TransformDirection::Reverse );
}

void QgsAbstractFeatureIterator::ref()
Expand Down
3 changes: 2 additions & 1 deletion src/core/qgsmaplayer.cpp
Expand Up @@ -2250,7 +2250,8 @@ QgsRectangle QgsMapLayer::wgs84Extent( bool forceRecalculate ) const
}
else if ( ! mExtent.isNull() )
{
const QgsCoordinateTransform transformer { crs(), QgsCoordinateReferenceSystem::fromOgcWmsCrs( geoEpsgCrsAuthId() ), transformContext() };
QgsCoordinateTransform transformer { crs(), QgsCoordinateReferenceSystem::fromOgcWmsCrs( geoEpsgCrsAuthId() ), transformContext() };
transformer.setBallparkTransformsAreAppropriate( true );
try
{
wgs84Extent = transformer.transformBoundingBox( mExtent );
Expand Down
6 changes: 4 additions & 2 deletions src/core/qgspointlocator.cpp
Expand Up @@ -1022,11 +1022,13 @@ bool QgsPointLocator::rebuildIndex( int maxFeaturesToIndex )
if ( mExtent )
{
QgsRectangle rect = *mExtent;
if ( mTransform.isValid() )
if ( !mTransform.isShortCircuited() )
{
QgsCoordinateTransform rectTransform = mTransform;
rectTransform.setBallparkTransformsAreAppropriate( true );
try
{
rect = mTransform.transformBoundingBox( rect, Qgis::TransformDirection::Reverse );
rect = rectTransform.transformBoundingBox( rect, Qgis::TransformDirection::Reverse );
}
catch ( const QgsException &e )
{
Expand Down
4 changes: 3 additions & 1 deletion src/core/qgsvectorfilewriter.cpp
Expand Up @@ -3093,7 +3093,9 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::prepareWriteAsVectorFormat
try
{
// map filter rect back from destination CRS to layer CRS
filterRect = options.ct.transformBoundingBox( filterRect, Qgis::TransformDirection::Reverse );
QgsCoordinateTransform extentTransform = options.ct;
extentTransform.setBallparkTransformsAreAppropriate( true );
filterRect = extentTransform.transformBoundingBox( filterRect, Qgis::TransformDirection::Reverse );
}
catch ( QgsCsException & )
{
Expand Down
3 changes: 2 additions & 1 deletion src/core/raster/qgsrasterfilewriter.cpp
Expand Up @@ -257,7 +257,8 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeDataRaster( const Qgs
QgsRasterProjector *projector = pipe->projector();
if ( projector && projector->destinationCrs() != projector->sourceCrs() )
{
const QgsCoordinateTransform ct( projector->destinationCrs(), projector->sourceCrs(), transformContext );
QgsCoordinateTransform ct( projector->destinationCrs(), projector->sourceCrs(), transformContext );
ct.setBallparkTransformsAreAppropriate( true );
outputExtentInSrcCrs = ct.transformBoundingBox( outputExtent );
}
if ( !srcProviderExtent.contains( outputExtentInSrcCrs ) &&
Expand Down
7 changes: 5 additions & 2 deletions src/core/raster/qgsrasterprojector.cpp
Expand Up @@ -914,7 +914,10 @@ bool QgsRasterProjector::extentSize( const QgsCoordinateTransform &ct,
return false;
}

destExtent = ct.transformBoundingBox( srcExtent );
QgsCoordinateTransform extentTransform = ct;
extentTransform.setBallparkTransformsAreAppropriate( true );

destExtent = extentTransform.transformBoundingBox( srcExtent );

// We reproject pixel rectangle from 9 points matrix of source extent, of course, it gives
// bigger xRes,yRes than reprojected edges (envelope)
Expand All @@ -934,7 +937,7 @@ bool QgsRasterProjector::extentSize( const QgsCoordinateTransform &ct,
const QgsRectangle srcRectangle( x - srcXRes / 2, y - srcYRes / 2, x + srcXRes / 2, y + srcYRes / 2 );
try
{
const QgsRectangle destRectangle = ct.transformBoundingBox( srcRectangle );
const QgsRectangle destRectangle = extentTransform.transformBoundingBox( srcRectangle );
if ( destRectangle.width() > 0 )
{
destXRes = std::min( destXRes, destRectangle.width() );
Expand Down

0 comments on commit 9bf2356

Please sign in to comment.