This class defines Universal Transverse Mercator projections, also known as UTM projections. More...
#include <ilviews/maps/projection/unitmerc.h>
Public Member Functions | |
IlvUniversalTransverseMercatorProjection (IlDouble lon) | |
Initializes a new IlvUniversalTransverseMercatorProjection instance and specifies the central meridian. More... | |
IlvUniversalTransverseMercatorProjection (IlUShort zone=30) | |
Initializes a new IlvUniversalTransverseMercatorProjection instance and specifies the UTM zone. More... | |
IlUShort | getZone () const |
Returns the UTM zone to which the projection applies. More... | |
virtual IlBoolean | isSouth () const |
Checks if projection is for applications portraying the southern hemisphere. More... | |
virtual void | setLLCenter (IlDouble, IlDouble) |
Specifies the central meridian and the central parallel (in radian) associated with the projection. More... | |
virtual void | setScaleFactor (IlDouble) |
Sets the scale factor applied to the central meridian. More... | |
void | setSouth (IlBoolean south) |
Sets a false northing for applications portraying the southern hemisphere. More... | |
IlBoolean | setZone (IlUShort zone) |
Sets the UTM zone to which the projection applies. More... | |
virtual void | write (IlvOutputFile &) const |
Saves the parameters of a projection to the specified output file. More... | |
Public Member Functions inherited from IlvTransverseMercatorProjection | |
IlvTransverseMercatorProjection (IlDouble latitudeOfTrueScale=0.) | |
This constructor initializes a new IlvTransverseMercatorProjection instance and sets the latitude of the true scale. More... | |
virtual IlvMapsError | forward (const IlvCoordinate &llIn, IlvCoordinate &xyOut) const |
Converts a latitude and a longitude to Cartesian coordinates (x, y). More... | |
virtual IlvMapsError | forward (const IlvCoordinate &llIn, IlvCoordinate &xyOut) const |
Converts a latitude and a longitude to Cartesian coordinates (x, y). More... | |
virtual IlvMapsError | forward (IlvCoordinate &coords) const |
Projects a latitude and a longitude pair to Cartesian coordinates. More... | |
IlDouble | getScaleFactor () const |
Returns the scale factor applied to the central meridian. More... | |
virtual IlvMapsError | inverse (const IlvCoordinate &xyIn, IlvCoordinate &llOut) const |
Converts the specified coordinate to a latitude and a longitude. More... | |
virtual IlvMapsError | inverse (const IlvCoordinate &xyIn, IlvCoordinate &llOut) const |
Converts the specified coordinate to a latitude and a longitude. More... | |
virtual IlvMapsError | inverse (IlvCoordinate &coords) const |
Invserse-projects Cartesian coordinates to a latitude and a longitude. More... | |
virtual IlvMapsError | setEllipsoid (const IlvEllipsoid &) |
Sets the ellipsoid used for the projection. More... | |
virtual void | setXYOffset (IlDouble x0, IlDouble y0) |
Specifies the false easting and the false northing. More... | |
Public Member Functions inherited from IlvProjection | |
virtual IlvProjection * | copy () const =0 |
Returns a copy of the projection. More... | |
virtual IlvMapsError | forward (IlvCoordinate &coords) const |
Projects a latitude and a longitude pair to Cartesian coordinates. More... | |
IlDouble | getCentralMeridian () const |
Returns the central meridian of the projection. More... | |
IlDouble | getCentralParallel () const |
Returns the central parallel of the projection. More... | |
virtual IlvProjectionClassInfo * | getClassInfo () const |
Returns the class information for the projection. More... | |
const IlvHorizontalDatum * | getDatum (void) const |
Returns the horizontal datum used for the projection. More... | |
const IlvEllipsoid * | getEllipsoid () const |
Returns the ellipsoid used for the projection. More... | |
IlvMapsError | getError () const |
Returns the status of the projection. More... | |
IlDouble | getFalseEasting () const |
Returns the false easting of the projection. More... | |
IlDouble | getFalseNorthing () const |
Returns the false northing of the projection. More... | |
IlvProjectionInterface * | getInterface () |
Returns the interface of the projection. More... | |
IlvCoordinate | getLLCenter (void) const |
Returns the central meridian and the central parallel associated with the projection (0-0 by default). More... | |
IlvProjectionGeometricProperty | getProperty () const |
Returns the geometric property of the projection. More... | |
const IlvUnitConverter * | getUnitConverter () const |
Returns the unit converter. More... | |
IlvCoordinate | getXYOffset () const |
Returns the false easting and the false northing of the projection. More... | |
virtual IlvMapsError | inverse (IlvCoordinate &coords) const |
Invserse-projects Cartesian coordinates to a latitude and a longitude. More... | |
IlBoolean | isBad () const |
Checks for an inconsistent state of the projection. More... | |
IlBoolean | isEllipsoidEnabled () const |
Indicates if non spherical ellipsoids can be used for the projection. More... | |
IlBoolean | isGeocentric () const |
Checks if the projection uses geocentric latitudes. More... | |
IlBoolean | isInverseEnabled () const |
Indicates if the inverse function is supported by the projection. More... | |
IlBoolean | isShared () const |
Indicates that the projection is shared. More... | |
IlBoolean | isUsingLongitudeReduction () const |
Returns IlTrue if the projection uses range reduction for longitudes. More... | |
void | lock () |
Locks the projection. | |
virtual std::ostream & | printPROJ4Descriptor (std::ostream &ostr, IlvMapsError *status=0) const |
This virtual member function converts the projection to a string in the PROJ4 format. More... | |
void | save (IlvOutputFile &outputFile) const |
Saves an instance of a subclass of IlvProjection to the specified output file. More... | |
void | setCentralMeridian (IlDouble lon) |
Sets the central meridian of the projection. More... | |
void | setCentralParallel (IlDouble lat) |
Sets the central parallel of the projection. More... | |
virtual IlvMapsError | setDatum (const IlvHorizontalDatum *datum) |
Sets the datum used for the projection. More... | |
void | setFalseEasting (IlDouble falseEasting) |
Sets the false easting of the projection. More... | |
void | setFalseNorthing (IlDouble falseNorthing) |
Sets the false northing of the projection. More... | |
void | setGeocentric (IlBoolean geoc) |
Specifies whether the projection uses geocentric or geodetic latitudes. More... | |
void | setShared () |
Specifies that the projection will be shared. More... | |
void | setUnitConverter (const IlvUnitConverter &converter) |
Sets the unit converter of the projection. More... | |
void | setUsingLongitudeReduction (IlBoolean use) |
Specifies whether the projection uses longitude reduction. More... | |
void | unLock () |
Unlocks the object. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from IlvProjection | |
static IlvProjectionClassInfo * | ClassInfo () |
Returns the class information of the class. More... | |
static IlvClassInfo ** | ClassInfoRef () |
Returns the address of the class information of the class. More... | |
static IlvMapsError | InputError () |
Indicates that the coordinates passed to the forward function are not in a valid range for radian angles. | |
static IlvMapsError | InvalidEllipsoidError () |
Indicates that you attempt to set a non spherical ellipsoid to a projection that does not support non spherical ellipsoids. | |
static IlvProjection * | Load (IlvInputFile &inputFile) |
Loads a projection from the specified file. More... | |
static IlvProjection * | PROJ4ToIlvProjection (const char *proj4Descriptor, IlvMapsError *status=0) |
Creates the projection from a PROJ4 descriptor. More... | |
static IlvMapsError | ToleranceConditionError () |
Indicates that an internal projection computation failed. More... | |
static IlvMapsError | UnsupportedFeatureError () |
Indicates that an unsupported projection feature is requested, like inverse projection for a projection that does not support inverse projection. | |
Protected Member Functions inherited from IlvTransverseMercatorProjection | |
virtual IlvMapsError | eForward (IlvCoordinate &) const |
Must be redefined in subclasses to implement the projection for a non spherical ellipsoid. More... | |
virtual IlvMapsError | eInverse (IlvCoordinate &) const |
Implements the inverse projection for a non spherical ellipsoid. More... | |
virtual bool | isUsingProj4 () const |
Are we using proj4 implementation. More... | |
virtual IlvMapsError | sForward (IlvCoordinate &) const |
Must be redefined in subclasses to implement the projection for a sphere. More... | |
virtual IlvMapsError | sInverse (IlvCoordinate &) const |
Must be redefined in subclasses to implement the inverse projection for a sphere. More... | |
Protected Member Functions inherited from IlvProjection | |
IlvProjection (IlBoolean ellipsoidEnabled, IlBoolean inverseEnabled, IlvProjectionGeometricProperty property) | |
Initializes a new IlvProjection instance. More... | |
void | addError (IlvMapsError error) |
Used by the constructors of subclasses if an error occurs during an object initialization. More... | |
void | setError (IlvMapsError error) |
Sets the status of this projection. More... | |
This class defines Universal Transverse Mercator projections, also known as UTM projections.
Library: ilvmaps
A UTM projection is a preconfigured form of the Transverse Mercator projection. It is generally used with non-spherical ellipsoids. UTM projections usually apply to 6-degree longitudinal strips extending from 84S to 80N. These strips are called UTM zones, with Zone 1 starting at 180W and Zone 60 ending at 180E. The central meridian is constrained to 6-degree intervals starting at 3 degrees. The projection automatically adjusts to the value nearest to the user's entry. A false easting of 500,000 meters is automatically added.
Universal Transverse Mercator Projection
IlvUniversalTransverseMercatorProjection::IlvUniversalTransverseMercatorProjection | ( | IlUShort | zone = 30 | ) |
Initializes a new IlvUniversalTransverseMercatorProjection
instance and specifies the UTM zone.
The ellipsoid is set to the WGS84 ellipsoid.
zone | The UTM zone. |
IlvUniversalTransverseMercatorProjection::IlvUniversalTransverseMercatorProjection | ( | IlDouble | lon | ) |
Initializes a new IlvUniversalTransverseMercatorProjection
instance and specifies the central meridian.
The ellipsoid is set to the WGS84 ellipsoid. The zone specified by the lon parameter is adjusted to the nearest UTM zone at the specified longitude.
lon | The longitude. |
IlUShort IlvUniversalTransverseMercatorProjection::getZone | ( | ) | const |
Returns the UTM zone to which the projection applies.
|
virtual |
Checks if projection is for applications portraying the southern hemisphere.
This member function returns IlTrue
if the projection is set for applications portraying the southern hemisphere.
IlTrue
if the projection is set for applications portraying the southern hemisphere IlFalse
otherwise.
|
virtual |
Specifies the central meridian and the central parallel (in radian) associated with the projection.
By default, theses values are set to 0
.
This function is virtual because it can be overridden by subclasses of IlvProjection
to update the internal parameters when the center is changed.
lon | The central meridian in radian. |
lat | The central parallel in radian. |
Reimplemented from IlvTransverseMercatorProjection.
|
virtual |
Sets the scale factor applied to the central meridian.
By default, the scale factor is 1
.
k0 | The scale factor applied to the central meridian. |
Reimplemented from IlvTransverseMercatorProjection.
void IlvUniversalTransverseMercatorProjection::setSouth | ( | IlBoolean | south | ) |
Sets a false northing for applications portraying the southern hemisphere.
In applications portraying the southern hemisphere, this member function should be called with the Boolean argument south set to IlTrue
, in which case a false northing of 10,000,000 meters is added.
south | Specifies if a false northing is to be set. |
Sets the UTM zone to which the projection applies.
The zone index must be included in the range 1 to 60 because there are 60 UTM zones extending from west to east. Zone 1 extends from 180W to 174W. Zone 60 extends from 174E to 180E.
The function returns IlFalse
if an invalid UTM zone is specified, and leaves the projection unchanged.
IlFalse
if the UTM zone is invalid, IlTrue
otherwise.
|
virtual |
Saves the parameters of a projection to the specified output file.
It must be overridden by subclasses of IlvProjection
that need to save additional parameters.
This function should not be directly called; use the save()
function instead.
outputFile | The file to write the projection parameters to. |
Reimplemented from IlvTransverseMercatorProjection.