Skip to content

Commit 4643712

Browse files
committed
Fix missing transform contexts for QgsDistanceArea
QgsDistanceArea.setSourceCrs() now requires a QgsTransformContext argument.
1 parent 6528f1c commit 4643712

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+84
-78
lines changed

doc/api_break.dox

+2-1
Original file line numberDiff line numberDiff line change
@@ -1128,7 +1128,8 @@ ellipsoid to 'NONE' to disable ellipsoidal calculations.
11281128
- ellipsoidalEnabled() was removed. Ellipsoidal calculations are now enabled whenever a valid ellipsoid() is set. Check
11291129
willUseEllipsoid() to determine whether ellipsoidal calculations will be performed.
11301130
- sourceCrs() now returns a QgsCoordinateReferenceSystem instead of the crs ID.
1131-
- setSourceCrs() now requires a QgsCoordinateReferenceSystem instead of crs ID.
1131+
- setSourceCrs() now requires a QgsCoordinateReferenceSystem instead of crs ID, and requires a QgsCoordinateTransformContext object. PyQGIS code
1132+
can use QgsProject.instance().transformContext() for the QgsCoordinateTransformContext argument.
11321133
- setSourceAuthId() was removed. Use setSourceCrs() instead.
11331134
- geographic() was removed. Check sourceCrs().isGeographic() instead.
11341135
- measure() has been removed. Use measureArea() or measureLength() instead.

python/core/qgsdistancearea.sip

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ ellipsoid if a valid ellipsoid() has been set.
5050
.. seealso:: :py:func:`ellipsoid()`
5151
%End
5252

53-
void setSourceCrs( const QgsCoordinateReferenceSystem &srcCRS );
53+
void setSourceCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context );
5454
%Docstring
55-
Sets source spatial reference system.
55+
Sets source spatial reference system ``crs``.
5656

5757
.. versionadded:: 2.2
5858

python/gui/qgsattributeeditorcontext.sip

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111

1212

13-
1413
class QgsAttributeEditorContext
1514
{
1615
%Docstring

python/plugins/processing/algs/qgis/Aggregate.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ def prepareAlgorithm(self, parameters, context, feedback):
135135
aggregates = self.parameterAsAggregates(parameters, self.AGGREGATES, context)
136136

137137
da = QgsDistanceArea()
138-
da.setSourceCrs(source.sourceCrs())
138+
da.setSourceCrs(source.sourceCrs(), context.transformContext())
139139
da.setEllipsoid(context.project().ellipsoid())
140140

141141
self.source = source

python/plugins/processing/algs/qgis/ExportGeometryInfo.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def processAlgorithm(self, parameters, context, feedback):
123123

124124
self.distance_area = QgsDistanceArea()
125125
if method == 2:
126-
self.distance_area.setSourceCrs(source.sourceCrs())
126+
self.distance_area.setSourceCrs(source.sourceCrs(), context.transformContext())
127127
self.distance_area.setEllipsoid(context.project().ellipsoid())
128128
elif method == 1:
129129
coordTransform = QgsCoordinateTransform(source.sourceCrs(), context.project().crs(), context.project())

python/plugins/processing/algs/qgis/FieldsCalculator.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def processAlgorithm(self, parameters, context, feedback):
104104

105105
expression = QgsExpression(formula)
106106
da = QgsDistanceArea()
107-
da.setSourceCrs(source.sourceCrs())
107+
da.setSourceCrs(source.sourceCrs(), context.transformContext())
108108
da.setEllipsoid(context.project().ellipsoid())
109109
expression.setGeomCalculator(da)
110110

python/plugins/processing/algs/qgis/FieldsMapper.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def prepareAlgorithm(self, parameters, context, feedback):
121121
self.expressions = []
122122

123123
da = QgsDistanceArea()
124-
da.setSourceCrs(source.sourceCrs())
124+
da.setSourceCrs(source.sourceCrs(), context.transformContext())
125125
da.setEllipsoid(context.project().ellipsoid())
126126

127127
# create an expression context using thread safe processing context

python/plugins/processing/algs/qgis/HubDistanceLines.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def processAlgorithm(self, parameters, context, feedback):
117117
index = QgsSpatialIndex(hub_source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes([]).setDestinationCrs(point_source.sourceCrs(), context.transformContext())))
118118

119119
distance = QgsDistanceArea()
120-
distance.setSourceCrs(point_source.sourceCrs())
120+
distance.setSourceCrs(point_source.sourceCrs(), context.transformContext())
121121
distance.setEllipsoid(context.project().ellipsoid())
122122

123123
# Scan source points, find nearest hub, and write to output file

python/plugins/processing/algs/qgis/HubDistancePoints.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def processAlgorithm(self, parameters, context, feedback):
113113
index = QgsSpatialIndex(hub_source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes([]).setDestinationCrs(point_source.sourceCrs(), context.transformContext())))
114114

115115
distance = QgsDistanceArea()
116-
distance.setSourceCrs(point_source.sourceCrs())
116+
distance.setSourceCrs(point_source.sourceCrs(), context.transformContext())
117117
distance.setEllipsoid(context.project().ellipsoid())
118118

119119
# Scan source points, find nearest hub, and write to output file

python/plugins/processing/algs/qgis/NearestNeighbourAnalysis.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def processAlgorithm(self, parameters, context, feedback):
9898
spatialIndex = QgsSpatialIndex(source, feedback)
9999

100100
distance = QgsDistanceArea()
101-
distance.setSourceCrs(source.sourceCrs())
101+
distance.setSourceCrs(source.sourceCrs(), context.transformContext())
102102
distance.setEllipsoid(context.project().ellipsoid())
103103

104104
sumDist = 0.00

python/plugins/processing/algs/qgis/PointDistance.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ def linearMatrix(self, parameters, context, source, inField, target_source, targ
157157
index = QgsSpatialIndex(target_source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes([]).setDestinationCrs(source.sourceCrs(), context.transformContext())), feedback)
158158

159159
distArea = QgsDistanceArea()
160-
distArea.setSourceCrs(source.sourceCrs())
160+
distArea.setSourceCrs(source.sourceCrs(), context.transformContext())
161161
distArea.setEllipsoid(context.project().ellipsoid())
162162

163163
features = source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes([inIdx]))
@@ -208,7 +208,7 @@ def linearMatrix(self, parameters, context, source, inField, target_source, targ
208208
def regularMatrix(self, parameters, context, source, inField, target_source, targetField,
209209
nPoints, feedback):
210210
distArea = QgsDistanceArea()
211-
distArea.setSourceCrs(source.sourceCrs())
211+
distArea.setSourceCrs(source.sourceCrs(), context.transformContext())
212212
distArea.setEllipsoid(context.project().ellipsoid())
213213

214214
inIdx = source.fields().lookupField(inField)

python/plugins/processing/algs/qgis/PointsToPaths.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def processAlgorithm(self, parameters, context, feedback):
153153
feedback.setProgress(0)
154154

155155
da = QgsDistanceArea()
156-
da.setSourceCrs(source.sourceCrs())
156+
da.setSourceCrs(source.sourceCrs(), context.transformContext())
157157
da.setEllipsoid(context.project().ellipsoid())
158158

159159
current = 0

python/plugins/processing/algs/qgis/RandomPointsAlongLines.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def processAlgorithm(self, parameters, context, feedback):
109109
points = dict()
110110

111111
da = QgsDistanceArea()
112-
da.setSourceCrs(source.sourceCrs())
112+
da.setSourceCrs(source.sourceCrs(), context.transformContext())
113113
da.setEllipsoid(context.project().ellipsoid())
114114

115115
request = QgsFeatureRequest()

python/plugins/processing/algs/qgis/RandomPointsPolygons.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def processAlgorithm(self, parameters, context, feedback):
127127
fields, QgsWkbTypes.Point, source.sourceCrs())
128128

129129
da = QgsDistanceArea()
130-
da.setSourceCrs(source.sourceCrs())
130+
da.setSourceCrs(source.sourceCrs(), context.transformContext())
131131
da.setEllipsoid(context.project().ellipsoid())
132132

133133
total = 100.0 / source.featureCount() if source.featureCount() else 0

python/plugins/processing/algs/qgis/SumLines.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def processAlgorithm(self, parameters, context, feedback):
107107
QgsFeatureRequest().setSubsetOfAttributes([]).setDestinationCrs(poly_source.sourceCrs(), context.transformContext())), feedback)
108108

109109
distArea = QgsDistanceArea()
110-
distArea.setSourceCrs(poly_source.sourceCrs())
110+
distArea.setSourceCrs(poly_source.sourceCrs(), context.transformContext())
111111
distArea.setEllipsoid(context.project().ellipsoid())
112112

113113
features = poly_source.getFeatures()

src/analysis/network/qgsgraphbuilderinterface.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <QVariant>
2121

2222
#include "qgspoint.h"
23+
#include "qgsproject.h"
2324
#include "qgscoordinatereferencesystem.h"
2425
#include "qgsdistancearea.h"
2526
#include "qgis_analysis.h"
@@ -62,7 +63,7 @@ class ANALYSIS_EXPORT QgsGraphBuilderInterface
6263
, mCtfEnabled( ctfEnabled )
6364
, mTopologyTolerance( topologyTolerance )
6465
{
65-
mDa.setSourceCrs( mCrs );
66+
mDa.setSourceCrs( mCrs, QgsProject::instance()->transformContext() );
6667
mDa.setEllipsoid( ellipsoidID );
6768
}
6869

src/app/qgisapp.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -8196,7 +8196,7 @@ void QgisApp::selectByForm()
81968196
}
81978197
QgsDistanceArea myDa;
81988198

8199-
myDa.setSourceCrs( vlayer->crs() );
8199+
myDa.setSourceCrs( vlayer->crs(), QgsProject::instance()->transformContext() );
82008200
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
82018201

82028202
QgsAttributeEditorContext context;

src/app/qgisappinterface.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -781,7 +781,7 @@ QgsAttributeDialog *QgisAppInterface::getFeatureForm( QgsVectorLayer *l, QgsFeat
781781
{
782782
QgsDistanceArea myDa;
783783

784-
myDa.setSourceCrs( l->crs() );
784+
myDa.setSourceCrs( l->crs(), QgsProject::instance()->transformContext() );
785785
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
786786

787787
QgsAttributeEditorContext context;

src/app/qgsattributeactionpropertiesdialog.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ void QgsAttributeActionPropertiesDialog::init( const QSet<QString> &actionScopes
208208
}
209209

210210
QgsDistanceArea myDa;
211-
myDa.setSourceCrs( mLayer->crs() );
211+
myDa.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
212212
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
213213

214214
mFieldExpression->setLayer( mLayer );

src/app/qgsattributetabledialog.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttr
142142

143143
myDa = new QgsDistanceArea();
144144

145-
myDa->setSourceCrs( mLayer->crs() );
145+
myDa->setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
146146
myDa->setEllipsoid( QgsProject::instance()->ellipsoid() );
147147

148148
mEditorContext.setDistanceArea( *myDa );
@@ -621,7 +621,7 @@ void QgsAttributeTableDialog::filterExpressionBuilder()
621621
dlg.setWindowTitle( tr( "Expression Based Filter" ) );
622622

623623
QgsDistanceArea myDa;
624-
myDa.setSourceCrs( mLayer->crs() );
624+
myDa.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
625625
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
626626
dlg.setGeomCalculator( myDa );
627627

@@ -981,7 +981,7 @@ void QgsAttributeTableDialog::setFilterExpression( const QString &filterString,
981981
QgsFeatureIds filteredFeatures;
982982
QgsDistanceArea myDa;
983983

984-
myDa.setSourceCrs( mLayer->crs() );
984+
myDa.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
985985
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
986986

987987
// parse search string and build parsed tree

src/app/qgsdiagramproperties.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer *layer, QWidget *pare
207207
// field combo and expression button
208208
mSizeFieldExpressionWidget->setLayer( mLayer );
209209
QgsDistanceArea myDa;
210-
myDa.setSourceCrs( mLayer->crs() );
210+
myDa.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
211211
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
212212
mSizeFieldExpressionWidget->setGeomCalculator( myDa );
213213

@@ -939,7 +939,7 @@ QString QgsDiagramProperties::showExpressionBuilder( const QString &initialExpre
939939
dlg.setWindowTitle( tr( "Expression Based Attribute" ) );
940940

941941
QgsDistanceArea myDa;
942-
myDa.setSourceCrs( mLayer->crs() );
942+
myDa.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
943943
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
944944
dlg.setGeomCalculator( myDa );
945945

src/app/qgsfeatureaction.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ QgsAttributeDialog *QgsFeatureAction::newDialog( bool cloneFeature )
5757

5858
QgsDistanceArea myDa;
5959

60-
myDa.setSourceCrs( mLayer->crs() );
60+
myDa.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
6161
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
6262

6363
context.setDistanceArea( myDa );

src/app/qgsfieldcalculator.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ QgsFieldCalculator::QgsFieldCalculator( QgsVectorLayer *vl, QWidget *parent )
6161
connect( mButtonBox, &QDialogButtonBox::helpRequested, this, &QgsFieldCalculator::showHelp );
6262

6363
QgsDistanceArea myDa;
64-
myDa.setSourceCrs( vl->crs() );
64+
myDa.setSourceCrs( vl->crs(), QgsProject::instance()->transformContext() );
6565
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
6666
builder->setGeomCalculator( myDa );
6767

@@ -160,7 +160,7 @@ void QgsFieldCalculator::accept()
160160
// Set up QgsDistanceArea each time we (re-)calculate
161161
QgsDistanceArea myDa;
162162

163-
myDa.setSourceCrs( mVectorLayer->crs() );
163+
myDa.setSourceCrs( mVectorLayer->crs(), QgsProject::instance()->transformContext() );
164164
myDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
165165

166166
QString calcString = builder->expressionText();

src/app/qgslabelinggui.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ void QgsLabelingGui::setLayer( QgsMapLayer *mapLayer )
113113

114114
mFieldExpressionWidget->setLayer( mLayer );
115115
QgsDistanceArea da;
116-
da.setSourceCrs( mLayer->crs() );
116+
da.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() );
117117
da.setEllipsoid( QgsProject::instance()->ellipsoid() );
118118
mFieldExpressionWidget->setGeomCalculator( da );
119119

src/app/qgsmaptoolmeasureangle.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,6 @@ void QgsMapToolMeasureAngle::updateSettings()
182182
void QgsMapToolMeasureAngle::configureDistanceArea()
183183
{
184184
QString ellipsoidId = QgsProject::instance()->ellipsoid();
185-
mDa.setSourceCrs( mCanvas->mapSettings().destinationCrs() );
185+
mDa.setSourceCrs( mCanvas->mapSettings().destinationCrs(), QgsProject::instance()->transformContext() );
186186
mDa.setEllipsoid( ellipsoidId );
187187
}

src/app/qgsmaptooloffsetpointsymbol.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ QPointF QgsMapToolOffsetPointSymbol::calculateOffset( const QgsPointXY &startPoi
250250
case QgsUnitTypes::RenderMetersInMapUnits:
251251
{
252252
QgsDistanceArea distanceArea;
253-
distanceArea.setSourceCrs( mCanvas->mapSettings().destinationCrs() );
253+
distanceArea.setSourceCrs( mCanvas->mapSettings().destinationCrs(), QgsProject::instance()->transformContext() );
254254
distanceArea.setEllipsoid( mCanvas->mapSettings().ellipsoid() );
255255
// factor=1.0 / 1 meter in MapUnits
256256
factor = 1.0 / distanceArea.measureLineProjected( startPoint );

src/app/qgsmeasuredialog.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ void QgsMeasureDialog::updateSettings()
105105
// Configure QgsDistanceArea
106106
mDistanceUnits = QgsProject::instance()->distanceUnits();
107107
mAreaUnits = QgsProject::instance()->areaUnits();
108-
mDa.setSourceCrs( mTool->canvas()->mapSettings().destinationCrs() );
108+
mDa.setSourceCrs( mTool->canvas()->mapSettings().destinationCrs(), QgsProject::instance()->transformContext() );
109109
mDa.setEllipsoid( QgsProject::instance()->ellipsoid() );
110110

111111
mTable->clear();

src/core/composer/qgscomposerhtml.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -530,14 +530,14 @@ void QgsComposerHtml::setExpressionContext( const QgsFeature &feature, QgsVector
530530
//setup distance area conversion
531531
if ( layer )
532532
{
533-
mDistanceArea->setSourceCrs( layer->crs() );
533+
mDistanceArea->setSourceCrs( layer->crs(), mComposition->project()->transformContext() );
534534
}
535535
else if ( mComposition )
536536
{
537537
//set to composition's mapsettings' crs
538538
QgsComposerMap *referenceMap = mComposition->referenceMap();
539539
if ( referenceMap )
540-
mDistanceArea->setSourceCrs( referenceMap->crs() );
540+
mDistanceArea->setSourceCrs( referenceMap->crs(), mComposition->project()->transformContext() );
541541
}
542542
if ( mComposition )
543543
{

src/core/composer/qgscomposerlabel.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -260,14 +260,14 @@ void QgsComposerLabel::refreshExpressionContext()
260260
//setup distance area conversion
261261
if ( layer )
262262
{
263-
mDistanceArea->setSourceCrs( layer->crs() );
263+
mDistanceArea->setSourceCrs( layer->crs(), mComposition->project()->transformContext() );
264264
}
265265
else
266266
{
267267
//set to composition's reference map's crs
268268
QgsComposerMap *referenceMap = mComposition->referenceMap();
269269
if ( referenceMap )
270-
mDistanceArea->setSourceCrs( referenceMap->crs() );
270+
mDistanceArea->setSourceCrs( referenceMap->crs(), mComposition->project()->transformContext() );
271271
}
272272
mDistanceArea->setEllipsoid( mComposition->project()->ellipsoid() );
273273
contentChanged();

src/core/composer/qgscomposerscalebar.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ double QgsComposerScaleBar::mapWidth() const
337337
else
338338
{
339339
QgsDistanceArea da;
340-
da.setSourceCrs( mComposerMap->crs() );
340+
da.setSourceCrs( mComposerMap->crs(), mComposition->project()->transformContext() );
341341
da.setEllipsoid( mComposition->project()->ellipsoid() );
342342

343343
QgsUnitTypes::DistanceUnit units = da.lengthUnits();

src/core/layout/qgslayoutitemhtml.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ void QgsLayoutItemHtml::setExpressionContext( const QgsFeature &feature, QgsVect
487487
//setup distance area conversion
488488
if ( layer )
489489
{
490-
mDistanceArea.setSourceCrs( layer->crs() );
490+
mDistanceArea.setSourceCrs( layer->crs(), mLayout->project()->transformContext() );
491491
}
492492
else if ( mLayout )
493493
{

src/core/layout/qgslayoutitemlabel.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ void QgsLayoutItemLabel::refreshExpressionContext()
250250
//setup distance area conversion
251251
if ( layer )
252252
{
253-
mDistanceArea->setSourceCrs( layer->crs() );
253+
mDistanceArea->setSourceCrs( layer->crs(), mLayout->project()->transformContext() );
254254
}
255255
else
256256
{

src/core/layout/qgslayoutitemscalebar.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ double QgsLayoutItemScaleBar::mapWidth() const
301301
else
302302
{
303303
QgsDistanceArea da;
304-
da.setSourceCrs( mMap->crs() );
304+
da.setSourceCrs( mMap->crs(), mLayout->project()->transformContext() );
305305
da.setEllipsoid( mLayout->project()->ellipsoid() );
306306

307307
QgsUnitTypes::DistanceUnit units = da.lengthUnits();

src/core/processing/qgsprocessingcontext.h

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ class CORE_EXPORT QgsProcessingContext
7474
{
7575
mFlags = other.mFlags;
7676
mProject = other.mProject;
77+
mTransformContext = other.mTransformContext;
7778
mExpressionContext = other.mExpressionContext;
7879
mInvalidGeometryCallback = other.mInvalidGeometryCallback;
7980
mInvalidGeometryCheck = other.mInvalidGeometryCheck;

src/core/qgsdistancearea.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ QgsDistanceArea::QgsDistanceArea()
4444
mSemiMajor = -1.0;
4545
mSemiMinor = -1.0;
4646
mInvFlattening = -1.0;
47-
setSourceCrs( QgsCoordinateReferenceSystem::fromSrsId( GEOCRS_ID ) ); // WGS 84
47+
QgsCoordinateTransformContext context; // this is ok - by default we have a source/dest of WGS84, so no reprojection takes place
48+
setSourceCrs( QgsCoordinateReferenceSystem::fromSrsId( GEOCRS_ID ), context ); // WGS 84
4849
setEllipsoid( GEO_NONE );
4950
}
5051

@@ -53,8 +54,9 @@ bool QgsDistanceArea::willUseEllipsoid() const
5354
return mEllipsoid != GEO_NONE;
5455
}
5556

56-
void QgsDistanceArea::setSourceCrs( const QgsCoordinateReferenceSystem &srcCRS )
57+
void QgsDistanceArea::setSourceCrs( const QgsCoordinateReferenceSystem &srcCRS, const QgsCoordinateTransformContext &context )
5758
{
59+
mCoordTransform.setContext( context );
5860
mCoordTransform.setSourceCrs( srcCRS );
5961
}
6062

0 commit comments

Comments
 (0)