ad_map_access
Public Types | Public Member Functions | Static Public Member Functions | List of all members
ad::map::point::CoordinateTransform Class Reference

Class that encapsulates various coordinate transformations. More...

#include <ad/map/point/CoordinateTransform.hpp>

Public Types

typedef std::shared_ptr< CoordinateTransformPtr
 Smart pointer to the object.
 
typedef std::shared_ptr< CoordinateTransform const > ConstPtr
 Smart pointer to the object.
 

Public Member Functions

 CoordinateTransform ()
 
 ~CoordinateTransform ()
 
bool setGeoProjection (std::string const &geo_projection)
 Set the method for ENU coordinate system conversion via projection string (e.g. from OpenDrive file). Increases ENU reference point counter. Be aware: when configured via the projection string, calls to setENUReferencePoint() will have no effect. More...
 
void setENUReferencePoint (const GeoPoint &enu_ref_point)
 Set the reference point for the ENU coordinate system. Increases ENU reference point counter. More...
 
const GeoPointgetENUReferencePoint () const
 
bool isENUValid () const
 
size_t getENURef () const
 
ENUPoint Geo2ENU (const GeoPoint &pt) const
 Convert point between coordinate systems. More...
 
GeoPoint ENU2Geo (const ENUPoint &pt) const
 Convert point between coordinate systems. More...
 
ECEFPoint Geo2ECEF (const GeoPoint &pt) const
 Convert point between coordinate systems. More...
 
GeoPoint ECEF2Geo (const ECEFPoint &pt) const
 Convert point between coordinate systems. More...
 
ECEFPoint ENU2ECEF (const ENUPoint &pt) const
 Convert point between coordinate systems. More...
 
ENUPoint ECEF2ENU (const ECEFPoint &pt) const
 Convert point between coordinate systems. More...
 
void convert (const GeoPoint &x, ENUPoint &y) const
 Convert point between coordinate systems. More...
 
void convert (const ENUPoint &x, GeoPoint &y) const
 Convert point between coordinate systems. More...
 
void convert (const GeoPoint &x, ECEFPoint &y) const
 Convert point between coordinate systems. More...
 
void convert (const ECEFPoint &x, GeoPoint &y) const
 Convert point between coordinate systems. More...
 
void convert (const ECEFPoint &x, ENUPoint &y) const
 Convert point between coordinate systems. More...
 
void convert (const ENUPoint &x, ECEFPoint &y) const
 Convert point between coordinate systems. More...
 
template<typename SourceC , typename TargetC >
void convert (const std::vector< SourceC > &xs, std::vector< TargetC > &ys) const
 Convert points between coordinate systems. More...
 

Static Public Member Functions

static physics::Distance WGS84_R (const Latitude &lat)
 Calculates Earth Radius at specific latitude. More...
 
static double geocentricLatitude (const Latitude &lat)
 Convert geodetic latitude to a geocentric latitude. More...
 

Detailed Description

Class that encapsulates various coordinate transformations.

Constructor & Destructor Documentation

◆ CoordinateTransform()

ad::map::point::CoordinateTransform::CoordinateTransform ( )

Constructor. Initialize working variables.

◆ ~CoordinateTransform()

ad::map::point::CoordinateTransform::~CoordinateTransform ( )

Destructor. Does nothing.

Member Function Documentation

◆ convert() [1/7]

void ad::map::point::CoordinateTransform::convert ( const ECEFPoint x,
ENUPoint y 
) const
inline

Convert point between coordinate systems.

Template Parameters
SourceCSource coordinate system.
TargetCTarget coordinate system.
Parameters
[in]xSource point.
[out]yTarget point.

◆ convert() [2/7]

void ad::map::point::CoordinateTransform::convert ( const ECEFPoint x,
GeoPoint y 
) const
inline

Convert point between coordinate systems.

Template Parameters
SourceCSource coordinate system.
TargetCTarget coordinate system.
Parameters
[in]xSource point.
[out]yTarget point.

◆ convert() [3/7]

void ad::map::point::CoordinateTransform::convert ( const ENUPoint x,
ECEFPoint y 
) const
inline

Convert point between coordinate systems.

Template Parameters
SourceCSource coordinate system.
TargetCTarget coordinate system.
Parameters
[in]xSource point.
[out]yTarget point.

◆ convert() [4/7]

void ad::map::point::CoordinateTransform::convert ( const ENUPoint x,
GeoPoint y 
) const
inline

Convert point between coordinate systems.

Template Parameters
SourceCSource coordinate system.
TargetCTarget coordinate system.
Parameters
[in]xSource point.
[out]yTarget point.

◆ convert() [5/7]

void ad::map::point::CoordinateTransform::convert ( const GeoPoint x,
ECEFPoint y 
) const
inline

Convert point between coordinate systems.

Template Parameters
SourceCSource coordinate system.
TargetCTarget coordinate system.
Parameters
[in]xSource point.
[out]yTarget point.

◆ convert() [6/7]

void ad::map::point::CoordinateTransform::convert ( const GeoPoint x,
ENUPoint y 
) const
inline

Convert point between coordinate systems.

Template Parameters
SourceCSource coordinate system.
TargetCTarget coordinate system.
Parameters
[in]xSource point.
[out]yTarget point.

◆ convert() [7/7]

template<typename SourceC , typename TargetC >
void ad::map::point::CoordinateTransform::convert ( const std::vector< SourceC > &  xs,
std::vector< TargetC > &  ys 
) const
inline

Convert points between coordinate systems.

Template Parameters
SourceCSource coordinate system.
TargetCTarget coordinate system.
Parameters
[in]xsSource points.
[out]ysTarget points.

◆ ECEF2ENU()

ENUPoint ad::map::point::CoordinateTransform::ECEF2ENU ( const ECEFPoint pt) const

Convert point between coordinate systems.

Parameters
[in]ptSource point.
Returns
Point in the target coordinate system.
Note
http://www.navipedia.net/index.php/Transformations_between_ECEF_and_ENU_coordinates

◆ ECEF2Geo()

GeoPoint ad::map::point::CoordinateTransform::ECEF2Geo ( const ECEFPoint pt) const

Convert point between coordinate systems.

Parameters
[in]ptSource point.
Returns
Point in the target coordinate system.
Note
Olson, D. K. (1996): Converting earth-Centered, Earth-Fixed Coordinates to Geodetic Coordinates, IEEE Transactions on Aerospace and Electronic Systems, Vol. 32, No. 1, January 1996, pp. 473-476.

◆ ENU2ECEF()

ECEFPoint ad::map::point::CoordinateTransform::ENU2ECEF ( const ENUPoint pt) const

Convert point between coordinate systems.

Parameters
[in]ptSource point.
Returns
Point in the target coordinate system.
Note
http://www.navipedia.net/index.php/Transformations_between_ECEF_and_ENU_coordinates

◆ ENU2Geo()

GeoPoint ad::map::point::CoordinateTransform::ENU2Geo ( const ENUPoint pt) const

Convert point between coordinate systems.

Parameters
[in]ptSource point.
Returns
Point in the target coordinate system.
Note
http://digext6.defence.gov.au/dspace/bitstream/1947/3538/1/DSTO-TN-0432.pdf

◆ Geo2ECEF()

ECEFPoint ad::map::point::CoordinateTransform::Geo2ECEF ( const GeoPoint pt) const

Convert point between coordinate systems.

Parameters
[in]ptSource point.
Returns
Point in the target coordinate system.
Note
Olson, D. K. (1996): Converting earth-Centered, Earth-Fixed Coordinates to Geodetic Coordinates, IEEE Transactions on Aerospace and Electronic Systems, Vol. 32, No. 1, January 1996, pp. 473-476.

◆ Geo2ENU()

ENUPoint ad::map::point::CoordinateTransform::Geo2ENU ( const GeoPoint pt) const

Convert point between coordinate systems.

Parameters
[in]ptSource point.
Returns
Point in the target coordinate system.
Note
http://digext6.defence.gov.au/dspace/bitstream/1947/3538/1/DSTO-TN-0432.pdf

◆ geocentricLatitude()

static double ad::map::point::CoordinateTransform::geocentricLatitude ( const Latitude lat)
static

Convert geodetic latitude to a geocentric latitude.

Parameters
[in]latGeodetic latitude.
Returns
The angle measured from center of Earth between a point and the equator.
Note
https://en.wikipedia.org/wiki/Latitude#Geocentric_latitude

◆ getENURef()

size_t ad::map::point::CoordinateTransform::getENURef ( ) const
Returns
ENU Reference Point counter. To be used to mark what ENU system is used.

◆ getENUReferencePoint()

const GeoPoint& ad::map::point::CoordinateTransform::getENUReferencePoint ( ) const
Returns
ENU Reference Point.

◆ isENUValid()

bool ad::map::point::CoordinateTransform::isENUValid ( ) const
Returns
true if ENU conversion is possible.

◆ setENUReferencePoint()

void ad::map::point::CoordinateTransform::setENUReferencePoint ( const GeoPoint enu_ref_point)

Set the reference point for the ENU coordinate system. Increases ENU reference point counter.

Parameters
[in]enu_ref_pointENU reference point.

◆ setGeoProjection()

bool ad::map::point::CoordinateTransform::setGeoProjection ( std::string const &  geo_projection)

Set the method for ENU coordinate system conversion via projection string (e.g. from OpenDrive file). Increases ENU reference point counter. Be aware: when configured via the projection string, calls to setENUReferencePoint() will have no effect.

Parameters
[in]geo_projectionprojection string for Geo<->ENU conversion

◆ WGS84_R()

static physics::Distance ad::map::point::CoordinateTransform::WGS84_R ( const Latitude lat)
static

Calculates Earth Radius at specific latitude.

Parameters
[in]latLatitude of the position.
Returns
Earth Radius at specific latitude.
Note
https://en.wikipedia.org/wiki/Earth_radius

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