QGIS API Documentation  2.0.1-Dufour
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Types | Public Slots | Signals | Public Member Functions | Private Member Functions | Private Attributes | List of all members
QgsCoordinateTransform Class Reference

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

#include <qgscoordinatetransform.h>

Collaboration diagram for QgsCoordinateTransform:
Collaboration 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
bool readXML (QDomNode &theNode)
bool writeXML (QDomNode &theNode, QDomDocument &theDoc)

Signals

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

Public Member Functions

 QgsCoordinateTransform ()
 QgsCoordinateTransform (const QgsCoordinateReferenceSystem &theSource, const QgsCoordinateReferenceSystem &theDest)
 Constructs a QgsCoordinateTransform using QgsCoordinateReferenceSystem objects.
 QgsCoordinateTransform (long theSourceSrsId, long theDestSrsId)
 Constructs a QgsCoordinateTransform using CRS ID of source and destination CRS.
 QgsCoordinateTransform (QString theSourceWkt, QString theDestWkt)
 QgsCoordinateTransform (long theSourceSrid, QString theDestWkt, QgsCoordinateReferenceSystem::CrsType theSourceCRSType=QgsCoordinateReferenceSystem::PostgisCrsId)
 ~QgsCoordinateTransform ()
 destructor
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
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)

Private Member Functions

void setFinder ()

Private Attributes

bool mShortCircuit
bool mInitialisedFlag
QgsCoordinateReferenceSystem mSourceCRS
QgsCoordinateReferenceSystem mDestCRS
projPJ mSourceProjection
projPJ mDestinationProjection

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.

Definition at line 52 of file qgscoordinatetransform.h.

Member Enumeration Documentation

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 92 of file qgscoordinatetransform.h.

Constructor & Destructor Documentation

QgsCoordinateTransform::QgsCoordinateTransform ( )

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

Definition at line 37 of file qgscoordinatetransform.cpp.

References setFinder().

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

Definition at line 46 of file qgscoordinatetransform.cpp.

References initialise(), mDestCRS, mSourceCRS, and setFinder().

QgsCoordinateTransform::QgsCoordinateTransform ( long  theSourceSrsId,
long  theDestSrsId 
)

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

Definition at line 58 of file qgscoordinatetransform.cpp.

References initialise().

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

Definition at line 69 of file qgscoordinatetransform.cpp.

References QgsCoordinateReferenceSystem::createFromWkt(), initialise(), mDestCRS, mSourceCRS, and setFinder().

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

Definition at line 85 of file qgscoordinatetransform.cpp.

References QgsCoordinateReferenceSystem::createFromId(), QgsCoordinateReferenceSystem::createFromWkt(), initialise(), mDestCRS, mSourceCRS, and setFinder().

QgsCoordinateTransform::~QgsCoordinateTransform ( )

destructor

Definition at line 104 of file qgscoordinatetransform.cpp.

References mDestinationProjection, and mSourceProjection.

Member Function Documentation

const QgsCoordinateReferenceSystem& QgsCoordinateTransform::destCRS ( ) const
inline
void QgsCoordinateTransform::initialise ( )
slot
void QgsCoordinateTransform::invalidTransformInput ( ) const
signal

Signal when an invalid pj_transform() has occured.

Referenced by transformCoords().

bool QgsCoordinateTransform::isInitialised ( ) const
inline

Flag to indicate whether the coordinate systems have been initialised

Returns
true if initialised, otherwise false

Definition at line 196 of file qgscoordinatetransform.h.

Referenced by operator<<().

bool QgsCoordinateTransform::isShortCircuited ( )
inline

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

Returns
bool True if it short circuits

Definition at line 201 of file qgscoordinatetransform.h.

Referenced by operator<<().

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

Definition at line 658 of file qgscoordinatetransform.cpp.

References initialise(), mDestCRS, mSourceCRS, QgsDebugMsg, and QgsCoordinateReferenceSystem::readXML().

void QgsCoordinateTransform::setDestCRS ( const QgsCoordinateReferenceSystem theCRS)
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

Definition at line 128 of file qgscoordinatetransform.cpp.

References QgsCoordinateReferenceSystem::createFromSrsId(), initialise(), and mDestCRS.

void QgsCoordinateTransform::setFinder ( )
private

Finder for PROJ grid files.

Definition at line 704 of file qgscoordinatetransform.cpp.

References finder().

Referenced by QgsCoordinateTransform().

void QgsCoordinateTransform::setSourceCrs ( const QgsCoordinateReferenceSystem theCRS)
const QgsCoordinateReferenceSystem& QgsCoordinateTransform::sourceCrs ( ) const
inline

Get the QgsCoordinateReferenceSystem representation of the layer's coordinate system

Returns
QgsCoordinateReferenceSystem of the layer's coordinate system

Definition at line 114 of file qgscoordinatetransform.h.

Referenced by QgsDistanceArea::_copy(), QgsDistanceArea::measureLine(), and operator<<().

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

Definition at line 226 of file qgscoordinatetransform.cpp.

References mInitialisedFlag, mShortCircuit, QgsDebugMsg, transformCoords(), QgsPoint::x(), and QgsPoint::y().

Referenced by QgsDistanceArea::bearing(), QgsRasterProjector::calcCP(), QgsRasterProjector::checkCols(), QgsRasterProjector::checkRows(), QgsMapRenderer::layerToMapCoordinates(), QgsMapRenderer::mapToLayerCoordinates(), QgsDistanceArea::measureLine(), QgsDistanceArea::measurePolygon(), QgsLabel::renderLabel(), QgsRasterLayerSaveAsDialog::setResolution(), QgsMapRenderer::splitLayersExtent(), transform(), and transformBoundingBox().

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

Definition at line 249 of file qgscoordinatetransform.cpp.

References QgsDebugMsg, and transform().

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

Definition at line 263 of file qgscoordinatetransform.cpp.

References QgsLogger::debug(), mInitialisedFlag, mShortCircuit, QgsDebugMsg, transformCoords(), QgsRectangle::xMaximum(), QgsRectangle::xMinimum(), QgsRectangle::yMaximum(), and QgsRectangle::yMinimum().

QgsRectangle QgsCoordinateTransform::transformBoundingBox ( 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. 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)
Returns
QgsRectangle in Destination Coordinate System

Definition at line 466 of file qgscoordinatetransform.cpp.

References QgsRectangle::combineExtentWith(), QgsRectangle::height(), QgsRectangle::isEmpty(), mInitialisedFlag, mShortCircuit, QgsDebugMsg, QgsRectangle::setMinimal(), QgsRectangle::toString(), transform(), transformCoords(), QgsRectangle::width(), QgsRectangle::xMinimum(), and QgsRectangle::yMinimum().

Referenced by QgsRasterLayer::draw(), QgsMapRenderer::layerExtentToOutputExtent(), QgsMapRenderer::outputExtentToLayerExtent(), QgsMapRenderer::setDestinationCrs(), QgsRasterLayerSaveAsDialog::setOutputExtent(), and QgsMapRenderer::splitLayersExtent().

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

Definition at line 552 of file qgscoordinatetransform.cpp.

References ForwardTransform, invalidTransformInput(), QgsCoordinateReferenceSystem::isValid(), QgsMessageLog::logMessage(), mDestCRS, mDestinationProjection, mSourceCRS, mSourceProjection, QgsDebugMsg, ReverseTransform, QgsCoordinateReferenceSystem::toProj4(), and tr.

Referenced by transform(), transformBoundingBox(), transformInPlace(), and transformPolygon().

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

Definition at line 365 of file qgscoordinatetransform.cpp.

References mInitialisedFlag, mShortCircuit, QgsDebugMsg, and transformCoords().

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

Definition at line 674 of file qgscoordinatetransform.cpp.

References mDestCRS, mSourceCRS, and QgsCoordinateReferenceSystem::writeXML().

Member Data Documentation

QgsCoordinateReferenceSystem QgsCoordinateTransform::mDestCRS
private

QgsCoordinateReferenceSystem of the destination (map canvas) coordinate system

Definition at line 256 of file qgscoordinatetransform.h.

Referenced by initialise(), QgsCoordinateTransform(), readXML(), setDestCRS(), setDestCRSID(), transformCoords(), and writeXML().

projPJ QgsCoordinateTransform::mDestinationProjection
private

Proj4 data structure of the destination projection (map canvas coordinate system)

Definition at line 266 of file qgscoordinatetransform.h.

Referenced by initialise(), transformCoords(), and ~QgsCoordinateTransform().

bool QgsCoordinateTransform::mInitialisedFlag
private

flag to show whether the transform is properly initialised or not

Definition at line 246 of file qgscoordinatetransform.h.

Referenced by initialise(), transform(), transformBoundingBox(), transformInPlace(), and transformPolygon().

bool QgsCoordinateTransform::mShortCircuit
private

Flag to indicate that the source and destination coordinate systems are equal and not transformation needs to be done

Definition at line 241 of file qgscoordinatetransform.h.

Referenced by initialise(), transform(), transformBoundingBox(), transformInPlace(), and transformPolygon().

QgsCoordinateReferenceSystem QgsCoordinateTransform::mSourceCRS
private

QgsCoordinateReferenceSystem of the source (layer) coordinate system

Definition at line 251 of file qgscoordinatetransform.h.

Referenced by initialise(), QgsCoordinateTransform(), readXML(), setSourceCrs(), transformCoords(), and writeXML().

projPJ QgsCoordinateTransform::mSourceProjection
private

Proj4 data structure of the source projection (layer coordinate system)

Definition at line 261 of file qgscoordinatetransform.h.

Referenced by initialise(), transformCoords(), and ~QgsCoordinateTransform().


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