Rogue Wave Views |
Rogue Wave Views Documentation Home |
All projections in the library inherit from this abstract class. More...
#include <ilviews/maps/projection/project.h>
Public Member Functions | |
virtual IlvProjection * | copy () const =0 |
Returns a copy of the projection. It must be overridden in each subclass. More... | |
IlvMapsError | forward (const IlvCoordinate &llIn, IlvCoordinate &xyOut) const |
Converts a latitude and a longitude to Cartesian coordinates (x,y). More... | |
IlvMapsError | forward (IlvCoordinate &x) const |
This member function converts a latitude and a longitude 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 (void) const |
Returns the ellipsoid used for the projection. More... | |
IlvMapsError | getError () const |
Returns the status of the projection. If the projection is valid, the function returns IlvMapsError::NoError() , otherwise, it returns an error code. See the IlvMaps class to know how to interpret the error codes. 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 (void) const |
Returns the false easting and the false northing of the projection. More... | |
IlvMapsError | inverse (const IlvCoordinate &xyIn, IlvCoordinate &llOut) const |
Converts the specified coordinate to a latitude and a longitude. More... | |
IlvMapsError | inverse (IlvCoordinate &x) const |
Converts the IlvCoordinate representing Cartesian coordinates to a latitude and a longitude. More... | |
IlBoolean | isBad () const |
Checks for an inconsistent state of the projection. More... | |
IlBoolean | isEllipsoidEnabled () const |
Returns IlTrue 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 |
Returns IlTrue if the inverse function is supported by the projection. More... | |
IlBoolean | isShared () const |
Returns IlTrue if 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 IL_STDPREF ostream & | printPROJ4Descriptor (IL_STDPREF 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... | |
virtual IlvMapsError | setEllipsoid (const IlvEllipsoid &ellipsoid) |
Sets the ellipsoid 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... | |
virtual void | setLLCenter (IlDouble lon, IlDouble lat) |
Specifies the central meridian and the central parallel (in radian) associated with the projection. More... | |
void | setShared () |
Specifies that the projection will be shared. More... | |
void | setUnitConverter (const IlvUnitConverter &converter) |
Sets the unit converter of the projection. The default unit is meters. More... | |
void | setUsingLongitudeReduction (IlBoolean use) |
Specifies whether the projection uses longitude reduction. More... | |
void | setXYOffset (IlDouble x0, IlDouble y0) |
Specifies the false easting and the false northing. More... | |
void | unLock () |
Unlocks the object. More... | |
virtual void | write (IlvOutputFile &outputFile) const |
Saves the parameters of a projection to the specified output file. More... | |
Static Public Member Functions | |
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 () |
Returned if the coordinates passed to the forward function are not in a valid range for radian angles. | |
static IlvMapsError | InvalidEllipsoidError () |
Returned if 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 specified by proj4Descriptor. More... | |
static IlvMapsError | ToleranceConditionError () |
Returned when an internal projection computation fails. Some projections, however, can return more specific error codes in this case. | |
static IlvMapsError | UnsupportedFeatureError () |
Returned if an unsupported projection feature is requested, like inverse projection for a projection that does not support inverse projection. | |
Protected Member Functions | |
IlvProjection (IlBoolean ellipsoidEnabled, IlBoolean inverseEnabled, IlvProjectionGeometricProperty property) | |
This constructor initializes a new instance of the class. More... | |
void | addError (IlvMapsError error) |
Used by the constructors of subclasses if an error occurs during an object initialization. More... | |
virtual IlvMapsError | eForward (IlvCoordinate &ll) const |
Must be redefined in subclasses to implement the projection for a non spherical ellipsoid. More... | |
virtual IlvMapsError | eInverse (IlvCoordinate &xy) const |
Implements the inverse projection for a non spherical ellipsoid. More... | |
void | setError (IlvMapsError error) |
Sets the status of this projection. More... | |
virtual IlvMapsError | sForward (IlvCoordinate &ll) const =0 |
Must be redefined in subclasses to implement the projection for a sphere. More... | |
virtual IlvMapsError | sInverse (IlvCoordinate &xy) const |
Must be redefined in subclasses to implement the inverse projection for a sphere. More... | |
All projections in the library inherit from this abstract class.
IlvCoordinate
, IlvMaps
, IlvProjectionClassInfo
, IlvProjectionDictionary
, IlvProjectionGeometricProperty
, IlvProjectionInterface
, IlvUnitConverter
. Library: ilvmaps
|
protected |
This constructor initializes a new instance of the class.
ellipsoidEnabled | Boolean argument that should be set to IlTrue if non spherical ellipsoids can be used for the projection. Projections supporting non spherical ellipsoids should implement the eForward() member function. |
inverseEnabled | Boolean argument that should be set to IlTrue if the projection implements an inverse function. This type of projections should implement the sInverse() and eInverse() member functions if ellipsoids are supported. |
property | Specifies the geometric property of the projection. |
IlvProjectionGeometricProperty
|
protected |
Used by the constructors of subclasses if an error occurs during an object initialization.
This protected method is used by subclasses of IlvProjection
to set the error status of the projection within the constructors and the parameterizing functions if the parameters received are inconsistent. If the projection status is already different from IlvMaps::NoError()
, this function does nothing.
error | The error. |
|
static |
Returns the class information of the class.
This static function is also available for the subclasses of IlvProjection
.
IlvProjectionClassInfo
of the class.
|
static |
Returns the address of the class information of the class.
This static function is also available for the subclasses of IlvProjection
.
IlvProjectionClassInfo
of the class.
|
pure virtual |
Returns a copy of the projection. It must be overridden in each subclass.
Implemented in IlvFrenchLambertProjection, and IlvUnknownProjection.
|
protectedvirtual |
Must be redefined in subclasses to implement the projection for a non spherical ellipsoid.
The default implementation returns IlvProjection::UnsupportedFeatureError()
.
ll | Contains the longitude and latitude coordinates in radian (x = longitude, y = latitude). |
Reimplemented in IlvAzimuthalEquidistantProjection, IlvStereographicProjection, IlvTransverseMercatorProjection, IlvCylindricalEqualAreaProjection, IlvLambertConformalConicProjection, IlvMercatorProjection, IlvAlbersEqualAreaProjection, IlvPolyconicProjection, IlvLambertAzimuthalEqualAreaProjection, IlvCassiniProjection, and IlvUnknownProjection.
|
protectedvirtual |
Implements the inverse projection for a non spherical ellipsoid.
The default implementation returns IlvProjection::UnsupportedFeatureError()
.
xy | Contains the Cartesian coordinates to inverse. |
Reimplemented in IlvAzimuthalEquidistantProjection, IlvStereographicProjection, IlvTransverseMercatorProjection, IlvCylindricalEqualAreaProjection, IlvLambertConformalConicProjection, IlvMercatorProjection, IlvAlbersEqualAreaProjection, IlvPolyconicProjection, IlvLambertAzimuthalEqualAreaProjection, IlvCassiniProjection, and IlvUnknownProjection.
IlvMapsError IlvProjection::forward | ( | const IlvCoordinate & | llIn, |
IlvCoordinate & | xyOut | ||
) | const |
Converts a latitude and a longitude to Cartesian coordinates (x,y).
The forward projection is computed either by the sForward()
or by the eForward()
method, depending on whether the ellipsoid is a sphere or not. The implementation of one of these methods depends on the projection. The result is then converted to the appropriate measurement unit.
This method returns IlvMaps::NoError()
if the conversion is successful. Otherwise, it returns an error status.
projection.forward(coord,coord)
. If an error status is returned, the coordinates returned are not correct. Therefore, it is strongly recommended to pay attention to the error flag status.llIn | Represents the longitude and latitude expressed in radian (x = longitude, y = latitude). The longitude must be in the range [-PI ; PI] and the latitude must be in the range [-PI/2; PI/2]. If required, the function converts the latitude to a geocentric latitude. Then it centers the longitude and adjusts it. |
xyOut | The resulting projected data. |
IlvMapsError
different from IlvMaps::NoError()
if the conversion fails. IlvMapsError IlvProjection::forward | ( | IlvCoordinate & | x | ) | const |
This member function converts a latitude and a longitude to Cartesian coordinates.
x | IlvCoordinate containing the coordinates to be converted. |
IlvMapsError
different from IlvMaps::NoError()
if the conversion fails. IlvProjection::forward()
IlDouble IlvProjection::getCentralMeridian | ( | ) | const |
Returns the central meridian of the projection.
IlvProjection::getLLCenter()
IlDouble IlvProjection::getCentralParallel | ( | ) | const |
Returns the central parallel of the projection.
IlvProjection::getLLCenter()
|
virtual |
Returns the class information for the projection.
Reimplemented in IlvConicProjection, IlvFrenchLambertProjection, and IlvUnknownProjection.
const IlvHorizontalDatum* IlvProjection::getDatum | ( | void | ) | const |
Returns the horizontal datum used for the projection.
IlvHorizontalDatum::copy()
method if you want to reuse this datum after the projection has been destroyed. const IlvEllipsoid* IlvProjection::getEllipsoid | ( | void | ) | const |
Returns the ellipsoid used for the projection.
IlvEllipsoid::copy()
method if you want to reuse this ellipsoid after the projection has been destroyed. IlvMapsError IlvProjection::getError | ( | ) | const |
Returns the status of the projection. If the projection is valid, the function returns IlvMapsError::NoError()
, otherwise, it returns an error code. See the IlvMaps
class to know how to interpret the error codes.
IlDouble IlvProjection::getFalseEasting | ( | ) | const |
Returns the false easting of the projection.
IlvProjection::getXYOffset()
IlDouble IlvProjection::getFalseNorthing | ( | ) | const |
Returns the false northing of the projection.
IlvProjection::getXYOffset()
IlvProjectionInterface* IlvProjection::getInterface | ( | ) |
Returns the interface of the projection.
A projection interface gives run-time information about the parameters of a projection, and makes it possible to modify these parameters. It is generally used to build dynamic projection editors.
IlvCoordinate IlvProjection::getLLCenter | ( | void | ) | const |
Returns the central meridian and the central parallel associated with the projection (0-0 by default).
In the IlvCoordinate
object returned, x
is the central meridian while y
is the central parallel of the projection. These values are expressed in radian.
IlvProjectionGeometricProperty IlvProjection::getProperty | ( | ) | const |
Returns the geometric property of the projection.
IlvProjectionGeometricProperty
const IlvUnitConverter* IlvProjection::getUnitConverter | ( | ) | const |
Returns the unit converter.
IlvUnitConverter::copy()
if you want to reuse this unit converter after the projection has been destroyed IlvCoordinate IlvProjection::getXYOffset | ( | void | ) | const |
Returns the false easting and the false northing of the projection.
IlvCoordinate
containing the false easting and the false northing of the projection. IlvMapsError IlvProjection::inverse | ( | const IlvCoordinate & | xyIn, |
IlvCoordinate & | llOut | ||
) | const |
Converts the specified coordinate to a latitude and a longitude.
This method converts the xyIn parameter, which represents Cartesian coordinates expressed in the measurement unit of the projection, to a latitude and a longitude. This method returns IlvMaps::NoError()
if the conversion is successful. Otherwise, it returns an error status.
projection.inverse(coord,coord)
. xyIn | The coordinates to be converted. |
llOut | The converted coordinates. |
IlvMapsError
different from IlvMaps::NoError()
if the conversion fails. IlvMapsError IlvProjection::inverse | ( | IlvCoordinate & | x | ) | const |
Converts the IlvCoordinate
representing Cartesian coordinates to a latitude and a longitude.
x | Holding the coordinate to be converted before the call and the result after the call. |
IlvMapsError
different from IlvMaps::NoError()
if the conversion fails. IlvProjection::inverse()
IlBoolean IlvProjection::isBad | ( | ) | const |
Checks for an inconsistent state of the projection.
Returns IlTrue
if the projection is in an inconsistent state because wrong parameters have been passed to the constructor.
IlBoolean IlvProjection::isEllipsoidEnabled | ( | ) | const |
Returns IlTrue
if non spherical ellipsoids can be used for the projection.
IlTrue
if non spherical ellipsoids can be used for the projection. IlBoolean IlvProjection::isGeocentric | ( | ) | const |
Checks if the projection uses geocentric latitudes.
IlTrue
if the projection uses geocentric latitudes. IlBoolean IlvProjection::isInverseEnabled | ( | ) | const |
Returns IlTrue
if the inverse function is supported by the projection.
IlTrue
if the inverse function is supported by the projection, IlFalse
otherwise. IlBoolean IlvProjection::isShared | ( | ) | const |
IlBoolean IlvProjection::isUsingLongitudeReduction | ( | ) | const |
Returns IlTrue
if the projection uses range reduction for longitudes.
IlTrue
if the projection uses range reduction for longitudes, IlFalse
otherwise.
|
static |
Loads a projection from the specified file.
It can be used, for example, within the read method of a subclass of IlvNamedProperty
. If the load operation fails, the function returns a null pointer, otherwise, it returns a pointer to the projection which was read. If the file contained invalid parameters, however, the returned projection can have an error status (see the member function IlvProjection::getError
).
The returned projection must be deleted by the user.
inputFile | The file to read the projection from. |
IlvProjection
or a null pointer if the load operation fails.
|
virtual |
This virtual member function converts the projection to a string in the PROJ4 format.
ostr | The output stream receiving the string. |
status | IlvMapsError reporting a write error. |
Reimplemented in IlvGeographicProjection.
|
static |
Creates the projection specified by proj4Descriptor.
It returns a null pointer if an error occurs, that is, if proj4Descriptor specifies an unregistered projection or contains syntax errors. If passed, the status optional argument returns the status of the operation, namely:
IlvMap::NoError()
if no read problem occurred, or IlvMaps
to know how to interpret the error codes returned). PROJ4descriptor | The PROJ4 description. |
status | IlvMapsError indicating an invalid string or an unregistered projection. |
void IlvProjection::save | ( | IlvOutputFile & | outputFile | ) | const |
Saves an instance of a subclass of IlvProjection
to the specified output file.
It can be used, for example, within the write method of a subclass of IlvNamedProperty
.
outputFile | The file to write the projection to. |
void IlvProjection::setCentralMeridian | ( | IlDouble | lon | ) |
Sets the central meridian of the projection.
lon | The central meridian in radian. |
IlvProjection::setLLCenter()
void IlvProjection::setCentralParallel | ( | IlDouble | lat | ) |
Sets the central parallel of the projection.
lat | The central parallel in radian. |
IlvProjection::setLLCenter()
|
virtual |
Sets the datum used for the projection.
This method sets the datum used for the projection. The specified datum is copied by this projection.
|
virtual |
Sets the ellipsoid used for the projection.
This virtual member function sets the ellipsoid used for the projection. Most of the projections are initialized with a spherical ellipsoid with a radius of 6,370,997 meters.
This function returns IlvMaps::NoError()
if the operation is successful or an error status if you specify a non spherical ellipsoid and your type does not support non spherical.
ellipsoid | The ellipsoid used for the projection. |
IlvMapsError
if the ellipsoid does not match the projection. Reimplemented in IlvAzimuthalEquidistantProjection, IlvStereographicProjection, IlvTransverseMercatorProjection, IlvCylindricalEqualAreaProjection, IlvMercatorProjection, IlvAlbersEqualAreaProjection, IlvLambertAzimuthalEqualAreaProjection, IlvPolyconicProjection, IlvLambertConformalConicProjection, IlvCassiniProjection, and IlvGeographicProjection.
|
protected |
Sets the status of this projection.
Subclasses of IlvProjection
should call this method to set the status of the projection. The new error status error replaces the current status of this projection.
error | The new error status. |
IlvProjection::getError()
void IlvProjection::setFalseEasting | ( | IlDouble | falseEasting | ) |
Sets the false easting of the projection.
falseEasting | The false easting of the projection. |
IlvProjection::setXYOffset()
void IlvProjection::setFalseNorthing | ( | IlDouble | falseNorthing | ) |
Sets the false northing of the projection.
falseNorthing | The false northing of the projection. |
void IlvProjection::setGeocentric | ( | IlBoolean | geoc | ) |
Specifies whether the projection uses geocentric or geodetic latitudes.
The IlvProjection
constructor sets this parameter to IlFalse
.
geoc | If IlTrue , the projection uses geocentric latitudes. |
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 in IlvFrenchLambertProjection, IlvUniversalTransverseMercatorProjection, IlvAzimuthalEquidistantProjection, IlvStereographicProjection, IlvAlbersEqualAreaProjection, IlvLambertAzimuthalEqualAreaProjection, IlvPolyconicProjection, IlvLambertConformalConicProjection, IlvUniversalPolarStereographicProjection, IlvOrthographicProjection, IlvCassiniProjection, and IlvGnomonicProjection.
void IlvProjection::setShared | ( | ) |
void IlvProjection::setUnitConverter | ( | const IlvUnitConverter & | converter | ) |
Sets the unit converter of the projection. The default unit is meters.
converter | The unit converter. |
void IlvProjection::setUsingLongitudeReduction | ( | IlBoolean | use | ) |
Specifies whether the projection uses longitude reduction.
The normal geographic range for longitude is between 180E and 180W. By default, the Boolean flag is set to IlTrue
, which means that the internal range of longitude is reduced to this range. Setting it to IlFalse
disables internal range reduction. However, this should be used with care in applications.
Specifies the false easting and the false northing.
The default value is (0, 0). The false easting is an offset that is added to the x coordinate of the projected data, and the false northing is an offset that is added to the y coordinate of the projected data. Both offset should be expressed in meters.
x0 | The false easting. |
y0 | The false northing. |
|
protectedpure virtual |
Must be redefined in subclasses to implement the projection for a sphere.
ll | Contains the longitude and latitude coordinates in radian (x = longitude, y = latitude). |
Implemented in IlvAzimuthalEquidistantProjection, IlvStereographicProjection, IlvTransverseMercatorProjection, IlvCylindricalEqualAreaProjection, IlvEquidistantCylindricalProjection, IlvLambertConformalConicProjection, IlvMercatorProjection, IlvAlbersEqualAreaProjection, IlvPolyconicProjection, IlvLambertAzimuthalEqualAreaProjection, IlvOrthographicProjection, IlvCassiniProjection, IlvGnomonicProjection, IlvGeographicProjection, IlvUnknownProjection, and IlvMillerCylindricalProjection.
|
protectedvirtual |
Must be redefined in subclasses to implement the inverse projection for a sphere.
The default implementation returns IlvProjection::UnsupportedFeatureError()
.
xy | Contains the Cartesian coordinates to inverse. |
Reimplemented in IlvAzimuthalEquidistantProjection, IlvStereographicProjection, IlvTransverseMercatorProjection, IlvCylindricalEqualAreaProjection, IlvEquidistantCylindricalProjection, IlvLambertConformalConicProjection, IlvMercatorProjection, IlvAlbersEqualAreaProjection, IlvPolyconicProjection, IlvLambertAzimuthalEqualAreaProjection, IlvCassiniProjection, IlvOrthographicProjection, IlvGnomonicProjection, IlvGeographicProjection, IlvUnknownProjection, and IlvMillerCylindricalProjection.
void IlvProjection::unLock | ( | ) |
Unlocks the object.
If the projection does not have any lock, it is deleted.
|
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 in IlvFrenchLambertProjection, IlvConicProjection, IlvUniversalTransverseMercatorProjection, IlvLambertEqualAreaConicProjection, IlvStereographicProjection, IlvAzimuthalEquidistantProjection, IlvUniversalPolarStereographicProjection, IlvTransverseMercatorProjection, IlvCylindricalEqualAreaProjection, IlvLambertConformalConicProjection, IlvEquidistantCylindricalProjection, IlvMercatorProjection, IlvAlbersEqualAreaProjection, and IlvPolyconicProjection.
© Copyright 2015, Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave is a registered trademark of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.