Skip to content

Commit dcf2062

Browse files
elpasonyalldawson
authored andcommitted
Step2 of coordinate traform context passing: SIP broken
1 parent c21cd35 commit dcf2062

File tree

8 files changed

+109
-18
lines changed

8 files changed

+109
-18
lines changed

python/core/auto_generated/qgsdataprovider.sip.in

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,14 @@ Abstract base class for spatial data provider implementations.
6161
QgsCoordinateTransformContext coordinateTransformContext;
6262
};
6363

64-
QgsDataProvider( const QString &uri = QString(), const QgsDataProvider::ProviderOptions &options = QgsDataProvider::ProviderOptions() );
64+
QgsDataProvider( const QString &uri = QString(), const QgsDataProvider::ProviderOptions &options = QgsDataProvider::ProviderOptions() ):
6565
%Docstring
6666
Create a new dataprovider with the specified in the ``uri``.
6767

6868
Additional creation options are specified within the ``options`` value.
6969
%End
70+
mDataSourceURI( uri ),
71+
mOptions( options );
7072

7173
virtual QgsCoordinateReferenceSystem crs() const = 0;
7274
%Docstring
@@ -386,6 +388,28 @@ Returns ``True`` if metadata was successfully written to the data provider.
386388
.. seealso:: :py:func:`layerMetadata`
387389

388390
.. versionadded:: 3.0
391+
%End
392+
393+
QgsDataProvider::ProviderOptions options() const;
394+
%Docstring
395+
Returns data provider options
396+
397+
.. seealso:: :py:func:`setOptions`
398+
399+
.. seealso:: :py:func:`optionsChanged`
400+
401+
.. versionadded:: 3.10
402+
%End
403+
404+
void setOptions( const QgsDataProvider::ProviderOptions &options );
405+
%Docstring
406+
Sets data provider options to ``options``
407+
408+
.. seealso:: :py:func:`options`
409+
410+
.. seealso:: :py:func:`optionsChanged`
411+
412+
.. versionadded:: 3.10
389413
%End
390414

391415
signals:
@@ -423,6 +447,17 @@ Emitted when the datasource issues a notification.
423447
.. versionadded:: 3.0
424448
%End
425449

450+
void optionsChanged( const QgsDataProvider::ProviderOptions &options );
451+
%Docstring
452+
Emitted when the data provider options has changed
453+
454+
.. seealso:: :py:func:`setOptions`
455+
456+
.. seealso:: :py:func:`options`
457+
458+
.. versionadded:: 3.10
459+
%End
460+
426461

427462
protected:
428463

src/core/qgscoordinatetransformcontext.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class CORE_EXPORT QgsCoordinateTransformContext
7070
*/
7171
QgsCoordinateTransformContext();
7272

73-
~QgsCoordinateTransformContext();
73+
~QgsCoordinateTransformContext() ;
7474

7575
/**
7676
* Copy constructor

src/core/qgsdataprovider.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,14 @@ bool QgsDataProvider::renderInPreview( const PreviewContext &context )
4646
{
4747
return context.lastRenderingTimeMs <= context.maxRenderingTimeMs;
4848
}
49+
50+
QgsDataProvider::ProviderOptions QgsDataProvider::options() const
51+
{
52+
return mOptions;
53+
}
54+
55+
void QgsDataProvider::setOptions( const QgsDataProvider::ProviderOptions &options )
56+
{
57+
mOptions = options;
58+
emit optionsChanged( options );
59+
}

src/core/qgsdataprovider.h

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ class CORE_EXPORT QgsDataProvider : public QObject
9191

9292
/**
9393
* Setting options for creating vector data providers.
94+
*
95+
* \note coordinateTransformContext was added in QGIS 3.10
96+
*
9497
* \since QGIS 3.2
9598
*/
9699
struct ProviderOptions
@@ -103,10 +106,10 @@ class CORE_EXPORT QgsDataProvider : public QObject
103106
*
104107
* Additional creation options are specified within the \a options value.
105108
*/
106-
QgsDataProvider( const QString &uri = QString(), const QgsDataProvider::ProviderOptions &options = QgsDataProvider::ProviderOptions() )
107-
: mDataSourceURI( uri )
109+
QgsDataProvider( const QString &uri = QString(), const QgsDataProvider::ProviderOptions &options = QgsDataProvider::ProviderOptions() ):
110+
mDataSourceURI( uri ),
111+
mOptions( options )
108112
{
109-
Q_UNUSED( options );
110113
}
111114

112115
/**
@@ -523,6 +526,26 @@ class CORE_EXPORT QgsDataProvider : public QObject
523526
*/
524527
virtual bool writeLayerMetadata( const QgsLayerMetadata &metadata ) { Q_UNUSED( metadata ); return false; }
525528

529+
/**
530+
* Returns data provider options
531+
*
532+
* \see setOptions()
533+
* \see optionsChanged()
534+
*
535+
* \since QGIS 3.10
536+
*/
537+
QgsDataProvider::ProviderOptions options() const;
538+
539+
/**
540+
* Sets data provider options to \a options
541+
*
542+
* \see options()
543+
* \see optionsChanged()
544+
*
545+
* \since QGIS 3.10
546+
*/
547+
void setOptions( const QgsDataProvider::ProviderOptions &options );
548+
526549
signals:
527550

528551
/**
@@ -556,6 +579,16 @@ class CORE_EXPORT QgsDataProvider : public QObject
556579
*/
557580
void notify( const QString &msg );
558581

582+
/**
583+
* Emitted when the data provider options has changed
584+
*
585+
* \see setOptions()
586+
* \see options()
587+
*
588+
* \since QGIS 3.10
589+
*/
590+
void optionsChanged( const QgsDataProvider::ProviderOptions &options );
591+
559592

560593
protected:
561594

@@ -582,6 +615,9 @@ class CORE_EXPORT QgsDataProvider : public QObject
582615
QString mDataSourceURI;
583616

584617
QMap< int, QVariant > mProviderProperties;
618+
619+
QgsDataProvider::ProviderOptions mOptions;
620+
585621
};
586622

587623

src/providers/arcgisrest/qgsafsprovider.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,7 @@ QgsAfsProvider::QgsAfsProvider( const QString &uri, const ProviderOptions &optio
117117
if ( mSharedData->mExtent.isEmpty() )
118118
{
119119
mSharedData->mExtent = originalExtent;
120-
Q_NOWARN_DEPRECATED_PUSH
121-
mSharedData->mExtent = QgsCoordinateTransform( extentCrs, mSharedData->mSourceCRS ).transformBoundingBox( mSharedData->mExtent );
122-
Q_NOWARN_DEPRECATED_POP
120+
mSharedData->mExtent = QgsCoordinateTransform( extentCrs, mSharedData->mSourceCRS, options.coordinateTransformContext ).transformBoundingBox( mSharedData->mExtent );
123121
}
124122

125123
QString objectIdFieldName;

src/providers/wms/qgswmscapabilities.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,12 @@ bool QgsWmsSettings::parseUri( const QString &uriString )
160160
// ----------------------
161161

162162

163+
QgsWmsCapabilities::QgsWmsCapabilities( const QgsDataProvider::ProviderOptions &options ):
164+
mOptions( options )
165+
{
166+
167+
}
168+
163169
bool QgsWmsCapabilities::parseResponse( const QByteArray &response, QgsWmsParserSettings settings )
164170
{
165171
mParserSettings = settings;
@@ -828,12 +834,8 @@ void QgsWmsCapabilities::parseLayer( QDomElement const &e, QgsWmsLayerProperty &
828834
try
829835
{
830836
QgsCoordinateReferenceSystem src = QgsCoordinateReferenceSystem::fromOgcWmsCrs( e1.attribute( QStringLiteral( "SRS" ) ) );
831-
832837
QgsCoordinateReferenceSystem dst = QgsCoordinateReferenceSystem::fromOgcWmsCrs( DEFAULT_LATLON_CRS );
833-
834-
Q_NOWARN_DEPRECATED_PUSH
835-
QgsCoordinateTransform ct( src, dst );
836-
Q_NOWARN_DEPRECATED_POP
838+
QgsCoordinateTransform ct( src, dst, mOptions.coordinateTransformContext );
837839
layerProperty.ex_GeographicBoundingBox = ct.transformBoundingBox( layerProperty.ex_GeographicBoundingBox );
838840
}
839841
catch ( QgsCsException &cse )

src/providers/wms/qgswmscapabilities.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
#include "qgsrectangle.h"
2727
#include "qgsrasteriterator.h"
2828
#include "qgsapplication.h"
29+
#include "qgsdataprovider.h"
30+
2931

3032
class QNetworkReply;
3133

@@ -626,7 +628,11 @@ class QgsWmsSettings
626628
class QgsWmsCapabilities
627629
{
628630
public:
629-
QgsWmsCapabilities() = default;
631+
632+
/**
633+
* Constructs a QgsWmsCapabilities object with the given \a options
634+
*/
635+
QgsWmsCapabilities( const QgsDataProvider::ProviderOptions &options = QgsDataProvider::ProviderOptions() );
630636

631637
bool isValid() const { return mValid; }
632638

@@ -759,6 +765,10 @@ class QgsWmsCapabilities
759765
//temporarily caches invert axis setting for each crs
760766
QHash<QString, bool> mCrsInvertAxis;
761767

768+
private:
769+
770+
QgsDataProvider::ProviderOptions mOptions;
771+
762772
friend class QgsWmsProvider;
763773
};
764774

src/providers/wms/qgswmsprovider.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,7 +1193,7 @@ bool QgsWmsProvider::retrieveServerCapabilities( bool forceRefresh )
11931193
return false;
11941194
}
11951195

1196-
QgsWmsCapabilities caps;
1196+
QgsWmsCapabilities caps( options() );
11971197
if ( !caps.parseResponse( downloadCaps.response(), mSettings.parserSettings() ) )
11981198
{
11991199
mErrorFormat = caps.lastErrorFormat();
@@ -1217,9 +1217,8 @@ void QgsWmsProvider::setupXyzCapabilities( const QString &uri )
12171217
QgsDataSourceUri parsedUri;
12181218
parsedUri.setEncodedUri( uri );
12191219

1220-
Q_NOWARN_DEPRECATED_PUSH
1221-
QgsCoordinateTransform ct( QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:4326" ) ), QgsCoordinateReferenceSystem( mSettings.mCrsId ) );
1222-
Q_NOWARN_DEPRECATED_POP
1220+
QgsCoordinateTransform ct( QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:4326" ) ), QgsCoordinateReferenceSystem( mSettings.mCrsId ),
1221+
options().coordinateTransformContext );
12231222

12241223
// the whole world is projected to a square:
12251224
// X going from 180 W to 180 E

0 commit comments

Comments
 (0)