Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Flag a few more transforms as being appropriate for ballpark results
  • Loading branch information
nyalldawson committed Jan 24, 2022
1 parent 382ea72 commit ce07d11
Show file tree
Hide file tree
Showing 8 changed files with 22 additions and 10 deletions.
6 changes: 4 additions & 2 deletions src/3d/qgspointcloudlayerchunkloader_p.cpp
Expand Up @@ -204,10 +204,12 @@ QgsAABB nodeBoundsToAABB( QgsPointCloudDataBounds nodeBounds, QgsVector3D offset
{
QgsVector3D extentMin3D( nodeBounds.xMin() * scale.x() + offset.x(), nodeBounds.yMin() * scale.y() + offset.y(), nodeBounds.zMin() * scale.z() + offset.z() + zValueOffset );
QgsVector3D extentMax3D( nodeBounds.xMax() * scale.x() + offset.x(), nodeBounds.yMax() * scale.y() + offset.y(), nodeBounds.zMax() * scale.z() + offset.z() + zValueOffset );
QgsCoordinateTransform extentTransform = coordinateTransform;
extentTransform.setBallparkTransformsAreAppropriate( true );
try
{
extentMin3D = coordinateTransform.transform( extentMin3D );
extentMax3D = coordinateTransform.transform( extentMax3D );
extentMin3D = extentTransform.transform( extentMin3D );
extentMax3D = extentTransform.transform( extentMax3D );
}
catch ( QgsCsException & )
{
Expand Down
3 changes: 2 additions & 1 deletion src/3d/terrain/qgsterraindownloader.cpp
Expand Up @@ -28,7 +28,8 @@ QgsTerrainDownloader::QgsTerrainDownloader( const QgsCoordinateTransformContext
// the whole world is projected to a square:
// X going from 180 W to 180 E
// Y going from ~85 N to ~85 S (=atan(sinh(pi)) ... to get a square)
const QgsCoordinateTransform ct( QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:4326" ) ), QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:3857" ) ), transformContext );
QgsCoordinateTransform ct( QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:4326" ) ), QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:3857" ) ), transformContext );
ct.setBallparkTransformsAreAppropriate( true );
const QgsPointXY topLeftLonLat( -180, 180.0 / M_PI * std::atan( std::sinh( M_PI ) ) );
const QgsPointXY bottomRightLonLat( 180, 180.0 / M_PI * std::atan( std::sinh( -M_PI ) ) );
const QgsPointXY topLeft = ct.transform( topLeftLonLat );
Expand Down
5 changes: 3 additions & 2 deletions src/app/qgsmapcanvasdockwidget.cpp
Expand Up @@ -351,8 +351,9 @@ void QgsMapCanvasDockWidget::syncViewCenter( QgsMapCanvas *sourceCanvas )
QgsMapCanvas *destCanvas = sourceCanvas == mMapCanvas ? mMainCanvas : mMapCanvas;

// reproject extent
const QgsCoordinateTransform ct( sourceCanvas->mapSettings().destinationCrs(),
destCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
QgsCoordinateTransform ct( sourceCanvas->mapSettings().destinationCrs(),
destCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
ct.setBallparkTransformsAreAppropriate( true );
try
{
destCanvas->setCenter( ct.transform( sourceCanvas->center() ) );
Expand Down
4 changes: 3 additions & 1 deletion src/core/mesh/qgsmeshtracerenderer.cpp
Expand Up @@ -273,7 +273,9 @@ void QgsMeshStreamField::updateSize( const QgsRenderContext &renderContext )
QgsRectangle layerExtent;
try
{
layerExtent = renderContext.coordinateTransform().transform( mLayerExtent );
QgsCoordinateTransform extentTransform = renderContext.coordinateTransform();
extentTransform.setBallparkTransformsAreAppropriate( true );
layerExtent = extentTransform.transformBoundingBox( mLayerExtent );
}
catch ( QgsCsException &cse )
{
Expand Down
6 changes: 4 additions & 2 deletions src/core/mesh/qgstriangularmesh.cpp
Expand Up @@ -287,11 +287,13 @@ QgsMeshVertex QgsTriangularMesh::triangularToNativeCoordinates( const QgsMeshVer
QgsRectangle QgsTriangularMesh::nativeExtent()
{
QgsRectangle nativeExtent;
if ( mCoordinateTransform.isValid() )
if ( !mCoordinateTransform.isShortCircuited() )
{
try
{
nativeExtent = mCoordinateTransform.transform( extent(), Qgis::TransformDirection::Reverse );
QgsCoordinateTransform extentTransform = mCoordinateTransform;
extentTransform.setBallparkTransformsAreAppropriate( true );
nativeExtent = extentTransform.transformBoundingBox( extent(), Qgis::TransformDirection::Reverse );
}
catch ( QgsCsException &cse )
{
Expand Down
1 change: 1 addition & 0 deletions src/core/vectortile/qgsvectortilewriter.cpp
Expand Up @@ -150,6 +150,7 @@ bool QgsVectorTileWriter::writeTiles( QgsFeedback *feedback )
try
{
QgsCoordinateTransform ct( mRootTileMatrix.crs(), QgsCoordinateReferenceSystem( "EPSG:4326" ), mTransformContext );
ct.setBallparkTransformsAreAppropriate( true );
QgsRectangle wgsExtent = ct.transform( outputExtent );
QString boundsStr = QString( "%1,%2,%3,%4" )
.arg( wgsExtent.xMinimum() ).arg( wgsExtent.yMinimum() )
Expand Down
3 changes: 2 additions & 1 deletion src/gui/qgsmapcanvas.cpp
Expand Up @@ -1314,7 +1314,8 @@ bool QgsMapCanvas::setReferencedExtent( const QgsReferencedRectangle &extent )
if ( extent.crs() != mapSettings().destinationCrs() )
{
QgsCoordinateTransform ct( extent.crs(), mapSettings().destinationCrs(), QgsProject::instance() );
canvasExtent = ct.transform( extent );
ct.setBallparkTransformsAreAppropriate( true );
canvasExtent = ct.transformBoundingBox( extent );

if ( canvasExtent.isEmpty() )
{
Expand Down
4 changes: 3 additions & 1 deletion src/providers/arcgisrest/qgsarcgisrestsourceselect.cpp
Expand Up @@ -314,7 +314,9 @@ void QgsArcGisRestSourceSelect::addButtonClicked()
{
try
{
extent = QgsCoordinateTransform( canvasCrs, pCrs, QgsProject::instance()->transformContext() ).transform( extent );
QgsCoordinateTransform extentTransform = QgsCoordinateTransform( canvasCrs, pCrs, QgsProject::instance()->transformContext() );
extentTransform.setBallparkTransformsAreAppropriate( true );
extent = extentTransform.transformBoundingBox( extent );
QgsDebugMsgLevel( QStringLiteral( "canvas transform: Canvas CRS=%1, Provider CRS=%2, BBOX=%3" )
.arg( canvasCrs.authid(), pCrs.authid(), extent.asWktCoordinates() ), 3 );
}
Expand Down

0 comments on commit ce07d11

Please sign in to comment.