Remove context-unaware QgsCoordinateTransform constructors from Python bindings

This forces Python code and plugins to become datum transform
aware, and given that upgrading python code is easy (just
add QgsProject.instance() as a new argument to the constructor)
it's relatively painless to force this on PyQGIS users.

Also fix upgrade the easy QgsCoordinateTransform c++ constructors
where the project is available, or where using QgsProject::instance()
is safe to do.

For others, just avoid the deprecated warnings until we can
get access to the correct project instance where the transform
is being constructed.
This commit is contained in:
Nyall Dawson 2017-11-05 21:32:50 +10:00
parent 91e0afb613
commit 86d9492372
80 changed files with 208 additions and 88 deletions

View File

@ -914,11 +914,12 @@ called if changes are made to the CRS database.
QgsCoordinateTransform {#qgis_api_break_3_0_QgsCoordinateTransform}
----------------------
- QgsCoordinateTransform is no longer a QObject. readXml, writeXml and initialize are all normal public members now,
- QgsCoordinateTransform is no longer a QObject. Initialize is a normal public members now,
not slots. The invalidTransformInput() signal has been removed.
- The extra QgsCoordinateTransform constructors (those not taking QgsCoordinateReferenceSystem arguments) have been
removed. Now, QgsCoordinateTransform must be created using an already existing source and destination
QgsCoordinateReferenceSystem object.
QgsCoordinateReferenceSystem object, and either a QgsCoordinateTransformContext object or a reference to the
current project instance.
- QgsCoordinateTransform::clone() has been removed. Just use direct copies instead.
- sourceCrs() and destCrs() now return a copy instead of a reference to the CRS. This has no effect on PyQGIS code, but c++
plugins calling these methods will need to be updated.

View File

@ -45,13 +45,6 @@ class QgsCoordinateTransform
Default constructor, creates an invalid QgsCoordinateTransform.
%End
explicit QgsCoordinateTransform( const QgsCoordinateReferenceSystem &source,
const QgsCoordinateReferenceSystem &destination );
%Docstring
Constructs a QgsCoordinateTransform using QgsCoordinateReferenceSystem objects.
\param source source CRS, typically of the layer's coordinate system
\param destination CRS, typically of the map canvas coordinate system
%End
explicit QgsCoordinateTransform( const QgsCoordinateReferenceSystem &source,
const QgsCoordinateReferenceSystem &destination,

View File

@ -39,7 +39,7 @@ from qgis.PyQt.QtGui import QColor, QCursor
from qgis.core import (QgsApplication, QgsCoordinateReferenceSystem,
QgsCoordinateTransform, QgsGeometry, QgsPointXY,
QgsProviderRegistry, QgsSettings)
QgsProviderRegistry, QgsSettings, QgsProject)
from qgis.gui import QgsRubberBand
from qgis.utils import OverrideCursor
@ -400,7 +400,7 @@ class MetaSearchDialog(QDialog, BASE_CLASS):
if crsid != 4326: # reproject to EPSG:4326
src = QgsCoordinateReferenceSystem(crsid)
dest = QgsCoordinateReferenceSystem(4326)
xform = QgsCoordinateTransform(src, dest)
xform = QgsCoordinateTransform(src, dest, QgsProject.instance())
minxy = xform.transform(QgsPointXY(extent.xMinimum(),
extent.yMinimum()))
maxxy = xform.transform(QgsPointXY(extent.xMaximum(),
@ -570,7 +570,7 @@ class MetaSearchDialog(QDialog, BASE_CLASS):
dst = self.map.mapSettings().destinationCrs()
geom = QgsGeometry.fromWkt(points)
if src.postgisSrid() != dst.postgisSrid():
ctr = QgsCoordinateTransform(src, dst)
ctr = QgsCoordinateTransform(src, dst, QgsProject.instance())
try:
geom.transform(ctr)
except Exception as err:

View File

@ -126,7 +126,7 @@ class ExportGeometryInfo(QgisAlgorithm):
self.distance_area.setSourceCrs(source.sourceCrs())
self.distance_area.setEllipsoid(context.project().ellipsoid())
elif method == 1:
coordTransform = QgsCoordinateTransform(source.sourceCrs(), context.project().crs())
coordTransform = QgsCoordinateTransform(source.sourceCrs(), context.project().crs(), context.project())
features = source.getFeatures()
total = 100.0 / source.featureCount() if source.featureCount() else 0

View File

@ -34,6 +34,7 @@ from qgis.core import (QgsGeometry,
QgsFields,
QgsCoordinateReferenceSystem,
QgsCoordinateTransform,
QgsCoordinateTransformContext,
QgsWkbTypes,
QgsProcessingParameterFeatureSource,
QgsProcessingParameterExtent,
@ -108,6 +109,7 @@ class FindProjection(QgisAlgorithm):
found_results = 0
transform_context = QgsCoordinateTransformContext()
for current, srs_id in enumerate(crses_to_check):
if feedback.isCanceled():
break
@ -116,7 +118,7 @@ class FindProjection(QgisAlgorithm):
if not candidate_crs.isValid():
continue
transform_candidate = QgsCoordinateTransform(candidate_crs, target_crs)
transform_candidate = QgsCoordinateTransform(candidate_crs, target_crs, transform_context)
transformed_bounds = QgsGeometry(layer_bounds)
try:
if not transformed_bounds.transform(transform_candidate) == 0:

View File

@ -262,7 +262,7 @@ class SpatialJoinSummary(QgisAlgorithm):
total = 100.0 / source.featureCount() if source.featureCount() else 0
# bounding box transform
bbox_transform = QgsCoordinateTransform(source.sourceCrs(), join_source.sourceCrs())
bbox_transform = QgsCoordinateTransform(source.sourceCrs(), join_source.sourceCrs(), context.project())
for current, f in enumerate(features):
if feedback.isCanceled():

View File

@ -75,6 +75,7 @@ QgsTransformAlgorithm *QgsTransformAlgorithm::createInstance() const
bool QgsTransformAlgorithm::prepareAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback * )
{
mDestCrs = parameterAsCrs( parameters, QStringLiteral( "TARGET_CRS" ), context );
mTransformContext = context.project() ? context.project()->transformContext() : QgsCoordinateTransformContext();
return true;
}
@ -84,7 +85,7 @@ QgsFeature QgsTransformAlgorithm::processFeature( const QgsFeature &f, QgsProces
if ( !mCreatedTransform )
{
mCreatedTransform = true;
mTransform = QgsCoordinateTransform( sourceCrs(), mDestCrs );
mTransform = QgsCoordinateTransform( sourceCrs(), mDestCrs, mTransformContext );
}
if ( feature.hasGeometry() )

View File

@ -56,6 +56,7 @@ class QgsTransformAlgorithm : public QgsProcessingFeatureBasedAlgorithm
bool mCreatedTransform = false;
QgsCoordinateReferenceSystem mDestCrs;
QgsCoordinateTransform mTransform;
QgsCoordinateTransformContext mTransformContext;
};

View File

@ -314,7 +314,7 @@ void QgsComposerMapWidget::mapCrsChanged( const QgsCoordinateReferenceSystem &cr
QgsRectangle newExtent;
try
{
QgsCoordinateTransform xForm( oldCrs, crs.isValid() ? crs : QgsProject::instance()->crs() );
QgsCoordinateTransform xForm( oldCrs, crs.isValid() ? crs : QgsProject::instance()->crs(), QgsProject::instance() );
QgsRectangle prevExtent = *mComposerMap->currentMapExtent();
newExtent = xForm.transformBoundingBox( prevExtent );
updateExtent = true;
@ -513,7 +513,7 @@ void QgsComposerMapWidget::mSetToMapCanvasExtentButton_clicked()
try
{
QgsCoordinateTransform xForm( QgisApp::instance()->mapCanvas()->mapSettings().destinationCrs(),
mComposerMap->crs() );
mComposerMap->crs(), QgsProject::instance() );
newExtent = xForm.transformBoundingBox( newExtent );
}
catch ( QgsCsException & )
@ -546,7 +546,7 @@ void QgsComposerMapWidget::mViewExtentInCanvasButton_clicked()
try
{
QgsCoordinateTransform xForm( mComposerMap->crs(),
QgisApp::instance()->mapCanvas()->mapSettings().destinationCrs() );
QgisApp::instance()->mapCanvas()->mapSettings().destinationCrs(), QgsProject::instance() );
currentMapExtent = xForm.transformBoundingBox( currentMapExtent );
}
catch ( QgsCsException & )

View File

@ -684,7 +684,7 @@ void QgsGPSInformationWidget::displayGPSInformation( const QgsGPSInformation &in
if ( radRecenterMap->isChecked() || radRecenterWhenNeeded->isChecked() )
{
QgsCoordinateReferenceSystem mypSRS = mpCanvas->mapSettings().destinationCrs();
QgsCoordinateTransform myTransform( mWgs84CRS, mypSRS ); // use existing WGS84 CRS
QgsCoordinateTransform myTransform( mWgs84CRS, mypSRS, QgsProject::instance() ); // use existing WGS84 CRS
QgsPointXY myPoint = myTransform.transform( myNewCenter );
//keep the extent the same just center the map canvas in the display so our feature is in the middle
@ -758,7 +758,7 @@ void QgsGPSInformationWidget::addVertex()
QgsPointXY myPoint;
if ( mpCanvas )
{
QgsCoordinateTransform t( mWgs84CRS, mpCanvas->mapSettings().destinationCrs() );
QgsCoordinateTransform t( mWgs84CRS, mpCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
myPoint = t.transform( mLastGpsPosition );
}
else
@ -809,7 +809,7 @@ void QgsGPSInformationWidget::mBtnCloseFeature_clicked()
{
QgsFeature *f = new QgsFeature( 0 );
QgsCoordinateTransform t( mWgs84CRS, vlayer->crs() );
QgsCoordinateTransform t( mWgs84CRS, vlayer->crs(), QgsProject::instance() );
QgsPointXY myPoint = t.transform( mLastGpsPosition );
double x = myPoint.x();
double y = myPoint.y();
@ -864,7 +864,7 @@ void QgsGPSInformationWidget::mBtnCloseFeature_clicked()
{
QgsPointXY savePoint = *it;
// transform the gps point into the layer crs
QgsCoordinateTransform t( mWgs84CRS, vlayer->crs() );
QgsCoordinateTransform t( mWgs84CRS, vlayer->crs(), QgsProject::instance() );
QgsPointXY myPoint = t.transform( savePoint );
wkbPtr << myPoint.x() << myPoint.y();
@ -887,7 +887,7 @@ void QgsGPSInformationWidget::mBtnCloseFeature_clicked()
{
QgsPointXY savePoint = *it;
// transform the gps point into the layer crs
QgsCoordinateTransform t( mWgs84CRS, vlayer->crs() );
QgsCoordinateTransform t( mWgs84CRS, vlayer->crs(), QgsProject::instance() );
QgsPointXY myPoint = t.transform( savePoint );
wkbPtr << myPoint.x() << myPoint.y();
}

View File

@ -19,6 +19,7 @@
#include "qgscoordinatetransform.h"
#include "qgsmapcanvas.h"
#include "qgsexception.h"
#include "qgsproject.h"
QgsGpsMarker::QgsGpsMarker( QgsMapCanvas *mapCanvas )
: QgsMapCanvasItem( mapCanvas )
@ -42,7 +43,7 @@ void QgsGpsMarker::setCenter( const QgsPointXY &point )
//transform to map crs
if ( mMapCanvas )
{
QgsCoordinateTransform t( mWgs84CRS, mMapCanvas->mapSettings().destinationCrs() );
QgsCoordinateTransform t( mWgs84CRS, mMapCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
try
{
mCenter = t.transform( point );

View File

@ -22,6 +22,7 @@
#include "qgsvertexentry.h"
#include "qgsvectorlayer.h"
#include "qgsgeometryutils.h"
#include "qgsproject.h"
#include <QTableWidget>
#include <QHeaderView>
@ -366,7 +367,7 @@ void QgsNodeEditor::zoomToNode( int idx )
double y = mSelectedFeature->vertexMap().at( idx )->point().y();
QgsPointXY newCenter( x, y );
QgsCoordinateTransform t( mLayer->crs(), mCanvas->mapSettings().destinationCrs() );
QgsCoordinateTransform t( mLayer->crs(), mCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
QgsPointXY tCenter = t.transform( newCenter );
QPolygonF ext = mCanvas->mapSettings().visiblePolygon();

View File

@ -5759,7 +5759,7 @@ void QgisApp::dxfExport()
//extent
if ( d.exportMapExtent() )
{
QgsCoordinateTransform t( mapCanvas()->mapSettings().destinationCrs(), d.crs() );
QgsCoordinateTransform t( mapCanvas()->mapSettings().destinationCrs(), d.crs(), QgsProject::instance() );
dxfExport.setExtent( t.transformBoundingBox( mapCanvas()->extent() ) );
}
}
@ -7019,7 +7019,7 @@ void QgisApp::saveAsVectorFileGeneral( QgsVectorLayer *vlayer, bool symbologyOpt
if ( destCRS.isValid() && destCRS != vlayer->crs() )
{
ct = QgsCoordinateTransform( vlayer->crs(), destCRS );
ct = QgsCoordinateTransform( vlayer->crs(), destCRS, QgsProject::instance() );
//ask user about datum transformation
QgsSettings settings;
@ -9493,7 +9493,7 @@ void QgisApp::legendLayerZoomNative()
QSize s = mMapCanvas->mapSettings().outputSize();
QgsPointXY p1( e.center().x(), e.center().y() );
QgsPointXY p2( e.center().x() + e.width() / s.width(), e.center().y() + e.height() / s.height() );
QgsCoordinateTransform ct( mMapCanvas->mapSettings().destinationCrs(), layer->crs() );
QgsCoordinateTransform ct( mMapCanvas->mapSettings().destinationCrs(), layer->crs(), QgsProject::instance() );
p1 = ct.transform( p1 );
p2 = ct.transform( p2 );
double width = std::sqrt( p1.sqrDist( p2 ) ); // width (actually the diagonal) of reprojected pixel

View File

@ -253,7 +253,7 @@ void QgsBookmarks::zoomToBookmark()
authid != QgisApp::instance()->mapCanvas()->mapSettings().destinationCrs().authid() )
{
QgsCoordinateTransform ct( QgsCoordinateReferenceSystem::fromOgcWmsCrs( authid ),
QgisApp::instance()->mapCanvas()->mapSettings().destinationCrs() );
QgisApp::instance()->mapCanvas()->mapSettings().destinationCrs(), QgsProject::instance() );
rect = ct.transform( rect );
if ( rect.isEmpty() )
{

View File

@ -38,6 +38,7 @@
#include "qgssettings.h"
#include "qgisapp.h"
#include "qgsmapcanvas.h"
#include "qgsproject.h"
QgsClipboard::QgsClipboard()
{
@ -277,7 +278,7 @@ QgsFeatureList QgsClipboard::transformedCopyOf( const QgsCoordinateReferenceSyst
}
else
{
ct = QgsCoordinateTransform( crs(), destCRS );
ct = QgsCoordinateTransform( crs(), destCRS, QgsProject::instance() );
}
QgsDebugMsg( "transforming clipboard." );

View File

@ -139,7 +139,7 @@ void QgsDecorationLayoutExtent::render( const QgsMapSettings &mapSettings, QgsRe
{
// reproject extent
QgsCoordinateTransform ct( map->crs(),
mapSettings.destinationCrs() );
mapSettings.destinationCrs(), QgsProject::instance() );
g = g.densifyByCount( 20 );
try
{

View File

@ -322,7 +322,7 @@ void QgsMapCanvasDockWidget::syncViewCenter( QgsMapCanvas *sourceCanvas )
// reproject extent
QgsCoordinateTransform ct( sourceCanvas->mapSettings().destinationCrs(),
destCanvas->mapSettings().destinationCrs() );
destCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
try
{
destCanvas->setCenter( ct.transform( sourceCanvas->center() ) );
@ -412,7 +412,7 @@ void QgsMapCanvasDockWidget::syncMarker( const QgsPointXY &p )
// reproject point
QgsCoordinateTransform ct( mMainCanvas->mapSettings().destinationCrs(),
mMapCanvas->mapSettings().destinationCrs() );
mMapCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
QgsPointXY t = p;
try
{
@ -450,7 +450,7 @@ void QgsMapCanvasDockWidget::updateExtentRect()
{
// reproject extent
QgsCoordinateTransform ct( mMainCanvas->mapSettings().destinationCrs(),
mMapCanvas->mapSettings().destinationCrs() );
mMapCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
g = g.densifyByCount( 5 );
try
{

View File

@ -359,7 +359,7 @@ QgsPointXY QgsMapToolAnnotation::transformCanvasToAnnotation( QgsPointXY p, QgsA
{
if ( annotation->mapPositionCrs() != mCanvas->mapSettings().destinationCrs() )
{
QgsCoordinateTransform transform( mCanvas->mapSettings().destinationCrs(), annotation->mapPositionCrs() );
QgsCoordinateTransform transform( mCanvas->mapSettings().destinationCrs(), annotation->mapPositionCrs(), QgsProject::instance() );
try
{
p = transform.transform( p );

View File

@ -28,6 +28,7 @@ email : jpalmer at linz dot govt dot nz
#include "qgsexception.h"
#include "qgslogger.h"
#include "qgis.h"
#include "qgsproject.h"
#include <QMouseEvent>
#include <QApplication>
@ -176,7 +177,7 @@ QgsFeatureIds QgsMapToolSelectUtils::getMatchingFeatures( QgsMapCanvas *canvas,
try
{
QgsCoordinateTransform ct( canvas->mapSettings().destinationCrs(), vlayer->crs() );
QgsCoordinateTransform ct( canvas->mapSettings().destinationCrs(), vlayer->crs(), QgsProject::instance() );
if ( !ct.isShortCircuited() && selectGeomTrans.type() == QgsWkbTypes::PolygonGeometry )
{

View File

@ -199,7 +199,7 @@ bool QgsMapToolShowHideLabels::selectedFeatures( QgsVectorLayer *vlayer,
try
{
QgsCoordinateTransform ct( mCanvas->mapSettings().destinationCrs(), vlayer->crs() );
QgsCoordinateTransform ct( mCanvas->mapSettings().destinationCrs(), vlayer->crs(), QgsProject::instance() );
selectGeomTrans.transform( ct );
}
catch ( QgsCsException &cse )

View File

@ -26,6 +26,7 @@
#include "qgsmeasuretool.h"
#include "qgsmessagelog.h"
#include "qgssettings.h"
#include "qgsproject.h"
#include <QMessageBox>
#include <QMouseEvent>
@ -133,7 +134,7 @@ void QgsMeasureTool::updateSettings()
mDialog->restart();
mDone = lastDone;
QgsCoordinateTransform ct( mDestinationCrs, mCanvas->mapSettings().destinationCrs() );
QgsCoordinateTransform ct( mDestinationCrs, mCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
Q_FOREACH ( const QgsPointXY &previousPoint, points )
{

View File

@ -163,7 +163,7 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
{
// reproject extent
QgsCoordinateTransform ct( QgsProject::instance()->crs(),
QgsCoordinateReferenceSystem::fromEpsgId( 4326 ) );
QgsCoordinateReferenceSystem::fromEpsgId( 4326 ), QgsProject::instance() );
g = g.densifyByCount( 5 );
try

View File

@ -413,7 +413,7 @@ bool QgsComposerAttributeTableV2::getTableContents( QgsComposerTableContents &co
if ( layer )
{
//transform back to layer CRS
QgsCoordinateTransform coordTransform( layer->crs(), mComposerMap->crs() );
QgsCoordinateTransform coordTransform( layer->crs(), mComposerMap->crs(), mComposition->project() );
try
{
selectionRect = coordTransform.transformBoundingBox( selectionRect, QgsCoordinateTransform::ReverseTransform );

View File

@ -1890,7 +1890,7 @@ QPointF QgsComposerMap::composerMapPosForItem( const QgsAnnotation *annotation )
if ( annotationCrs != crs() )
{
//need to reproject
QgsCoordinateTransform t( annotationCrs, crs() );
QgsCoordinateTransform t( annotationCrs, crs(), mComposition->project() );
double z = 0.0;
t.transformInPlace( mapX, mapY, z );
}

View File

@ -2349,7 +2349,7 @@ int QgsComposerMapGrid::crsGridParams( QgsRectangle &crsRect, QgsCoordinateTrans
try
{
QgsCoordinateTransform tr( mComposerMap->crs(), mCRS );
QgsCoordinateTransform tr( mComposerMap->crs(), mCRS, mComposerMap->composition()->project() );
QPolygonF mapPolygon = mComposerMap->transformedMapPolygon();
QRectF mbr = mapPolygon.boundingRect();
QgsRectangle mapBoundingRect( mbr.left(), mbr.bottom(), mbr.right(), mbr.top() );

View File

@ -82,7 +82,7 @@ void QgsComposerMapOverview::draw( QPainter *painter )
// reproject extent
QgsCoordinateTransform ct( overviewFrameMap->crs(),
mComposerMap->crs() );
mComposerMap->crs(), mComposition->project() );
g = g.densifyByCount( 20 );
try
{

View File

@ -3369,7 +3369,9 @@ static QVariant fcnTransformGeometry( const QVariantList &values, const QgsExpre
if ( ! d.isValid() )
return QVariant::fromValue( fGeom );
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform t( s, d );
Q_NOWARN_DEPRECATED_POP
try
{
if ( fGeom.transform( t ) == 0 )

View File

@ -504,7 +504,7 @@ QgsRectangle QgsProcessingParameters::parameterAsExtent( const QgsProcessingPara
QgsReferencedRectangle rr = val.value<QgsReferencedRectangle>();
if ( crs.isValid() && rr.crs().isValid() && crs != rr.crs() )
{
QgsCoordinateTransform ct( rr.crs(), crs );
QgsCoordinateTransform ct( rr.crs(), crs, context.project() );
try
{
return ct.transformBoundingBox( rr );
@ -544,7 +544,7 @@ QgsRectangle QgsProcessingParameters::parameterAsExtent( const QgsProcessingPara
QgsCoordinateReferenceSystem rectCrs( match.captured( 5 ) );
if ( crs.isValid() && rectCrs.isValid() && crs != rectCrs )
{
QgsCoordinateTransform ct( rectCrs, crs );
QgsCoordinateTransform ct( rectCrs, crs, context.project() );
try
{
return ct.transformBoundingBox( rect );
@ -564,7 +564,7 @@ QgsRectangle QgsProcessingParameters::parameterAsExtent( const QgsProcessingPara
QgsRectangle rect = layer->extent();
if ( crs.isValid() && layer->crs().isValid() && crs != layer->crs() )
{
QgsCoordinateTransform ct( layer->crs(), crs );
QgsCoordinateTransform ct( layer->crs(), crs, context.project() );
try
{
return ct.transformBoundingBox( rect );
@ -593,7 +593,7 @@ QgsGeometry QgsProcessingParameters::parameterAsExtentGeometry( const QgsProcess
if ( crs.isValid() && rr.crs().isValid() && crs != rr.crs() )
{
g = g.densifyByCount( 20 );
QgsCoordinateTransform ct( rr.crs(), crs );
QgsCoordinateTransform ct( rr.crs(), crs, context.project() );
try
{
g.transform( ct );
@ -634,7 +634,7 @@ QgsGeometry QgsProcessingParameters::parameterAsExtentGeometry( const QgsProcess
if ( crs.isValid() && rectCrs.isValid() && crs != rectCrs )
{
g = g.densifyByCount( 20 );
QgsCoordinateTransform ct( rectCrs, crs );
QgsCoordinateTransform ct( rectCrs, crs, context.project() );
try
{
g.transform( ct );
@ -657,7 +657,7 @@ QgsGeometry QgsProcessingParameters::parameterAsExtentGeometry( const QgsProcess
if ( crs.isValid() && layer->crs().isValid() && crs != layer->crs() )
{
g = g.densifyByCount( 20 );
QgsCoordinateTransform ct( layer->crs(), crs );
QgsCoordinateTransform ct( layer->crs(), crs, context.project() );
try
{
g.transform( ct );
@ -724,7 +724,7 @@ QgsPointXY QgsProcessingParameters::parameterAsPoint( const QgsProcessingParamet
QgsReferencedPointXY rp = val.value<QgsReferencedPointXY>();
if ( crs.isValid() && rp.crs().isValid() && crs != rp.crs() )
{
QgsCoordinateTransform ct( rp.crs(), crs );
QgsCoordinateTransform ct( rp.crs(), crs, context.project() );
try
{
return ct.transform( rp );
@ -762,7 +762,7 @@ QgsPointXY QgsProcessingParameters::parameterAsPoint( const QgsProcessingParamet
QgsCoordinateReferenceSystem pointCrs( match.captured( 3 ) );
if ( crs.isValid() && pointCrs.isValid() && crs != pointCrs )
{
QgsCoordinateTransform ct( pointCrs, crs );
QgsCoordinateTransform ct( pointCrs, crs, context.project() );
try
{
return ct.transform( pt );

View File

@ -458,7 +458,9 @@ QgsRectangle QgsProcessingUtils::combineLayerExtents( const QList<QgsMapLayer *>
if ( crs.isValid() )
{
//transform layer extent to target CRS
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct( layer->crs(), crs );
Q_NOWARN_DEPRECATED_POP
try
{
QgsRectangle reprojExtent = ct.transformBoundingBox( layer->extent() );

View File

@ -30,7 +30,9 @@ QgsMemoryFeatureIterator::QgsMemoryFeatureIterator( QgsMemoryFeatureSource *sour
{
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -24,7 +24,9 @@
double QgsBearingUtils::bearingTrueNorth( const QgsCoordinateReferenceSystem &crs, const QgsPointXY &point )
{
// step 1 - transform point into WGS84 geographic crs
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform transform( crs, QgsCoordinateReferenceSystem::fromEpsgId( 4326 ) );
Q_NOWARN_DEPRECATED_POP
if ( !transform.isValid() )
{

View File

@ -23,7 +23,9 @@ QgsCachedFeatureIterator::QgsCachedFeatureIterator( QgsVectorLayerCache *vlCache
{
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mVectorLayerCache->sourceCrs() )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mVectorLayerCache->sourceCrs(), mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{
@ -109,7 +111,9 @@ QgsCachedFeatureWriterIterator::QgsCachedFeatureWriterIterator( QgsVectorLayerCa
{
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mVectorLayerCache->sourceCrs() )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mVectorLayerCache->sourceCrs(), mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -64,9 +64,14 @@ class CORE_EXPORT QgsCoordinateTransform
* Constructs a QgsCoordinateTransform using QgsCoordinateReferenceSystem objects.
* \param source source CRS, typically of the layer's coordinate system
* \param destination CRS, typically of the map canvas coordinate system
* \warning Use of this constructor is strongly discouraged, as it will not
* correctly handle the user's datum transform setup. Instead the constructor
* variant which accepts a QgsCoordinateTransformContext or QgsProject
* argument should be used instead. It is highly likely that this constructor
* will be removed in future QGIS versions.
* \note Not available in Python bindings.
*/
explicit QgsCoordinateTransform( const QgsCoordinateReferenceSystem &source,
const QgsCoordinateReferenceSystem &destination );
Q_DECL_DEPRECATED explicit QgsCoordinateTransform( const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination ) SIP_SKIP;
/**
* Constructs a QgsCoordinateTransform to transform from the \a source

View File

@ -73,7 +73,9 @@ QString QgsCoordinateUtils::formatCoordinateForProject( const QgsPointXY &point,
if ( destCrs.isValid() && !destCrs.isGeographic() )
{
// need to transform to geographic coordinates
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct( destCrs, QgsCoordinateReferenceSystem( GEOSRID ) );
Q_NOWARN_DEPRECATED_POP
try
{
geo = ct.transform( point );

View File

@ -44,7 +44,9 @@ QgsCoordinateTransform QgsCoordinateTransformCache::transform( const QString &sr
//not found, insert new value
QgsCoordinateReferenceSystem srcCrs = QgsCoordinateReferenceSystem::fromOgcWmsCrs( srcAuthId );
QgsCoordinateReferenceSystem destCrs = QgsCoordinateReferenceSystem::fromOgcWmsCrs( destAuthId );
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct = QgsCoordinateTransform( srcCrs, destCrs );
Q_NOWARN_DEPRECATED_POP
ct.setSourceDatumTransform( srcDatumTransform );
ct.setDestinationDatumTransform( destDatumTransform );
ct.initialize();

View File

@ -626,7 +626,9 @@ QgsPointLocator::QgsPointLocator( QgsVectorLayer *layer, const QgsCoordinateRefe
{
if ( destCRS.isValid() )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( layer->crs(), destCRS );
Q_NOWARN_DEPRECATED_POP
}
setExtent( extent );

View File

@ -475,7 +475,9 @@ bool QgsTracer::initGraph()
int featuresCounted = 0;
Q_FOREACH ( QgsVectorLayer *vl, mLayers )
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct( vl->crs(), mCRS );
Q_NOWARN_DEPRECATED_POP
QgsFeatureRequest request;
request.setSubsetOfAttributes( QgsAttributeList() );

View File

@ -2294,7 +2294,9 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer *layer,
QgsCoordinateTransform ct;
if ( destCRS.isValid() && layer )
{
Q_NOWARN_DEPRECATED_PUSH
ct = QgsCoordinateTransform( layer->crs(), destCRS );
Q_NOWARN_DEPRECATED_POP
}
QgsVectorFileWriter::WriterError error = writeAsVectorFormat( layer, fileName, fileEncoding, ct, driverName, onlySelected,

View File

@ -145,8 +145,12 @@ bool QgsVectorLayerDiagramProvider::prepare( const QgsRenderContext &context, QS
// this is context for layer rendering - use its CT as it includes correct datum transform
s2.setCoordinateTransform( context.coordinateTransform() );
else
{
// otherwise fall back to creating our own CT - this one may not have the correct datum transform!
Q_NOWARN_DEPRECATED_PUSH
s2.setCoordinateTransform( QgsCoordinateTransform( mLayerCrs, mapSettings.destinationCrs() ) );
Q_NOWARN_DEPRECATED_POP
}
s2.setRenderer( mDiagRenderer );

View File

@ -332,7 +332,11 @@ QgsVectorLayerExporter::exportLayer( QgsVectorLayer *layer,
// Create our transform
if ( destCRS.isValid() )
{
Q_NOWARN_DEPRECATED_PUSH
ct = QgsCoordinateTransform( layer->crs(), destCRS );
Q_NOWARN_DEPRECATED_POP
}
// Check for failure
if ( !ct.isValid() )

View File

@ -115,7 +115,9 @@ QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator( QgsVectorLayerFeat
{
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -176,8 +176,12 @@ bool QgsVectorLayerLabelProvider::prepare( const QgsRenderContext &context, QSet
// this is context for layer rendering - use its CT as it includes correct datum transform
lyr.ct = context.coordinateTransform();
else
{
Q_NOWARN_DEPRECATED_PUSH
// otherwise fall back to creating our own CT - this one may not have the correct datum transform!
lyr.ct = QgsCoordinateTransform( mCrs, mapSettings.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
lyr.ptZero = lyr.xform->toMapCoordinates( 0, 0 );
lyr.ptOne = lyr.xform->toMapCoordinates( 1, 0 );

View File

@ -226,7 +226,9 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeDataRaster( const Qgs
QgsRasterProjector *projector = pipe->projector();
if ( projector && projector->destinationCrs() != projector->sourceCrs() )
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct( projector->destinationCrs(), projector->sourceCrs() );
Q_NOWARN_DEPRECATED_POP
srcExtent = ct.transformBoundingBox( outputExtent );
}
if ( !srcProvider->extent().contains( srcExtent ) )

View File

@ -101,7 +101,7 @@ void QgsExtentGroupBox::setOutputCrs( const QgsCoordinateReferenceSystem &output
case UserExtent:
try
{
QgsCoordinateTransform ct( mOutputCrs, outputCrs );
QgsCoordinateTransform ct( mOutputCrs, outputCrs, QgsProject::instance() );
QgsRectangle extent = ct.transformBoundingBox( outputExtent() );
mOutputCrs = outputCrs;
setOutputExtentFromUser( extent, outputCrs );
@ -129,7 +129,7 @@ void QgsExtentGroupBox::setOutputExtent( const QgsRectangle &r, const QgsCoordin
{
try
{
QgsCoordinateTransform ct( srcCrs, mOutputCrs );
QgsCoordinateTransform ct( srcCrs, mOutputCrs, QgsProject::instance() );
extent = ct.transformBoundingBox( r );
}
catch ( QgsCsException & )

View File

@ -354,7 +354,7 @@ void QgsMapCanvas::setDestinationCrs( const QgsCoordinateReferenceSystem &crs )
QgsRectangle rect;
if ( !mSettings.visibleExtent().isEmpty() )
{
QgsCoordinateTransform transform( mSettings.destinationCrs(), crs );
QgsCoordinateTransform transform( mSettings.destinationCrs(), crs, QgsProject::instance() );
try
{
rect = transform.transformBoundingBox( mSettings.visibleExtent() );

View File

@ -60,7 +60,7 @@ void QgsMapCanvasAnnotationItem::updatePosition()
if ( mAnnotation->hasFixedMapPosition() )
{
QgsCoordinateTransform t( mAnnotation->mapPositionCrs(), mMapCanvas->mapSettings().destinationCrs() );
QgsCoordinateTransform t( mAnnotation->mapPositionCrs(), mMapCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
QgsPointXY coord = mAnnotation->mapPosition();
try
{
@ -144,7 +144,7 @@ void QgsMapCanvasAnnotationItem::setFeatureForMapPosition()
try
{
QgsCoordinateTransform ct( mAnnotation->mapPositionCrs(), mMapCanvas->mapSettings().destinationCrs() );
QgsCoordinateTransform ct( mAnnotation->mapPositionCrs(), mMapCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
if ( ct.isValid() )
mapPosition = ct.transform( mapPosition );
}

View File

@ -25,6 +25,7 @@
#include "qgssettings.h"
#include "qgsrasterfilewriter.h"
#include "cpl_string.h"
#include "qgsproject.h"
#include <gdal.h>
#include <QFileDialog>
@ -448,7 +449,7 @@ void QgsRasterLayerSaveAsDialog::setResolution( double xRes, double yRes, const
// TODO: consider more precise resolution calculation
QgsPointXY center = outputRectangle().center();
QgsCoordinateTransform ct( srcCrs, outputCrs() );
QgsCoordinateTransform ct( srcCrs, outputCrs(), QgsProject::instance() );
QgsPointXY srsCenter = ct.transform( center, QgsCoordinateTransform::ReverseTransform );
QgsRectangle srcExtent( srsCenter.x() - xRes / 2, srsCenter.y() - yRes / 2, srsCenter.x() + xRes / 2, srsCenter.y() + yRes / 2 );

View File

@ -19,6 +19,7 @@
#include "qgslogger.h"
#include "qgsmapcanvas.h"
#include "qgsvectorlayer.h"
#include "qgsproject.h"
#include <QPainter>
QgsRubberBand::QgsRubberBand( QgsMapCanvas *mapCanvas, QgsWkbTypes::GeometryType geometryType )
@ -257,7 +258,7 @@ void QgsRubberBand::addGeometry( const QgsGeometry &geometry, const QgsCoordinat
QgsGeometry geom = geometry;
if ( crs.isValid() )
{
QgsCoordinateTransform ct( crs, ms.destinationCrs() );
QgsCoordinateTransform ct( crs, ms.destinationCrs(), QgsProject::instance() );
geom.transform( ct );
}

View File

@ -520,7 +520,7 @@ void QgsGrassNewMapset::setRegionPage()
if ( mRegionModified && newCrs.isValid() && mCrs.isValid()
&& newCrs.srsid() != mCrs.srsid() )
{
QgsCoordinateTransform trans( mCrs, newCrs );
QgsCoordinateTransform trans( mCrs, newCrs, QgsProject::instance() );
double n = mNorthLineEdit->text().toDouble();
double s = mSouthLineEdit->text().toDouble();
@ -856,7 +856,7 @@ void QgsGrassNewMapset::setSelectedRegion()
return;
}
QgsCoordinateTransform trans( source, dest );
QgsCoordinateTransform trans( source, dest, QgsProject::instance() );
bool ok = true;
for ( int i = 0; i < 4; i++ )
@ -946,7 +946,7 @@ void QgsGrassNewMapset::setCurrentRegion()
if ( srs.isValid() && mCrs.isValid()
&& srs.srsid() != mCrs.srsid() )
{
QgsCoordinateTransform trans( srs, mCrs );
QgsCoordinateTransform trans( srs, mCrs, QgsProject::instance() );
bool ok = true;
for ( int i = 0; i < 2; i++ )
@ -1064,7 +1064,7 @@ void QgsGrassNewMapset::drawRegion()
return;
}
QgsCoordinateTransform trans( source, dest );
QgsCoordinateTransform trans( source, dest, QgsProject::instance() );
for ( int i = points.size() - 1; i >= 0; i-- )
{

View File

@ -41,7 +41,9 @@ QgsAfsFeatureIterator::QgsAfsFeatureIterator( QgsAfsFeatureSource *source, bool
{
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->sharedData()->crs() )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->sharedData()->crs(), mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -89,7 +89,9 @@ QgsAfsProvider::QgsAfsProvider( const QString &uri )
appendError( QgsErrorMessage( tr( "Could not parse spatial reference" ), QStringLiteral( "AFSProvider" ) ) );
return;
}
Q_NOWARN_DEPRECATED_PUSH
mSharedData->mExtent = QgsCoordinateTransform( extentCrs, mSharedData->mSourceCRS ).transformBoundingBox( mSharedData->mExtent );
Q_NOWARN_DEPRECATED_POP
}
// Read fields

View File

@ -315,7 +315,9 @@ void QgsArcGisServiceSourceSelect::addButtonClicked()
{
try
{
Q_NOWARN_DEPRECATED_PUSH
extent = QgsCoordinateTransform( canvasCrs, pCrs ).transform( extent );
Q_NOWARN_DEPRECATED_POP
QgsDebugMsg( QString( "canvas transform: Canvas CRS=%1, Provider CRS=%2, BBOX=%3" )
.arg( canvasCrs.authid(), pCrs.authid(), extent.asWktCoordinates() ) );
}

View File

@ -36,7 +36,9 @@ QgsDb2FeatureIterator::QgsDb2FeatureIterator( QgsDb2FeatureSource *source, bool
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -41,7 +41,9 @@ QgsDelimitedTextFeatureIterator::QgsDelimitedTextFeatureIterator( QgsDelimitedTe
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -31,7 +31,9 @@ QgsGPXFeatureIterator::QgsGPXFeatureIterator( QgsGPXFeatureSource *source, bool
{
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -36,7 +36,9 @@ QgsMssqlFeatureIterator::QgsMssqlFeatureIterator( QgsMssqlFeatureSource *source,
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -79,7 +79,9 @@ QgsOgrFeatureIterator::QgsOgrFeatureIterator( QgsOgrFeatureSource *source, bool
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -63,7 +63,9 @@ QgsPostgresFeatureIterator::QgsPostgresFeatureIterator( QgsPostgresFeatureSource
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -44,7 +44,9 @@ QgsSpatiaLiteFeatureIterator::QgsSpatiaLiteFeatureIterator( QgsSpatiaLiteFeature
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -45,7 +45,9 @@ QgsVirtualLayerFeatureIterator::QgsVirtualLayerFeatureIterator( QgsVirtualLayerF
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -1068,8 +1068,9 @@ bool QgsWcsProvider::calculateExtent() const
//QgsDebugMsg( "qgisSrsSource: " + qgisSrsSource.toWkt() );
//QgsDebugMsg( "qgisSrsDest: " + qgisSrsDest.toWkt() );
Q_NOWARN_DEPRECATED_PUSH
mCoordinateTransform = QgsCoordinateTransform( qgisSrsSource, qgisSrsDest );
Q_NOWARN_DEPRECATED_POP
}
QgsDebugMsg( "mCoverageSummary.wgs84BoundingBox= " + mCoverageSummary.wgs84BoundingBox.toString() );

View File

@ -458,7 +458,10 @@ void QgsWfsCapabilities::capabilitiesReplyFinished()
// If the CRS is projected then check that projecting the corner of the bbox, assumed to be in WGS84,
// into the CRS, and then back to WGS84, works (check that we are in the validity area)
QgsCoordinateReferenceSystem crsWGS84 = QgsCoordinateReferenceSystem::fromOgcWmsCrs( QStringLiteral( "CRS:84" ) );
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct( crsWGS84, crs );
Q_NOWARN_DEPRECATED_POP
QgsPointXY ptMin( featureType.bbox.xMinimum(), featureType.bbox.yMinimum() );
QgsPointXY ptMinBack( ct.transform( ct.transform( ptMin, QgsCoordinateTransform::ForwardTransform ), QgsCoordinateTransform::ReverseTransform ) );

View File

@ -815,7 +815,9 @@ QgsWFSFeatureIterator::QgsWFSFeatureIterator( QgsWFSFeatureSource *source,
{
if ( mRequest.destinationCrs().isValid() && mRequest.destinationCrs() != mSource->mCrs )
{
Q_NOWARN_DEPRECATED_PUSH
mTransform = QgsCoordinateTransform( mSource->mCrs, mRequest.destinationCrs() );
Q_NOWARN_DEPRECATED_POP
}
try
{

View File

@ -1565,7 +1565,9 @@ bool QgsWFSProvider::getCapabilities()
if ( mShared->mCaps.featureTypes[i].bboxSRSIsWGS84 )
{
QgsCoordinateReferenceSystem src = QgsCoordinateReferenceSystem::fromOgcWmsCrs( QStringLiteral( "CRS:84" ) );
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct( src, mShared->mSourceCRS );
Q_NOWARN_DEPRECATED_POP
QgsDebugMsg( "latlon ext:" + r.toString() );
QgsDebugMsg( "src:" + src.authid() );

View File

@ -829,7 +829,9 @@ void QgsWmsCapabilities::parseLayer( QDomElement const &e, QgsWmsLayerProperty &
QgsCoordinateReferenceSystem dst = QgsCoordinateReferenceSystem::fromOgcWmsCrs( DEFAULT_LATLON_CRS );
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct( src, dst );
Q_NOWARN_DEPRECATED_POP
layerProperty.ex_GeographicBoundingBox = ct.transformBoundingBox( layerProperty.ex_GeographicBoundingBox );
}
catch ( QgsCsException &cse )

View File

@ -1188,7 +1188,10 @@ void QgsWmsProvider::setupXyzCapabilities( const QString &uri )
QgsDataSourceUri parsedUri;
parsedUri.setEncodedUri( uri );
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct( QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:4326" ) ), QgsCoordinateReferenceSystem( mSettings.mCrsId ) );
Q_NOWARN_DEPRECATED_POP
// 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)
@ -1318,7 +1321,10 @@ bool QgsWmsProvider::extentForNonTiledLayer( const QString &layerName, const QSt
if ( !wgs.isValid() || !dst.isValid() )
return false;
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform xform( wgs, dst );
Q_NOWARN_DEPRECATED_POP
QgsDebugMsg( QString( "transforming layer extent %1" ).arg( extent.toString( true ) ) );
try
{
@ -1548,7 +1554,9 @@ bool QgsWmsProvider::calculateExtent() const
{
QgsCoordinateReferenceSystem qgisSrsSource = QgsCoordinateReferenceSystem::fromOgcWmsCrs( mTileLayer->boundingBoxes[i].crs );
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform ct( qgisSrsSource, qgisSrsDest );
Q_NOWARN_DEPRECATED_POP
QgsDebugMsg( QString( "ct: %1 => %2" ).arg( mTileLayer->boundingBoxes.at( i ).crs, mImageCrs ) );
@ -2928,7 +2936,9 @@ QgsRasterIdentifyResult QgsWmsProvider::identify( const QgsPointXY &point, QgsRa
QgsCoordinateTransform coordinateTransform;
if ( featuresCrs.isValid() && featuresCrs != crs() )
{
Q_NOWARN_DEPRECATED_PUSH
coordinateTransform = QgsCoordinateTransform( featuresCrs, crs() );
Q_NOWARN_DEPRECATED_POP
}
QgsFeatureStore featureStore( fields, crs() );
QMap<QString, QVariant> params;
@ -3004,7 +3014,9 @@ QgsRasterIdentifyResult QgsWmsProvider::identify( const QgsPointXY &point, QgsRa
if ( featuresCrs.isValid() && featuresCrs != crs() )
{
Q_NOWARN_DEPRECATED_PUSH
coordinateTransform = QgsCoordinateTransform( featuresCrs, crs() );
Q_NOWARN_DEPRECATED_POP
}
}

View File

@ -105,7 +105,9 @@ void QgsConfigParserUtils::appendLayerBoundingBoxes( QDomElement &layerElem, QDo
QgsRectangle wgs84BoundingRect;
if ( !layerExtent.isNull() )
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform exGeoTransform( layerCRS, wgs84 );
Q_NOWARN_DEPRECATED_POP
try
{
wgs84BoundingRect = exGeoTransform.transformBoundingBox( layerExtent );
@ -213,7 +215,9 @@ void QgsConfigParserUtils::appendLayerBoundingBox( QDomElement &layerElem, QDomD
QgsRectangle crsExtent;
if ( !layerExtent.isNull() )
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform crsTransform( layerCRS, crs );
Q_NOWARN_DEPRECATED_POP
try
{
crsExtent = crsTransform.transformBoundingBox( layerExtent );

View File

@ -161,7 +161,9 @@ namespace QgsWcs
// transform rect
if ( requestCRS != rLayer->crs() )
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform t( requestCRS, rLayer->crs() );
Q_NOWARN_DEPRECATED_POP
rect = t.transformBoundingBox( rect );
}

View File

@ -73,7 +73,9 @@ namespace QgsWcs
//lonLatEnvelope
QgsCoordinateReferenceSystem layerCrs = layer->crs();
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform t( layerCrs, QgsCoordinateReferenceSystem( 4326 ) );
Q_NOWARN_DEPRECATED_POP
//transform
QgsRectangle BBox;
try

View File

@ -515,7 +515,9 @@ namespace QgsWfs
QgsRectangle wgs84BoundingRect;
if ( !layerExtent.isNull() )
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform exGeoTransform( layer->crs(), wgs84 );
Q_NOWARN_DEPRECATED_POP
try
{
wgs84BoundingRect = exGeoTransform.transformBoundingBox( layerExtent );

View File

@ -154,7 +154,9 @@ namespace QgsWfs
}
else
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform transform( layer->crs(), requestCrs );
Q_NOWARN_DEPRECATED_POP
try
{
if ( requestRect.isEmpty() )
@ -1223,7 +1225,9 @@ namespace QgsWfs
int prec = params.precision;
QgsCoordinateReferenceSystem crs = params.crs;
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform mTransform( crs, params.outputCrs );
Q_NOWARN_DEPRECATED_POP
try
{
QgsGeometry transformed = geom;
@ -1324,7 +1328,9 @@ namespace QgsWfs
int prec = params.precision;
QgsCoordinateReferenceSystem crs = params.crs;
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform mTransform( crs, params.outputCrs );
Q_NOWARN_DEPRECATED_POP
try
{
QgsGeometry transformed = geom;

View File

@ -1250,7 +1250,9 @@ namespace QgsWms
QgsRectangle wgs84BoundingRect;
if ( !layerExtent.isNull() )
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform exGeoTransform( layerCRS, wgs84 );
Q_NOWARN_DEPRECATED_POP
try
{
wgs84BoundingRect = exGeoTransform.transformBoundingBox( layerExtent );
@ -1342,7 +1344,9 @@ namespace QgsWms
QgsRectangle crsExtent;
if ( !layerExtent.isNull() )
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform crsTransform( layerCRS, crs );
Q_NOWARN_DEPRECATED_POP
try
{
crsExtent = crsTransform.transformBoundingBox( layerExtent );
@ -1455,7 +1459,9 @@ namespace QgsWms
}
//get project crs
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform t( layerCrs, project->crs() );
Q_NOWARN_DEPRECATED_POP
//transform
try

View File

@ -405,7 +405,9 @@ namespace QgsWms
// update combineBBox
try
{
Q_NOWARN_DEPRECATED_PUSH
QgsCoordinateTransform t( l->crs(), project->crs() );
Q_NOWARN_DEPRECATED_POP
QgsRectangle BBox = t.transformBoundingBox( l->extent() );
if ( combinedBBox.isEmpty() )
{

View File

@ -129,7 +129,7 @@ void TestQgsMeasureTool::testLengthCalculation()
// check new CoordinateReferenceSystem, points must be reprojected to paint them successfully (issue #15182)
QgsCoordinateReferenceSystem srs2( 4326, QgsCoordinateReferenceSystem::EpsgCrsId );
QgsCoordinateTransform ct( srs, srs2 );
QgsCoordinateTransform ct( srs, srs2, QgsProject::instance() );
QgsPointXY p0 = ct.transform( tool2->points()[0] );
QgsPointXY p1 = ct.transform( tool2->points()[1] );

View File

@ -18,6 +18,7 @@
#include "qgsapplication.h"
#include "qgsrectangle.h"
#include "qgscoordinatetransformcontext.h"
#include "qgsproject.h"
#include <QObject>
#include "qgstest.h"
#include "qgsexception.h"
@ -64,7 +65,7 @@ void TestQgsCoordinateTransform::copy()
QgsCoordinateReferenceSystem destination;
destination.createFromId( 4326, QgsCoordinateReferenceSystem::EpsgCrsId );
QgsCoordinateTransform original( source, destination );
QgsCoordinateTransform original( source, destination, QgsProject::instance() );
QVERIFY( original.isValid() );
QgsCoordinateTransform copy( original );
@ -93,7 +94,7 @@ void TestQgsCoordinateTransform::assignment()
QgsCoordinateReferenceSystem destination;
destination.createFromId( 4326, QgsCoordinateReferenceSystem::EpsgCrsId );
QgsCoordinateTransform original( source, destination );
QgsCoordinateTransform original( source, destination, QgsProject::instance() );
QVERIFY( original.isValid() );
QgsCoordinateTransform copy;
@ -127,22 +128,22 @@ void TestQgsCoordinateTransform::isValid()
srs2.createFromSrid( 4326 );
// valid source, invalid destination
QgsCoordinateTransform tr2( srs1, QgsCoordinateReferenceSystem() );
QgsCoordinateTransform tr2( srs1, QgsCoordinateReferenceSystem(), QgsProject::instance() );
QVERIFY( !tr2.isValid() );
// invalid source, valid destination
QgsCoordinateTransform tr3( QgsCoordinateReferenceSystem(), srs2 );
QgsCoordinateTransform tr3( QgsCoordinateReferenceSystem(), srs2, QgsProject::instance() );
QVERIFY( !tr3.isValid() );
// valid source, valid destination
QgsCoordinateTransform tr4( srs1, srs2 );
QgsCoordinateTransform tr4( srs1, srs2, QgsProject::instance() );
QVERIFY( tr4.isValid() );
// try to invalidate by setting source as invalid
tr4.setSourceCrs( QgsCoordinateReferenceSystem() );
QVERIFY( !tr4.isValid() );
QgsCoordinateTransform tr5( srs1, srs2 );
QgsCoordinateTransform tr5( srs1, srs2, QgsProject::instance() );
// try to invalidate by setting destination as invalid
tr5.setDestinationCrs( QgsCoordinateReferenceSystem() );
QVERIFY( !tr5.isValid() );
@ -160,19 +161,19 @@ void TestQgsCoordinateTransform::isShortCircuited()
srs2.createFromSrid( 4326 );
// valid source, invalid destination
QgsCoordinateTransform tr2( srs1, QgsCoordinateReferenceSystem() );
QgsCoordinateTransform tr2( srs1, QgsCoordinateReferenceSystem(), QgsProject::instance() );
QVERIFY( tr2.isShortCircuited() );
// invalid source, valid destination
QgsCoordinateTransform tr3( QgsCoordinateReferenceSystem(), srs2 );
QgsCoordinateTransform tr3( QgsCoordinateReferenceSystem(), srs2, QgsProject::instance() );
QVERIFY( tr3.isShortCircuited() );
// equal, valid source and destination
QgsCoordinateTransform tr4( srs1, srs1 );
QgsCoordinateTransform tr4( srs1, srs1, QgsProject::instance() );
QVERIFY( tr4.isShortCircuited() );
// valid but different source and destination
QgsCoordinateTransform tr5( srs1, srs2 );
QgsCoordinateTransform tr5( srs1, srs2, QgsProject::instance() );
QVERIFY( !tr5.isShortCircuited() );
// try to short circuit by changing dest
@ -221,7 +222,7 @@ void TestQgsCoordinateTransform::transformBoundingBox()
QgsCoordinateReferenceSystem destSrs;
destSrs.createFromSrid( 4326 );
QgsCoordinateTransform tr( sourceSrs, destSrs );
QgsCoordinateTransform tr( sourceSrs, destSrs, QgsProject::instance() );
QgsRectangle crossingRect( 6374985, -3626584, 7021195, -3272435 );
QgsRectangle resultRect = tr.transformBoundingBox( crossingRect, QgsCoordinateTransform::ForwardTransform, true );
QgsRectangle expectedRect;

View File

@ -2231,7 +2231,7 @@ class TestQgsExpression: public QObject
s.createFromOgcWmsCrs( QStringLiteral( "EPSG:4326" ) );
QgsCoordinateReferenceSystem d;
d.createFromOgcWmsCrs( QStringLiteral( "EPSG:3857" ) );
QgsCoordinateTransform t( s, d );
QgsCoordinateTransform t( s, d, QgsProject::instance() );
QgsGeometry tLine = QgsGeometry::fromPolylineXY( line );
tLine.transform( t );

View File

@ -49,6 +49,7 @@
#include "qgsgeometrycollection.h"
#include "qgsgeometryfactory.h"
#include "qgscurvepolygon.h"
#include "qgsproject.h"
//qgs unit test utility class
#include "qgsrenderchecker.h"
@ -715,7 +716,7 @@ void TestQgsGeometry::point()
sourceSrs.createFromSrid( 3994 );
QgsCoordinateReferenceSystem destSrs;
destSrs.createFromSrid( 4202 ); // want a transform with ellipsoid change
QgsCoordinateTransform tr( sourceSrs, destSrs );
QgsCoordinateTransform tr( sourceSrs, destSrs, QgsProject::instance() );
QgsPoint p16( QgsWkbTypes::PointZM, 6374985, -3626584, 1, 2 );
p16.transform( tr, QgsCoordinateTransform::ForwardTransform );
QGSCOMPARENEAR( p16.x(), 175.771, 0.001 );
@ -1593,7 +1594,7 @@ void TestQgsGeometry::circularString()
sourceSrs.createFromSrid( 3994 );
QgsCoordinateReferenceSystem destSrs;
destSrs.createFromSrid( 4202 ); // want a transform with ellipsoid change
QgsCoordinateTransform tr( sourceSrs, destSrs );
QgsCoordinateTransform tr( sourceSrs, destSrs, QgsProject::instance() );
// 2d CRS transform
QgsCircularString l21;
@ -3317,7 +3318,7 @@ void TestQgsGeometry::lineString()
sourceSrs.createFromSrid( 3994 );
QgsCoordinateReferenceSystem destSrs;
destSrs.createFromSrid( 4202 ); // want a transform with ellipsoid change
QgsCoordinateTransform tr( sourceSrs, destSrs );
QgsCoordinateTransform tr( sourceSrs, destSrs, QgsProject::instance() );
// 2d CRS transform
QgsLineString l21;
@ -5154,7 +5155,7 @@ void TestQgsGeometry::polygon()
sourceSrs.createFromSrid( 3994 );
QgsCoordinateReferenceSystem destSrs;
destSrs.createFromSrid( 4202 ); // want a transform with ellipsoid change
QgsCoordinateTransform tr( sourceSrs, destSrs );
QgsCoordinateTransform tr( sourceSrs, destSrs, QgsProject::instance() );
// 2d CRS transform
QgsPolygon pTransform;
@ -9390,7 +9391,7 @@ void TestQgsGeometry::compoundCurve()
sourceSrs.createFromSrid( 3994 );
QgsCoordinateReferenceSystem destSrs;
destSrs.createFromSrid( 4202 ); // want a transform with ellipsoid change
QgsCoordinateTransform tr( sourceSrs, destSrs );
QgsCoordinateTransform tr( sourceSrs, destSrs, QgsProject::instance() );
// 2d CRS transform
QgsCompoundCurve c21;
@ -14206,7 +14207,7 @@ void TestQgsGeometry::geometryCollection()
sourceSrs.createFromSrid( 3994 );
QgsCoordinateReferenceSystem destSrs;
destSrs.createFromSrid( 4202 ); // want a transform with ellipsoid change
QgsCoordinateTransform tr( sourceSrs, destSrs );
QgsCoordinateTransform tr( sourceSrs, destSrs, QgsProject::instance() );
// 2d CRS transform
QgsGeometryCollection pTransform;

View File

@ -19,6 +19,7 @@
#include <qgsgeometry.h>
#include <qgstracer.h>
#include <qgsvectorlayer.h>
#include "qgsproject.h"
class TestQgsTracer : public QObject
{
@ -306,7 +307,7 @@ void TestQgsTracer::testReprojection()
QgsVectorLayer *vl = make_layer( wkts );
QgsCoordinateReferenceSystem dstCrs( QStringLiteral( "EPSG:3857" ) );
QgsCoordinateTransform ct( QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:4326" ) ), dstCrs );
QgsCoordinateTransform ct( QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:4326" ) ), dstCrs, QgsProject::instance() );
QgsPointXY p1 = ct.transform( QgsPointXY( 1, 0 ) );
QgsPointXY p2 = ct.transform( QgsPointXY( 2, 0 ) );

View File

@ -33,7 +33,7 @@ class TestQgsCoordinateTransform(unittest.TestCase):
myGeoCrs.createFromId(4326, QgsCoordinateReferenceSystem.EpsgCrsId)
myUtmCrs = QgsCoordinateReferenceSystem()
myUtmCrs.createFromId(32756, QgsCoordinateReferenceSystem.EpsgCrsId)
myXForm = QgsCoordinateTransform(myUtmCrs, myGeoCrs)
myXForm = QgsCoordinateTransform(myUtmCrs, myGeoCrs, QgsProject.instance())
myProjectedExtent = myXForm.transformBoundingBox(myExtent)
myExpectedExtent = ('150.1509239873580270,-35.7176936443908772 : '
'150.1964384662953194,-35.6971885216629090')

View File

@ -25,6 +25,7 @@ from qgis.core import (QgsVectorLayer,
QgsCoordinateReferenceSystem,
QgsVectorFileWriter,
QgsFeatureRequest,
QgsProject,
QgsWkbTypes,
QgsRectangle,
QgsCoordinateTransform
@ -221,7 +222,7 @@ class TestQgsVectorFileWriter(unittest.TestCase):
options = QgsVectorFileWriter.SaveVectorOptions()
options.driverName = 'ESRI Shapefile'
options.filterExtent = QgsRectangle(-12511460, 3045157, -10646621, 4683497)
options.ct = QgsCoordinateTransform(source_layer.crs(), QgsCoordinateReferenceSystem.fromEpsgId(3785))
options.ct = QgsCoordinateTransform(source_layer.crs(), QgsCoordinateReferenceSystem.fromEpsgId(3785), QgsProject.instance())
dest_file_name = os.path.join(str(QDir.tempPath()), 'extent_transform.shp')
write_result, error_message = QgsVectorFileWriter.writeAsVectorFormat(