Quantum GIS API Documentation  1.7.4
Public Types | Public Slots | Signals | Public Member Functions | Private Member Functions | Private Attributes
QgsCoordinateTransform Class Reference

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

#include <qgscoordinatetransform.h>

Collaboration diagram for QgsCoordinateTransform:
Collaboration graph
[legend]

List of all members.

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 (std::vector< double > &x, std::vector< double > &y, std::vector< double > &z, 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

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

Definition at line 35 of file qgscoordinatetransform.cpp.

References setFinder().

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 44 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 56 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 67 of file qgscoordinatetransform.cpp.

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

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 83 of file qgscoordinatetransform.cpp.

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

destructor

Definition at line 102 of file qgscoordinatetransform.cpp.

References mDestinationProjection, and mSourceProjection.


Member Function Documentation

Get the QgsCoordinateReferenceSystem representation of the map canvas coordinate system

Returns:
QgsCoordinateReferenceSystem of the map canvas coordinate system

Definition at line 120 of file qgscoordinatetransform.h.

Referenced by QgsRasterLayer::draw(), operator<<(), and QgsLabel::renderLabel().

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

Referenced by operator<<().

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

Returns:
bool True if it short circuits

Definition at line 191 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 531 of file qgscoordinatetransform.cpp.

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

Mutator for dest QgsCoordinateReferenceSystem

Parameters:
theCRSof the destination coordinate system

Definition at line 120 of file qgscoordinatetransform.cpp.

References initialise(), and mDestCRS.

Referenced by QgsDistanceArea::setEllipsoid().

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 126 of file qgscoordinatetransform.cpp.

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

Finder for PROJ grid files.

Definition at line 575 of file qgscoordinatetransform.cpp.

References finder().

Referenced by QgsCoordinateTransform().

Set the source (layer) QgsCoordinateReferenceSystem

Parameters:
theCRSQgsCoordinateReferenceSystem representation of the layer's coordinate system

Definition at line 115 of file qgscoordinatetransform.cpp.

References initialise(), and mSourceCRS.

Referenced by QgsDistanceArea::setSourceAuthId(), QgsDistanceArea::setSourceCrs(), and QgsDistanceArea::setSourceEpsgCrsId().

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 operator<<(), and QgsLabel::renderLabel().

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 223 of file qgscoordinatetransform.cpp.

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

Referenced by QgsDistanceArea::bearing(), QgsRasterProjector::calcCP(), QgsRasterProjector::checkCols(), QgsRasterProjector::checkRows(), QgsDistanceArea::measureLine(), QgsDistanceArea::measurePolygon(), QgsLabel::renderLabel(), 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 245 of file qgscoordinatetransform.cpp.

References QgsDebugMsg, and transform().

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 259 of file qgscoordinatetransform.cpp.

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

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 346 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(), and QgsPALObjectPositionManager::findObjectPositions().

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 427 of file qgscoordinatetransform.cpp.

References QgsLogger::critical(), ForwardTransform, invalidTransformInput(), QgsCoordinateReferenceSystem::isValid(), mDestCRS, mDestinationProjection, mSourceCRS, mSourceProjection, QgsDebugMsg, ReverseTransform, and QgsCoordinateReferenceSystem::toProj4().

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

void QgsCoordinateTransform::transformInPlace ( double &  x,
double &  y,
double &  z,
TransformDirection  direction = ForwardTransform 
) const
void QgsCoordinateTransform::transformInPlace ( std::vector< double > &  x,
std::vector< double > &  y,
std::vector< double > &  z,
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 547 of file qgscoordinatetransform.cpp.

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


Member Data Documentation

QgsCoordinateReferenceSystem of the destination (map canvas) coordinate system

Definition at line 246 of file qgscoordinatetransform.h.

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

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

Definition at line 256 of file qgscoordinatetransform.h.

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

flag to show whether the transform is properly initialised or not

Definition at line 236 of file qgscoordinatetransform.h.

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

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

Definition at line 231 of file qgscoordinatetransform.h.

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

QgsCoordinateReferenceSystem of the source (layer) coordinate system

Definition at line 241 of file qgscoordinatetransform.h.

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

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

Definition at line 251 of file qgscoordinatetransform.h.

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


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines