QGIS API Documentation
3.6.0-Noosa (5873452)
|
Class for doing transforms between two map coordinate systems. More...
#include <qgscoordinatetransform.h>
Public Types | |
enum | TransformDirection { ForwardTransform, ReverseTransform } |
Enum used to indicate the direction (forward or inverse) of the transform. More... | |
Public Member Functions | |
QgsCoordinateTransform () | |
Default constructor, creates an invalid QgsCoordinateTransform. More... | |
Q_DECL_DEPRECATED | QgsCoordinateTransform (const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination) |
Constructs a QgsCoordinateTransform using QgsCoordinateReferenceSystem objects. More... | |
QgsCoordinateTransform (const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination, const QgsCoordinateTransformContext &context) | |
Constructs a QgsCoordinateTransform to transform from the source to destination coordinate reference system. More... | |
QgsCoordinateTransform (const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination, const QgsProject *project) | |
Constructs a QgsCoordinateTransform to transform from the source to destination coordinate reference system, when used with the given project. More... | |
QgsCoordinateTransform (const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination, int sourceDatumTransformId, int destinationDatumTransformId) | |
Constructs a QgsCoordinateTransform to transform from the source to destination coordinate reference system, with the specified datum transforms (see QgsDatumTransform). More... | |
QgsCoordinateTransform (const QgsCoordinateTransform &o) | |
Copy constructor. More... | |
~QgsCoordinateTransform () | |
QgsCoordinateTransformContext | context () const |
Returns the context in which the coordinate transform will be calculated. More... | |
QgsCoordinateReferenceSystem | destinationCrs () const |
Returns the destination coordinate reference system, which the transform will transform coordinates to. More... | |
int | destinationDatumTransformId () const |
Returns the ID of the datum transform to use when projecting to the destination CRS. More... | |
bool | isShortCircuited () const |
Returns true if the transform short circuits because the source and destination are equivalent. More... | |
bool | isValid () const |
Returns true if the coordinate transform is valid, ie both the source and destination CRS have been set and are valid. More... | |
QgsCoordinateTransform & | operator= (const QgsCoordinateTransform &o) |
Assignment operator. More... | |
double | scaleFactor (const QgsRectangle &referenceExtent) const |
Computes an estimated conversion factor between source and destination units: More... | |
void | setContext (const QgsCoordinateTransformContext &context) |
Sets the context in which the coordinate transform should be calculated. More... | |
void | setDestinationCrs (const QgsCoordinateReferenceSystem &crs) |
Sets the destination coordinate reference system. More... | |
void | setDestinationDatumTransformId (int datumId) |
Sets the datumId ID of the datum transform to use when projecting to the destination CRS. More... | |
void | setSourceCrs (const QgsCoordinateReferenceSystem &crs) |
Sets the source coordinate reference system. More... | |
void | setSourceDatumTransformId (int datumId) |
Sets the datumId ID of the datum transform to use when projecting from the source CRS. More... | |
QgsCoordinateReferenceSystem | sourceCrs () const |
Returns the source coordinate reference system, which the transform will transform coordinates from. More... | |
int | sourceDatumTransformId () const |
Returns the ID of the datum transform to use when projecting from the source CRS. More... | |
QgsPointXY | transform (const QgsPointXY &point, TransformDirection direction=ForwardTransform) const SIP_THROW(QgsCsException) |
Transform the point from the source CRS to the destination CRS. More... | |
QgsPointXY | transform (double x, double y, TransformDirection direction=ForwardTransform) const |
Transform the point specified by x,y from the source CRS to the destination CRS. More... | |
QgsRectangle | transform (const QgsRectangle &rectangle, TransformDirection direction=ForwardTransform) const SIP_THROW(QgsCsException) |
Transforms a rectangle to the destination CRS. More... | |
QgsRectangle | transformBoundingBox (const QgsRectangle &rectangle, TransformDirection direction=ForwardTransform, bool handle180Crossover=false) const SIP_THROW(QgsCsException) |
Transforms a rectangle from the source CRS to the destination CRS. More... | |
void | transformCoords (int numPoint, double *x, double *y, double *z, TransformDirection direction=ForwardTransform) const SIP_THROW(QgsCsException) |
Transform an array of coordinates to the destination CRS. More... | |
void | transformInPlace (double &x, double &y, double &z, TransformDirection direction=ForwardTransform) const SIP_THROW(QgsCsException) |
Transforms an array of x, y and z double coordinates in place, from the source CRS to the destination CRS. More... | |
void | transformInPlace (float &x, float &y, double &z, TransformDirection direction=ForwardTransform) const |
Transforms an array of x, y and z float coordinates in place, from the source CRS to the destination CRS. More... | |
void | transformInPlace (float &x, float &y, float &z, TransformDirection direction=ForwardTransform) const |
Transforms an array of x, y and z float coordinates in place, from the source CRS to the destination CRS. More... | |
void | transformInPlace (QVector< float > &x, QVector< float > &y, QVector< float > &z, TransformDirection direction=ForwardTransform) const |
Transforms a vector of x, y and z float coordinates in place, from the source CRS to the destination CRS. More... | |
void | transformInPlace (QVector< double > &x, QVector< double > &y, QVector< double > &z, TransformDirection direction=ForwardTransform) const |
Transforms a vector of x, y and z double coordinates in place, from the source CRS to the destination CRS. More... | |
void | transformPolygon (QPolygonF &polygon, TransformDirection direction=ForwardTransform) const SIP_THROW(QgsCsException) |
Transforms a polygon to the destination coordinate system. More... | |
Static Public Member Functions | |
static void | invalidateCache () |
Clears the internal cache used to initialize QgsCoordinateTransform objects. More... | |
Class for doing transforms between two map coordinate systems.
This class can convert map coordinates to a different coordinate reference system. It is normally associated with a map layer and is used to transform between the layer's coordinate system and the coordinate system of the map canvas, although it can be used in a more general sense to transform coordinates.
When used to transform between a layer and the map canvas, all references to source and destination coordinate systems refer to layer and map canvas respectively. All operations are from the perspective of the layer. For example, a forward transformation transforms coordinates from the layer's coordinate system to the map canvas.
Definition at line 52 of file qgscoordinatetransform.h.
Enum used to indicate the direction (forward or inverse) of the transform.
Enumerator | |
---|---|
ForwardTransform | Transform from source to destination CRS. |
ReverseTransform | Transform from destination to source CRS. |
Definition at line 58 of file qgscoordinatetransform.h.
QgsCoordinateTransform::QgsCoordinateTransform | ( | ) |
Default constructor, creates an invalid QgsCoordinateTransform.
Definition at line 50 of file qgscoordinatetransform.cpp.
|
explicit |
Constructs a QgsCoordinateTransform using QgsCoordinateReferenceSystem objects.
source | source CRS, typically of the layer's coordinate system |
destination | CRS, typically of the map canvas coordinate system 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. |
Definition at line 55 of file qgscoordinatetransform.cpp.
|
explicit |
Constructs a QgsCoordinateTransform to transform from the source to destination coordinate reference system.
The context argument specifies the context under which the transform will be applied, and is used for calculating necessary datum transforms to utilize.
Python scripts should generally use the constructor variant which accepts a QgsProject instance instead of this constructor.
Definition at line 69 of file qgscoordinatetransform.cpp.
|
explicit |
Constructs a QgsCoordinateTransform to transform from the source to destination coordinate reference system, when used with the given project.
No reference to project is stored or utilized outside of the constructor, and it is used to retrieve the project's transform context only.
Python scripts should utilize the QgsProject.instance() project instance when creating QgsCoordinateTransform. This will ensure that any datum transforms defined in the project will be correctly respected during coordinate transforms. E.g.
Definition at line 87 of file qgscoordinatetransform.cpp.
|
explicit |
Constructs a QgsCoordinateTransform to transform from the source to destination coordinate reference system, with the specified datum transforms (see QgsDatumTransform).
Definition at line 106 of file qgscoordinatetransform.cpp.
QgsCoordinateTransform::QgsCoordinateTransform | ( | const QgsCoordinateTransform & | o | ) |
Copy constructor.
Definition at line 123 of file qgscoordinatetransform.cpp.
QgsCoordinateTransform::~QgsCoordinateTransform | ( | ) |
Definition at line 142 of file qgscoordinatetransform.cpp.
QgsCoordinateTransformContext QgsCoordinateTransform::context | ( | ) | const |
Returns the context in which the coordinate transform will be calculated.
Definition at line 191 of file qgscoordinatetransform.cpp.
QgsCoordinateReferenceSystem QgsCoordinateTransform::destinationCrs | ( | ) | const |
Returns the destination coordinate reference system, which the transform will transform coordinates to.
Definition at line 201 of file qgscoordinatetransform.cpp.
int QgsCoordinateTransform::destinationDatumTransformId | ( | ) | const |
Returns the ID of the datum transform to use when projecting to the destination CRS.
This is usually calculated automatically from the transform's QgsCoordinateTransformContext, but can be manually overwritten by a call to setDestinationDatumTransformId().
Definition at line 787 of file qgscoordinatetransform.cpp.
|
static |
Clears the internal cache used to initialize QgsCoordinateTransform objects.
This should be called whenever the srs database has been modified in order to ensure that outdated CRS transforms are not created.
Definition at line 798 of file qgscoordinatetransform.cpp.
bool QgsCoordinateTransform::isShortCircuited | ( | ) | const |
Returns true if the transform short circuits because the source and destination are equivalent.
Definition at line 717 of file qgscoordinatetransform.cpp.
bool QgsCoordinateTransform::isValid | ( | ) | const |
Returns true if the coordinate transform is valid, ie both the source and destination CRS have been set and are valid.
Definition at line 712 of file qgscoordinatetransform.cpp.
QgsCoordinateTransform & QgsCoordinateTransform::operator= | ( | const QgsCoordinateTransform & | o | ) |
Assignment operator.
Definition at line 132 of file qgscoordinatetransform.cpp.
double QgsCoordinateTransform::scaleFactor | ( | const QgsRectangle & | referenceExtent | ) | const |
Computes an estimated conversion factor between source and destination units:
sourceUnits * scaleFactor = destinationUnits
referenceExtent | A reference extent based on which to perform the computation |
Definition at line 805 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::setContext | ( | const QgsCoordinateTransformContext & | context | ) |
Sets the context in which the coordinate transform should be calculated.
Definition at line 173 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::setDestinationCrs | ( | const QgsCoordinateReferenceSystem & | crs | ) |
Sets the destination coordinate reference system.
crs | CRS to transform coordinates to |
Definition at line 158 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::setDestinationDatumTransformId | ( | int | datumId | ) |
Sets the datumId ID of the datum transform to use when projecting to the destination CRS.
This is usually calculated automatically from the transform's QgsCoordinateTransformContext. Calling this method will overwrite any automatically calculated datum transform.
Definition at line 792 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::setSourceCrs | ( | const QgsCoordinateReferenceSystem & | crs | ) |
Sets the source coordinate reference system.
crs | CRS to transform coordinates from |
Definition at line 144 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::setSourceDatumTransformId | ( | int | datumId | ) |
Sets the datumId ID of the datum transform to use when projecting from the source CRS.
This is usually calculated automatically from the transform's QgsCoordinateTransformContext. Calling this method will overwrite any automatically calculated datum transform.
Definition at line 781 of file qgscoordinatetransform.cpp.
QgsCoordinateReferenceSystem QgsCoordinateTransform::sourceCrs | ( | ) | const |
Returns the source coordinate reference system, which the transform will transform coordinates from.
Definition at line 196 of file qgscoordinatetransform.cpp.
int QgsCoordinateTransform::sourceDatumTransformId | ( | ) | const |
Returns the ID of the datum transform to use when projecting from the source CRS.
This is usually calculated automatically from the transform's QgsCoordinateTransformContext, but can be manually overwritten by a call to setSourceDatumTransformId().
Definition at line 776 of file qgscoordinatetransform.cpp.
QgsPointXY QgsCoordinateTransform::transform | ( | const QgsPointXY & | point, |
TransformDirection | direction = ForwardTransform |
||
) | const |
Transform the point from the source CRS to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS.
point | point to transform |
direction | transform direction (defaults to ForwardTransform) |
Definition at line 206 of file qgscoordinatetransform.cpp.
QgsPointXY QgsCoordinateTransform::transform | ( | double | x, |
double | y = 0.0 , |
||
TransformDirection | direction = ForwardTransform |
||
) | const |
Transform the point specified by x,y from the source CRS to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS.
x | x coordinate of point to transform |
y | y coordinate of point to transform |
direction | transform direction (defaults to ForwardTransform) |
Definition at line 230 of file qgscoordinatetransform.cpp.
QgsRectangle QgsCoordinateTransform::transform | ( | const QgsRectangle & | rectangle, |
TransformDirection | direction = ForwardTransform |
||
) | const |
Transforms a rectangle to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS.
rectangle | rectangle to transform |
direction | transform direction (defaults to ForwardTransform) |
Definition at line 244 of file qgscoordinatetransform.cpp.
QgsRectangle QgsCoordinateTransform::transformBoundingBox | ( | const QgsRectangle & | rectangle, |
TransformDirection | direction = ForwardTransform , |
||
bool | handle180Crossover = false |
||
) | const |
Transforms a rectangle from the source CRS to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS. This method assumes that the rectangle is a bounding box, and creates a bounding box in the projected CRS, such that all points from the source rectangle are within the returned rectangle.
rectangle | rectangle to transform |
direction | transform direction (defaults to ForwardTransform) |
handle180Crossover | set to true if destination CRS is geographic and handling of extents crossing the 180 degree longitude line is required |
Definition at line 474 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::transformCoords | ( | int | numPoint, |
double * | x, | ||
double * | y, | ||
double * | z, | ||
TransformDirection | direction = ForwardTransform |
||
) | const |
Transform an array of coordinates to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS.
numPoint | number of coordinates in arrays |
x | array of x coordinates to transform |
y | array of y coordinates to transform |
z | array of z coordinates to transform |
direction | transform direction (defaults to ForwardTransform) |
Definition at line 594 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::transformInPlace | ( | double & | x, |
double & | y, | ||
double & | z, | ||
TransformDirection | direction = ForwardTransform |
||
) | const |
Transforms an array of x, y and z double coordinates in place, from the source CRS to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS.
x | array of x coordinates of points to transform |
y | array of y coordinates of points to transform |
z | array of z coordinates of points to transform. The z coordinates of the points must represent height relative to the vertical datum of the source CRS (generally ellipsoidal heights) and must be expressed in its vertical units (generally meters) |
direction | transform direction (defaults to ForwardTransform) |
Definition at line 280 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::transformInPlace | ( | float & | x, |
float & | y, | ||
double & | z, | ||
TransformDirection | direction = ForwardTransform |
||
) | const |
Transforms an array of x, y and z float coordinates in place, from the source CRS to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS.
x | array of x coordinates of points to transform |
y | array of y coordinates of points to transform |
z | array of z coordinates of points to transform. The z coordinates of the points must represent height relative to the vertical datum of the source CRS (generally ellipsoidal heights) and must be expressed in its vertical units (generally meters) |
direction | transform direction (defaults to ForwardTransform) |
Definition at line 301 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::transformInPlace | ( | float & | x, |
float & | y, | ||
float & | z, | ||
TransformDirection | direction = ForwardTransform |
||
) | const |
Transforms an array of x, y and z float coordinates in place, from the source CRS to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS.
x | array of x coordinates of points to transform |
y | array of y coordinates of points to transform |
z | array of z coordinates of points to transform. The z coordinates of the points must represent height relative to the vertical datum of the source CRS (generally ellipsoidal heights) and must be expressed in its vertical units (generally meters) |
direction | transform direction (defaults to ForwardTransform) |
Definition at line 310 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::transformInPlace | ( | QVector< float > & | x, |
QVector< float > & | y, | ||
QVector< float > & | z, | ||
TransformDirection | direction = ForwardTransform |
||
) | const |
Transforms a vector of x, y and z float coordinates in place, from the source CRS to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS.
x | vector of x coordinates of points to transform |
y | vector of y coordinates of points to transform |
z | vector of z coordinates of points to transform. The z coordinates of the points must represent height relative to the vertical datum of the source CRS (generally ellipsoidal heights) and must be expressed in its vertical units (generally meters) |
direction | transform direction (defaults to ForwardTransform) |
Definition at line 413 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::transformInPlace | ( | QVector< double > & | x, |
QVector< double > & | y, | ||
QVector< double > & | z, | ||
TransformDirection | direction = ForwardTransform |
||
) | const |
Transforms a vector of x, y and z double coordinates in place, from the source CRS to the destination CRS.
If the direction is ForwardTransform then coordinates are transformed from source to destination, otherwise points are transformed from destination to source CRS.
x | vector of x coordinates of points to transform |
y | vector of y coordinates of points to transform |
z | vector of z coordinates of points to transform. The z coordinates of the points must represent height relative to the vertical datum of the source CRS (generally ellipsoidal heights) and must be expressed in its vertical units (generally meters) |
direction | transform direction (defaults to ForwardTransform) |
Definition at line 385 of file qgscoordinatetransform.cpp.
void QgsCoordinateTransform::transformPolygon | ( | QPolygonF & | polygon, |
TransformDirection | direction = ForwardTransform |
||
) | const |
Transforms a polygon to the destination coordinate system.
polygon | polygon to transform (occurs in place) |
direction | transform direction (defaults to forward transformation) |
Definition at line 337 of file qgscoordinatetransform.cpp.