QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Types | Public Slots | Signals | Public Member Functions | Static Public Member Functions | List of all members
QgsCoordinateTransform Class Reference

Class for doing transforms between two map coordinate systems. More...

#include <qgscoordinatetransform.h>

Inheritance diagram for QgsCoordinateTransform:
Inheritance graph
[legend]

Public Types

enum  TransformDirection { ForwardTransform, ReverseTransform }
 Enum used to indicate the direction (forward or inverse) of the transform. More...
 

Public Slots

void initialise ()
 initialise is used to actually create the Transformer instance More...
 
bool readXML (QDomNode &theNode)
 
bool writeXML (QDomNode &theNode, QDomDocument &theDoc)
 

Signals

void invalidTransformInput () const
 Signal when an invalid pj_transform() has occured. More...
 

Public Member Functions

 QgsCoordinateTransform ()
 
 QgsCoordinateTransform (const QgsCoordinateReferenceSystem &theSource, const QgsCoordinateReferenceSystem &theDest)
 Constructs a QgsCoordinateTransform using QgsCoordinateReferenceSystem objects. More...
 
 QgsCoordinateTransform (long theSourceSrsId, long theDestSrsId)
 Constructs a QgsCoordinateTransform using CRS ID of source and destination CRS. More...
 
 QgsCoordinateTransform (QString theSourceWkt, QString theDestWkt)
 
 QgsCoordinateTransform (long theSourceSrid, QString theDestWkt, QgsCoordinateReferenceSystem::CrsType theSourceCRSType=QgsCoordinateReferenceSystem::PostgisCrsId)
 
 ~QgsCoordinateTransform ()
 destructor More...
 
QgsCoordinateTransformclone () const
 
void setSourceCrs (const QgsCoordinateReferenceSystem &theCRS)
 
void setDestCRS (const QgsCoordinateReferenceSystem &theCRS)
 
const
QgsCoordinateReferenceSystem
sourceCrs () const
 
const
QgsCoordinateReferenceSystem
destCRS () const
 
QgsPoint transform (const QgsPoint p, TransformDirection direction=ForwardTransform) const
 
QgsPoint transform (const double x, const double y, TransformDirection direction=ForwardTransform) const
 
QgsRectangle transformBoundingBox (const QgsRectangle theRect, TransformDirection direction=ForwardTransform, const bool handle180Crossover=false) const
 
void transformInPlace (double &x, double &y, double &z, TransformDirection direction=ForwardTransform) const
 
void transformInPlace (QVector< double > &x, QVector< double > &y, QVector< double > &z, TransformDirection direction=ForwardTransform) const
 
void transformPolygon (QPolygonF &poly, TransformDirection direction=ForwardTransform) const
 
QgsRectangle transform (const QgsRectangle theRect, TransformDirection direction=ForwardTransform) const
 
void transformCoords (const int &numPoint, double *x, double *y, double *z, TransformDirection direction=ForwardTransform) const
 
bool isInitialised () const
 
bool isShortCircuited ()
 
void setDestCRSID (long theCRSID)
 
int sourceDatumTransform () const
 
void setSourceDatumTransform (int dt)
 
int destinationDatumTransform () const
 
void setDestinationDatumTransform (int dt)
 

Static Public Member Functions

static QList< QList< int > > datumTransformations (const QgsCoordinateReferenceSystem &srcCRS, const QgsCoordinateReferenceSystem &destCRS)
 Returns list of datum transformations for the given src and dest CRS. More...
 
static QString datumTransformString (int datumTransform)
 
static bool datumTransformCrsInfo (int datumTransform, int &epsgNr, QString &srcProjection, QString &dstProjection, QString &remarks, QString &scope, bool &preferred, bool &deprecated)
 Gets name of source and dest geographical CRS (to show in a tooltip) More...
 

Detailed Description

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.

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 layers coordinate system to the map canvas.

Constructor & Destructor Documentation

QgsCoordinateTransform::QgsCoordinateTransform ( )

Default constructor. Make sure you use initialised() manually if you use this one!

QgsCoordinateTransform::QgsCoordinateTransform ( const QgsCoordinateReferenceSystem theSource,
const QgsCoordinateReferenceSystem theDest 
)

Constructs a QgsCoordinateTransform using QgsCoordinateReferenceSystem objects.

Parameters
theSourceCRS, typically of the layer's coordinate system
theDestCRS, typically of the map canvas coordinate system
QgsCoordinateTransform::QgsCoordinateTransform ( long  theSourceSrsId,
long  theDestSrsId 
)

Constructs a QgsCoordinateTransform using CRS ID of source and destination CRS.

QgsCoordinateTransform::QgsCoordinateTransform ( QString  theSourceWkt,
QString  theDestWkt 
)

Constructs a QgsCoordinateTransform using the Well Known Text representation of the layer and map canvas coordinate systems

Parameters
theSourceWktWkt, typically of the layer's coordinate system
theDestWktWkt, typically of the map canvas coordinate system
QgsCoordinateTransform::QgsCoordinateTransform ( long  theSourceSrid,
QString  theDestWkt,
QgsCoordinateReferenceSystem::CrsType  theSourceCRSType = QgsCoordinateReferenceSystem::PostgisCrsId 
)

Constructs a QgsCoordinateTransform using a Spatial Reference Id of the layer and map canvas coordinate system as Wkt

Parameters
theSourceSridSpatial Ref Id of the layer's coordinate system
theDestWktWkt of the map canvas coordinate system
theSourceCRSTypeOn of the enum members defined in QgsCoordinateReferenceSystem::CrsType
QgsCoordinateTransform::~QgsCoordinateTransform ( )

destructor

Member Function Documentation

QgsCoordinateTransform * QgsCoordinateTransform::clone ( ) const
QList< QList< int > > QgsCoordinateTransform::datumTransformations ( const QgsCoordinateReferenceSystem srcCRS,
const QgsCoordinateReferenceSystem destCRS 
)
static

Returns list of datum transformations for the given src and dest CRS.

Note
not available in python bindings
bool QgsCoordinateTransform::datumTransformCrsInfo ( int  datumTransform,
int &  epsgNr,
QString &  srcProjection,
QString &  dstProjection,
QString &  remarks,
QString &  scope,
bool &  preferred,
bool &  deprecated 
)
static

Gets name of source and dest geographical CRS (to show in a tooltip)

Returns
epsgNr epsg code of the transformation (or 0 if not in epsg db)
QString QgsCoordinateTransform::datumTransformString ( int  datumTransform)
static
const QgsCoordinateReferenceSystem& QgsCoordinateTransform::destCRS ( ) const
inline

Get the QgsCoordinateReferenceSystem representation of the map canvas coordinate system

Returns
QgsCoordinateReferenceSystem of the map canvas coordinate system
int QgsCoordinateTransform::destinationDatumTransform ( ) const
inline
void QgsCoordinateTransform::initialise ( )
slot

initialise is used to actually create the Transformer instance

void QgsCoordinateTransform::invalidTransformInput ( ) const
signal

Signal when an invalid pj_transform() has occured.

bool QgsCoordinateTransform::isInitialised ( ) const
inline

Flag to indicate whether the coordinate systems have been initialised

Returns
true if initialised, otherwise false
bool QgsCoordinateTransform::isShortCircuited ( )
inline

See if the transform short circuits because src and dest are equivalent

Returns
bool True if it short circuits
bool QgsCoordinateTransform::readXML ( QDomNode &  theNode)
slot

Restores state from the given Dom node.

Parameters
theNodeThe node from which state will be restored
Returns
bool True on success, False on failure
void QgsCoordinateTransform::setDestCRS ( const QgsCoordinateReferenceSystem theCRS)

Mutator for dest QgsCoordinateReferenceSystem

Parameters
theCRSof the destination coordinate system
void QgsCoordinateTransform::setDestCRSID ( long  theCRSID)

Change the destination coordinate system by passing it a qgis srsid A QGIS srsid is a unique key value to an entry on the tbl_srs in the srs.db sqlite database.

Note
This slot will usually be called if the project properties change and a different coordinate system is selected.
This coord transform will be reinitialised when this slot is called to check if short circuiting is needed or not etc.
Parameters
theCRSID- A long representing the srsid of the srs to be used

todo Add some logic here to determine if the srsid is a system or user one

void QgsCoordinateTransform::setDestinationDatumTransform ( int  dt)
inline
void QgsCoordinateTransform::setSourceCrs ( const QgsCoordinateReferenceSystem theCRS)

Set the source (layer) QgsCoordinateReferenceSystem

Parameters
theCRSQgsCoordinateReferenceSystem representation of the layer's coordinate system
void QgsCoordinateTransform::setSourceDatumTransform ( int  dt)
inline
const QgsCoordinateReferenceSystem& QgsCoordinateTransform::sourceCrs ( ) const
inline

Get the QgsCoordinateReferenceSystem representation of the layer's coordinate system

Returns
QgsCoordinateReferenceSystem of the layer's coordinate system
int QgsCoordinateTransform::sourceDatumTransform ( ) const
inline
QgsPoint QgsCoordinateTransform::transform ( const QgsPoint  p,
TransformDirection  direction = ForwardTransform 
) const

Transform the point from Source Coordinate System to Destination Coordinate System If the direction is ForwardTransform then coordinates are transformed from layer CS –> map canvas CS, otherwise points are transformed from map canvas CS to layerCS.

Parameters
pPoint to transform
directionTransformDirection (defaults to ForwardTransform)
Returns
QgsPoint in Destination Coordinate System
QgsPoint QgsCoordinateTransform::transform ( const double  x,
const double  y = 0,
TransformDirection  direction = ForwardTransform 
) const

Transform the point specified by x,y from Source Coordinate System to Destination Coordinate System If the direction is ForwardTransform then coordinates are transformed from layer CS –> map canvas CS, otherwise points are transformed from map canvas CS to layerCS.

Parameters
xx cordinate of point to transform
yy coordinate of point to transform
directionTransformDirection (defaults to ForwardTransform)
Returns
QgsPoint in Destination Coordinate System
QgsRectangle QgsCoordinateTransform::transform ( const QgsRectangle  theRect,
TransformDirection  direction = ForwardTransform 
) const

Transform a QgsRectangle to the dest Coordinate system If the direction is ForwardTransform then coordinates are transformed from layer CS –> map canvas CS, otherwise points are transformed from map canvas CS to layerCS.

Parameters
theRectrect to transform
directionTransformDirection (defaults to ForwardTransform)
Returns
QgsRectangle in Destination Coordinate System
QgsRectangle QgsCoordinateTransform::transformBoundingBox ( const QgsRectangle  theRect,
TransformDirection  direction = ForwardTransform,
const bool  handle180Crossover = false 
) const

Transform a QgsRectangle to the dest Coordinate system If the direction is ForwardTransform then coordinates are transformed from layer CS –> map canvas CS, otherwise points are transformed from map canvas CS to layerCS. It assumes that rect is a bounding box, and creates a bounding box in the proejcted CS, so that all points in source rectangle is within returned rectangle.

Parameters
theRectrect to transform
directionTransformDirection (defaults to ForwardTransform)
handle180Crossoverset to true if destination crs is geographic and handling of extents crossing the 180 degree longitude line is required
Returns
QgsRectangle in Destination Coordinate System
void QgsCoordinateTransform::transformCoords ( const int &  numPoint,
double *  x,
double *  y,
double *  z,
TransformDirection  direction = ForwardTransform 
) const

Transform an array of coordinates to a different Coordinate System If the direction is ForwardTransform then coordinates are transformed from layer CS –> map canvas CS, otherwise points are transformed from map canvas CS to layerCS.

Parameters
numPointnumber of coordinates in arrays
xarray of x coordinates to transform
yarray of y coordinates to transform
zarray of z coordinates to transform
directionTransformDirection (defaults to ForwardTransform)
Returns
QgsRectangle in Destination Coordinate System
void QgsCoordinateTransform::transformInPlace ( double &  x,
double &  y,
double &  z,
TransformDirection  direction = ForwardTransform 
) const
void QgsCoordinateTransform::transformInPlace ( QVector< double > &  x,
QVector< double > &  y,
QVector< double > &  z,
TransformDirection  direction = ForwardTransform 
) const
Note
not available in python bindings
void QgsCoordinateTransform::transformPolygon ( QPolygonF &  poly,
TransformDirection  direction = ForwardTransform 
) const
bool QgsCoordinateTransform::writeXML ( QDomNode &  theNode,
QDomDocument &  theDoc 
)
slot

Stores state to the given Dom node in the given document

Parameters
theNodeThe node in which state will be restored
theDocThe document in which state will be stored
Returns
bool True on success, False on failure

The documentation for this class was generated from the following files: