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.
Depending on the os and proj versions, we weren't always getting an
exception when a bad bounding box transform was made. So now we
explicitly check the result, and if everything was invalid
then we also throw an exception.
This makes the behavior consistent across different platforms,
and fixes running the provider tests on non Travis platforms
(highly likely also fixes various issues encountered while running
QGIS)
- isInitialised() has been renamed to isValid()
- theCRS parameter in setSourceCrs has been renamed to 'crs'
- setDestCRS() has been renamed to setDestinationCrs() for consistency
- destCRS() has been renamed to destinationCrs() for consistency
- theSource, theDest, theSourceSrsId, theDestSrsId, theSourceWkt,
theDestWkt, theSourceCRSType parameters in the QgsCoordinateTransform
constructors have been renamed to source, destination, sourceSrsId,
destinationSrsId, sourceWkt, destinationWkt, sourceCrsType respectively
- 'p' argument in transform() has been renamed to 'point', 'theRect' to
'rectangle', 'poly' to 'polygon'
- setDestCRSID has been removed, use setDestinationCrs() instead
- 'theNode', 'theDoc' parameters in readXML and writeXML have been
renamed to 'node' and 'document' respectively
- readXML() and writeXML() have been renamed to readXml() and writeXml()
for consistency
There was no code in core using the signals/slots associated with
QgsCoordinateTransform, and little reason to keep the class a
QObject. Making it not a QObject simplifies code and allows
QgsCoordinateTransform objects to be easily copied and passed
around without complication.