Skip to content

Commit 1422d53

Browse files
committedDec 15, 2017
Improve caching of transforms
1 parent 0a9c107 commit 1422d53

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed
 

‎src/core/qgscoordinatetransform.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ QgsCoordinateTransform::QgsCoordinateTransform()
5252
QgsCoordinateTransform::QgsCoordinateTransform( const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination )
5353
{
5454
d = new QgsCoordinateTransformPrivate( source, destination, QgsCoordinateTransformContext() );
55+
56+
if ( !d->mSourceCRS.isValid() || !d->mDestCRS.isValid() )
57+
return;
58+
5559
if ( !setFromCache( d->mSourceCRS, d->mDestCRS, d->mSourceDatumTransform, d->mDestinationDatumTransform ) )
5660
{
5761
d->initialize();
@@ -65,6 +69,10 @@ QgsCoordinateTransform::QgsCoordinateTransform( const QgsCoordinateReferenceSyst
6569
#ifdef QGISDEBUG
6670
d->mHasContext = true;
6771
#endif
72+
73+
if ( !d->mSourceCRS.isValid() || !d->mDestCRS.isValid() )
74+
return;
75+
6876
if ( !setFromCache( d->mSourceCRS, d->mDestCRS, d->mSourceDatumTransform, d->mDestinationDatumTransform ) )
6977
{
7078
d->initialize();
@@ -78,6 +86,10 @@ QgsCoordinateTransform::QgsCoordinateTransform( const QgsCoordinateReferenceSyst
7886
#ifdef QGISDEBUG
7987
d->mHasContext = true;
8088
#endif
89+
90+
if ( !d->mSourceCRS.isValid() || !d->mDestCRS.isValid() )
91+
return;
92+
8193
if ( !setFromCache( d->mSourceCRS, d->mDestCRS, d->mSourceDatumTransform, d->mDestinationDatumTransform ) )
8294
{
8395
d->initialize();
@@ -91,6 +103,10 @@ QgsCoordinateTransform::QgsCoordinateTransform( const QgsCoordinateReferenceSyst
91103
#ifdef QGISDEBUG
92104
d->mHasContext = true; // not strictly true, but we don't need to worry if datums have been explicitly set
93105
#endif
106+
107+
if ( !d->mSourceCRS.isValid() || !d->mDestCRS.isValid() )
108+
return;
109+
94110
if ( !setFromCache( d->mSourceCRS, d->mDestCRS, d->mSourceDatumTransform, d->mDestinationDatumTransform ) )
95111
{
96112
d->initialize();
@@ -115,6 +131,9 @@ void QgsCoordinateTransform::setSourceCrs( const QgsCoordinateReferenceSystem &c
115131
{
116132
d.detach();
117133
d->mSourceCRS = crs;
134+
if ( !d->mSourceCRS.isValid() || !d->mDestCRS.isValid() )
135+
return;
136+
118137
d->calculateTransforms();
119138
if ( !setFromCache( d->mSourceCRS, d->mDestCRS, d->mSourceDatumTransform, d->mDestinationDatumTransform ) )
120139
{
@@ -126,6 +145,9 @@ void QgsCoordinateTransform::setDestinationCrs( const QgsCoordinateReferenceSyst
126145
{
127146
d.detach();
128147
d->mDestCRS = crs;
148+
if ( !d->mSourceCRS.isValid() || !d->mDestCRS.isValid() )
149+
return;
150+
129151
d->calculateTransforms();
130152
if ( !setFromCache( d->mSourceCRS, d->mDestCRS, d->mSourceDatumTransform, d->mDestinationDatumTransform ) )
131153
{
@@ -141,6 +163,9 @@ void QgsCoordinateTransform::setContext( const QgsCoordinateTransformContext &co
141163
#ifdef QGISDEBUG
142164
d->mHasContext = true;
143165
#endif
166+
if ( !d->mSourceCRS.isValid() || !d->mDestCRS.isValid() )
167+
return;
168+
144169
d->calculateTransforms();
145170
if ( !setFromCache( d->mSourceCRS, d->mDestCRS, d->mSourceDatumTransform, d->mDestinationDatumTransform ) )
146171
{

‎src/gui/qgsdatumtransformdialog.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ class GUI_EXPORT QgsDatumTransformDialog : public QDialog, private Ui::QgsDatumT
3333
{
3434
Q_OBJECT
3535
public:
36+
37+
/**
38+
* Constructor for QgsDatumTransformDialog.
39+
*/
3640
QgsDatumTransformDialog( const QList< QList< int > > &dt, QWidget *parent = nullptr, Qt::WindowFlags f = nullptr );
3741
~QgsDatumTransformDialog();
3842

0 commit comments

Comments
 (0)
Please sign in to comment.