Main MRPT website > C++ reference
MRPT logo
Classes | Functions

mrpt::topography Namespace Reference


Detailed Description

This namespace provides topography helper functions, coordinate transformations.

Classes

struct  TCoords
 A coordinate that is stored as a simple "decimal" angle in degrees, but can be retrieved/set in the form of DEGREES + arc-MINUTES + arc-SECONDS. More...
struct  TEllipsoid
struct  TGeodeticCoords
 A set of geodetic coordinates: latitude, longitude and height, defined over a given geoid (typically, WGS84) More...
struct  TDatum7Params
 Parameters for a topographic transfomation. More...
struct  TDatum7Params_TOPCON
struct  TDatum10Params
 Parameters for a topographic transfomation. More...
struct  TDatumHelmert2D
 Parameters for a topographic transfomation. More...
struct  TDatumHelmert2D_TOPCON
struct  TDatumHelmert3D
 Parameters for a topographic transfomation. More...
struct  TDatumHelmert3D_TOPCON
 Parameters for a topographic transfomation. More...
struct  TDatum1DTransf
 Parameters for a topographic transfomation. More...
struct  TDatumTransfInterpolation
 Parameters for a topographic transfomation. More...
struct  TPathFromRTKInfo
 Used to return optional information from mrpt::topography::path_from_rtk_gps. More...

Functions

void TOPO_IMPEXP path_from_rtk_gps (mrpt::poses::CPose3DInterpolator &robot_path, const mrpt::slam::CRawlog &rawlog, size_t rawlog_first, size_t rawlog_last, bool isGUI=false, bool disableGPSInterp=false, int path_smooth_filter_size=2, TPathFromRTKInfo *outInfo=NULL)
 Reconstruct the path of a vehicle equipped with 3 RTK GPSs.
Topography coordinate conversion functions

=======================================================================

void TOPO_IMPEXP geodeticToENU_WGS84 (const TGeodeticCoords &in_coords, mrpt::math::TPoint3D &out_ENU_point, const TGeodeticCoords &in_coords_origin)
 Coordinates transformation from longitude/latitude/height to ENU (East-North-Up) X/Y/Z coordinates The WGS84 ellipsoid is used for the transformation.
void TOPO_IMPEXP ENUToGeocentric (const mrpt::math::TPoint3D &in_ENU_point, const TGeodeticCoords &in_coords_origin, TGeocentricCoords &out_coords, const TEllipsoid &ellip)
 ENU to geocentric coordinates.
void TOPO_IMPEXP geodeticToGeocentric_WGS84 (const TGeodeticCoords &in_coords, mrpt::math::TPoint3D &out_point)
 Coordinates transformation from longitude/latitude/height to geocentric X/Y/Z coordinates (with a WGS84 geoid).
void TOPO_IMPEXP geodeticToGeocentric (const TGeodeticCoords &in_coords, TGeocentricCoords &out_point, const TEllipsoid &ellip)
 Coordinates transformation from longitude/latitude/height to geocentric X/Y/Z coordinates (with an specified geoid).
void TOPO_IMPEXP geocentricToGeodetic (const TGeocentricCoords &in_point, TGeodeticCoords &out_coords, const TEllipsoid &ellip=TEllipsoid::Ellipsoid_WGS84())
 Coordinates transformation from geocentric X/Y/Z coordinates to longitude/latitude/height.
void TOPO_IMPEXP transform7params (const mrpt::math::TPoint3D &in_point, const TDatum7Params &in_datum, mrpt::math::TPoint3D &out_point)
 7-parameter Bursa-Wolf transformation: [ X Y Z ]_WGS84 = [ dX dY dZ ] + ( 1 + dS ) [ 1 RZ -RY; -RZ 1 RX; RY -RX 1 ] [ X Y Z ]_local
void TOPO_IMPEXP transform7params_TOPCON (const mrpt::math::TPoint3D &in_point, const TDatum7Params_TOPCON &in_datum, mrpt::math::TPoint3D &out_point)
void TOPO_IMPEXP transform10params (const mrpt::math::TPoint3D &in_point, const TDatum10Params &in_datum, mrpt::math::TPoint3D &out_point)
 10-parameter Molodensky-Badekas transformation: [ X Y Z ]_WGS84 = [ dX dY dZ ] + ( 1 + dS ) [ 1 RZ -RY; -RZ 1 RX; RY -RX 1 ] [ X-Xp Y-Yp Z-Zp ]_local + [Xp Yp Zp]
void TOPO_IMPEXP transformHelmert2D (const mrpt::math::TPoint2D &p, const TDatumHelmert2D &d, mrpt::math::TPoint2D &o)
 Helmert 2D transformation: [ X Y ]_WGS84 = [ dX dY ] + ( 1 + dS ) [ cos(alpha) -sin(alpha); sin(alpha) cos(alpha) ] [ X-Xp Y-Yp Z-Zp ]_local + [Xp Yp Zp].
void TOPO_IMPEXP transformHelmert2D_TOPCON (const mrpt::math::TPoint2D &p, const TDatumHelmert2D_TOPCON &d, mrpt::math::TPoint2D &o)
void TOPO_IMPEXP transformHelmert3D (const mrpt::math::TPoint3D &p, const TDatumHelmert3D &d, mrpt::math::TPoint3D &o)
 Helmert3D transformation: [ X Y Z ]_WGS84 = [ dX dY dZ ] + ( 1 + dS ) [ 1 -RZ RY; RZ 1 -RX; -RY RX 1 ] [ X Y Z ]_local.
void TOPO_IMPEXP transformHelmert3D_TOPCON (const mrpt::math::TPoint3D &p, const TDatumHelmert3D_TOPCON &d, mrpt::math::TPoint3D &o)
void TOPO_IMPEXP transform1D (const mrpt::math::TPoint3D &p, const TDatum1DTransf &d, mrpt::math::TPoint3D &o)
 1D transformation: [ Z ]_WGS84 = (dy * X - dx * Y + Z)*(1+e)+DZ
void TOPO_IMPEXP transfInterpolation (const mrpt::math::TPoint3D &p, const TDatumTransfInterpolation &d, mrpt::math::TPoint3D &o)
 Interpolation: [ Z ]_WGS84 = (dy * X - dx * Y + Z)*(1+e)+DZ.
void TOPO_IMPEXP UTMToGeodetic (double X, double Y, int zone, char hem, double &out_lon, double &out_lat, TEllipsoid ellip=TEllipsoid::Ellipsoid_WGS84())
 Returns the Geodetic coordinates of the UTM input point.
void TOPO_IMPEXP UTMToGeodetic (const TUTMCoords &UTMCoords, const int &zone, const char &hem, TGeodeticCoords &GeodeticCoords, TEllipsoid ellip=TEllipsoid::Ellipsoid_WGS84())
 Returns the Geodetic coordinates of the UTM input point.
void TOPO_IMPEXP GeodeticToUTM (double in_latitude_degrees, double in_longitude_degrees, double &out_UTM_x, double &out_UTM_y, int &out_UTM_zone, char &out_UTM_latitude_band, TEllipsoid ellip=TEllipsoid::Ellipsoid_WGS84())
 Convert latitude and longitude coordinates into UTM coordinates, computing the corresponding UTM zone and latitude band.
void TOPO_IMPEXP geodeticToUTM (const TGeodeticCoords &GeodeticCoords, TUTMCoords &UTMCoords, int &UTMZone, char &UTMLatitudeBand, TEllipsoid ellip=TEllipsoid::Ellipsoid_WGS84())
void TOPO_IMPEXP GeodeticToUTM (const TGeodeticCoords &GeodeticCoords, TUTMCoords &UTMCoords, int &UTMZone, char &UTMLatitudeBand, TEllipsoid ellip=TEllipsoid::Ellipsoid_WGS84())
 Convert latitude and longitude coordinates into UTM coordinates, computing the corresponding UTM zone and latitude band.
DEPRECATED topography coordinate conversion functions

=======================================================================

=======================================================================

 MRPT_DECLARE_DEPRECATED_FUNCTION ("*DEPRECATED* Use geodeticToENU_WGS84 instead", void TOPO_IMPEXP coordinatesTransformation_WGS84(doublein_longitude_degrees, doublein_latitude_degrees, doublein_height_meters, double &out_x_meters, double &out_y_meters, double &out_z_meters, doublein_longitude_reference_degrees, doublein_latitude_reference_degrees, doublein_height_reference_meters))
 Coordinates transformation from longitude/latitude/height to ENU (East-North-Up) X/Y/Z coordinates The WGS84 ellipsoid is used for the transformation.
 MRPT_DECLARE_DEPRECATED_FUNCTION ("*DEPRECATED* Use geodeticToENU_WGS84 instead", void TOPO_IMPEXP coordinatesTransformation_WGS84_geocentric(doublein_longitude_degrees, doublein_latitude_degrees, doublein_height_meters, double &out_x_meters, double &out_y_meters, double &out_z_meters))
 Coordinates transformation from longitude/latitude/height to geocentric X/Y/Z coordinates (with a WGS84 geoid).
Miscellaneous

=======================================================================

=======================================================================

void TOPO_IMPEXP ENU_axes_from_WGS84 (double in_longitude_reference_degrees, double in_latitude_reference_degrees, double in_height_reference_meters, mrpt::math::TPose3D &out_ENU, bool only_angles=false)
 Returns the East-North-Up (ENU) coordinate system associated to the given point.
void ENU_axes_from_WGS84 (const TGeodeticCoords &in_coords, mrpt::math::TPose3D &out_ENU, bool only_angles=false)
 Returns the East-North-Up (ENU) coordinate system associated to the given point.

Data structures

=======================================================================
typedef mrpt::math::TPoint3D TUTMCoords
typedef mrpt::math::TPoint3D TGeocentricCoords
bool TOPO_IMPEXP operator== (const TCoords &a, const TCoords &o)
bool TOPO_IMPEXP operator!= (const TCoords &a, const TCoords &o)
std::ostream TOPO_IMPEXP & operator<< (std::ostream &out, const TCoords &o)
bool TOPO_IMPEXP operator== (const TGeodeticCoords &a, const TGeodeticCoords &o)
bool TOPO_IMPEXP operator!= (const TGeodeticCoords &a, const TGeodeticCoords &o)

Typedef Documentation

Definition at line 140 of file data_types.h.

Definition at line 139 of file data_types.h.


Function Documentation

void TOPO_IMPEXP mrpt::topography::ENU_axes_from_WGS84 ( double  in_longitude_reference_degrees,
double  in_latitude_reference_degrees,
double  in_height_reference_meters,
mrpt::math::TPose3D out_ENU,
bool  only_angles = false 
)

Returns the East-North-Up (ENU) coordinate system associated to the given point.

This is the reference employed in geodeticToENU_WGS84

Parameters:
only_anglesIf set to true, the (x,y,z) fields will be left zeroed.
See also:
geodeticToENU_WGS84

Referenced by ENU_axes_from_WGS84().

void mrpt::topography::ENU_axes_from_WGS84 ( const TGeodeticCoords &  in_coords,
mrpt::math::TPose3D out_ENU,
bool  only_angles = false 
) [inline]

Returns the East-North-Up (ENU) coordinate system associated to the given point.

This is the reference employed in coordinatesTransformation_WGS84

Parameters:
only_anglesIf set to true, the (x,y,z) fields will be left zeroed.
See also:
geodeticToENU_WGS84

Definition at line 330 of file conversions.h.

References ENU_axes_from_WGS84().

void TOPO_IMPEXP mrpt::topography::ENUToGeocentric ( const mrpt::math::TPoint3D in_ENU_point,
const TGeodeticCoords &  in_coords_origin,
TGeocentricCoords &  out_coords,
const TEllipsoid &  ellip 
)

ENU to geocentric coordinates.

See also:
geodeticToENU_WGS84
void TOPO_IMPEXP mrpt::topography::geocentricToGeodetic ( const TGeocentricCoords &  in_point,
TGeodeticCoords &  out_coords,
const TEllipsoid &  ellip = TEllipsoid::Ellipsoid_WGS84() 
)

Coordinates transformation from geocentric X/Y/Z coordinates to longitude/latitude/height.

See also:
geodeticToGeocentric
void TOPO_IMPEXP mrpt::topography::geodeticToENU_WGS84 ( const TGeodeticCoords &  in_coords,
mrpt::math::TPoint3D out_ENU_point,
const TGeodeticCoords &  in_coords_origin 
)

Coordinates transformation from longitude/latitude/height to ENU (East-North-Up) X/Y/Z coordinates The WGS84 ellipsoid is used for the transformation.

The coordinates are in 3D relative to some user-provided point, with local X axis being east-ward, Y north-ward, Z up-ward. For an explanation, refer to http://en.wikipedia.org/wiki/Reference_ellipsoid

See also:
coordinatesTransformation_WGS84_geocentric, ENU_axes_from_WGS84, ENUToGeocentric
void TOPO_IMPEXP mrpt::topography::geodeticToGeocentric ( const TGeodeticCoords &  in_coords,
TGeocentricCoords &  out_point,
const TEllipsoid &  ellip 
)

Coordinates transformation from longitude/latitude/height to geocentric X/Y/Z coordinates (with an specified geoid).

See also:
geocentricToGeodetic
void TOPO_IMPEXP mrpt::topography::geodeticToGeocentric_WGS84 ( const TGeodeticCoords &  in_coords,
mrpt::math::TPoint3D out_point 
)

Coordinates transformation from longitude/latitude/height to geocentric X/Y/Z coordinates (with a WGS84 geoid).

The WGS84 ellipsoid is used for the transformation. The coordinates are in 3D where the reference is the center of the Earth. For an explanation, refer to http://en.wikipedia.org/wiki/Reference_ellipsoid

See also:
geodeticToENU_WGS84
void TOPO_IMPEXP mrpt::topography::GeodeticToUTM ( double  in_latitude_degrees,
double  in_longitude_degrees,
double &  out_UTM_x,
double &  out_UTM_y,
int &  out_UTM_zone,
char &  out_UTM_latitude_band,
TEllipsoid  ellip = TEllipsoid::Ellipsoid_WGS84() 
)

Convert latitude and longitude coordinates into UTM coordinates, computing the corresponding UTM zone and latitude band.

This method is based on public code by Gabriel Ruiz Martinez and Rafael Palacios. Example:

   Input:
    Lat=40.3154333    Lon=-3.4857166
   Output:
    x = 458731
    y = 4462881
    utm_zone = 30
    utm_band = T
See also:
http://www.mathworks.com/matlabcentral/fileexchange/10915

Referenced by GeodeticToUTM().

void TOPO_IMPEXP mrpt::topography::geodeticToUTM ( const TGeodeticCoords &  GeodeticCoords,
TUTMCoords &  UTMCoords,
int &  UTMZone,
char &  UTMLatitudeBand,
TEllipsoid  ellip = TEllipsoid::Ellipsoid_WGS84() 
)
void TOPO_IMPEXP mrpt::topography::GeodeticToUTM ( const TGeodeticCoords &  GeodeticCoords,
TUTMCoords &  UTMCoords,
int &  UTMZone,
char &  UTMLatitudeBand,
TEllipsoid  ellip = TEllipsoid::Ellipsoid_WGS84() 
) [inline]

Convert latitude and longitude coordinates into UTM coordinates, computing the corresponding UTM zone and latitude band.

This method is based on public code by Gabriel Ruiz Martinez and Rafael Palacios. Example:

   Input:
    Lat=40.3154333    Lon=-3.4857166
   Output:
    x = 458731
    y = 4462881
    utm_zone = 30
    utm_band = T
See also:
http://www.mathworks.com/matlabcentral/fileexchange/10915

Definition at line 248 of file conversions.h.

References GeodeticToUTM(), mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.

mrpt::topography::MRPT_DECLARE_DEPRECATED_FUNCTION ( "*DEPRECATED* Use geodeticToENU_WGS84 instead"  ,
void TOPO_IMPEXP   coordinatesTransformation_WGS84doublein_longitude_degrees, doublein_latitude_degrees, doublein_height_meters, double &out_x_meters, double &out_y_meters, double &out_z_meters, doublein_longitude_reference_degrees, doublein_latitude_reference_degrees, doublein_height_reference_meters 
)

Coordinates transformation from longitude/latitude/height to ENU (East-North-Up) X/Y/Z coordinates The WGS84 ellipsoid is used for the transformation.

The coordinates are in 3D relative to some user-provided point, with local X axis being east-ward, Y north-ward, Z up-ward. For an explanation, refer to http://en.wikipedia.org/wiki/Reference_ellipsoid

See also:
coordinatesTransformation_WGS84_geocentric, ENU_axes_from_WGS84
mrpt::topography::MRPT_DECLARE_DEPRECATED_FUNCTION ( "*DEPRECATED* Use geodeticToENU_WGS84 instead"  ,
void TOPO_IMPEXP   coordinatesTransformation_WGS84_geocentricdoublein_longitude_degrees, doublein_latitude_degrees, doublein_height_meters, double &out_x_meters, double &out_y_meters, double &out_z_meters 
)

Coordinates transformation from longitude/latitude/height to geocentric X/Y/Z coordinates (with a WGS84 geoid).

The WGS84 ellipsoid is used for the transformation. The coordinates are in 3D where the reference is the center of the Earth. For an explanation, refer to http://en.wikipedia.org/wiki/Reference_ellipsoid

See also:
geodeticToENU_WGS84
bool TOPO_IMPEXP mrpt::topography::operator!= ( const TCoords &  a,
const TCoords &  o 
)
bool TOPO_IMPEXP mrpt::topography::operator!= ( const TGeodeticCoords &  a,
const TGeodeticCoords &  o 
)
std::ostream TOPO_IMPEXP& mrpt::topography::operator<< ( std::ostream &  out,
const TCoords &  o 
)
bool TOPO_IMPEXP mrpt::topography::operator== ( const TGeodeticCoords &  a,
const TGeodeticCoords &  o 
)
bool TOPO_IMPEXP mrpt::topography::operator== ( const TCoords &  a,
const TCoords &  o 
)
void TOPO_IMPEXP mrpt::topography::path_from_rtk_gps ( mrpt::poses::CPose3DInterpolator robot_path,
const mrpt::slam::CRawlog rawlog,
size_t  rawlog_first,
size_t  rawlog_last,
bool  isGUI = false,
bool  disableGPSInterp = false,
int  path_smooth_filter_size = 2,
TPathFromRTKInfo *  outInfo = NULL 
)

Reconstruct the path of a vehicle equipped with 3 RTK GPSs.

Parameters:
robot_path[OUT] The reconstructed vehicle path
rawlog[IN] The dataset
rawlog_first[IN] The index of the first entry to process (first=0)
rawlog_last[IN] The index of the last entry to process
isGUI[IN] If set to true, some progress dialogs will be shown during the computation (requires MRPT built with support for wxWidgets).
disableGPSInterp[IN] Whether to interpolate missing GPS readings between very close datums.
path_smooth_filter_size[IN] Size of the window in the pitch & roll noise filtering.
outInfo[OUT] Optional output: additional information from the optimization

For more details on the method, refer to the paper: (...)

See also:
mrpt::topography
void TOPO_IMPEXP mrpt::topography::transfInterpolation ( const mrpt::math::TPoint3D p,
const TDatumTransfInterpolation &  d,
mrpt::math::TPoint3D o 
)

Interpolation: [ Z ]_WGS84 = (dy * X - dx * Y + Z)*(1+e)+DZ.

void TOPO_IMPEXP mrpt::topography::transform10params ( const mrpt::math::TPoint3D in_point,
const TDatum10Params &  in_datum,
mrpt::math::TPoint3D out_point 
)

10-parameter Molodensky-Badekas transformation: [ X Y Z ]_WGS84 = [ dX dY dZ ] + ( 1 + dS ) [ 1 RZ -RY; -RZ 1 RX; RY -RX 1 ] [ X-Xp Y-Yp Z-Zp ]_local + [Xp Yp Zp]

See also:
transform7params
void TOPO_IMPEXP mrpt::topography::transform1D ( const mrpt::math::TPoint3D p,
const TDatum1DTransf &  d,
mrpt::math::TPoint3D o 
)

1D transformation: [ Z ]_WGS84 = (dy * X - dx * Y + Z)*(1+e)+DZ

void TOPO_IMPEXP mrpt::topography::transform7params ( const mrpt::math::TPoint3D in_point,
const TDatum7Params &  in_datum,
mrpt::math::TPoint3D out_point 
)

7-parameter Bursa-Wolf transformation: [ X Y Z ]_WGS84 = [ dX dY dZ ] + ( 1 + dS ) [ 1 RZ -RY; -RZ 1 RX; RY -RX 1 ] [ X Y Z ]_local

See also:
transform10params
void TOPO_IMPEXP mrpt::topography::transform7params_TOPCON ( const mrpt::math::TPoint3D in_point,
const TDatum7Params_TOPCON &  in_datum,
mrpt::math::TPoint3D out_point 
)
void TOPO_IMPEXP mrpt::topography::transformHelmert2D ( const mrpt::math::TPoint2D p,
const TDatumHelmert2D &  d,
mrpt::math::TPoint2D o 
)

Helmert 2D transformation: [ X Y ]_WGS84 = [ dX dY ] + ( 1 + dS ) [ cos(alpha) -sin(alpha); sin(alpha) cos(alpha) ] [ X-Xp Y-Yp Z-Zp ]_local + [Xp Yp Zp].

See also:
transformHelmert3D
void TOPO_IMPEXP mrpt::topography::transformHelmert2D_TOPCON ( const mrpt::math::TPoint2D p,
const TDatumHelmert2D_TOPCON &  d,
mrpt::math::TPoint2D o 
)
void TOPO_IMPEXP mrpt::topography::transformHelmert3D ( const mrpt::math::TPoint3D p,
const TDatumHelmert3D &  d,
mrpt::math::TPoint3D o 
)

Helmert3D transformation: [ X Y Z ]_WGS84 = [ dX dY dZ ] + ( 1 + dS ) [ 1 -RZ RY; RZ 1 -RX; -RY RX 1 ] [ X Y Z ]_local.

See also:
transformHelmert2D
void TOPO_IMPEXP mrpt::topography::transformHelmert3D_TOPCON ( const mrpt::math::TPoint3D p,
const TDatumHelmert3D_TOPCON &  d,
mrpt::math::TPoint3D o 
)
void TOPO_IMPEXP mrpt::topography::UTMToGeodetic ( const TUTMCoords &  UTMCoords,
const int &  zone,
const char &  hem,
TGeodeticCoords &  GeodeticCoords,
TEllipsoid  ellip = TEllipsoid::Ellipsoid_WGS84() 
) [inline]

Returns the Geodetic coordinates of the UTM input point.

Parameters:
UTMCoords,:UTM input coordinates.
zone,:time zone (Spanish: "huso").
hem,:hemisphere ('N'/'n' for North or 'S'/s' for South ). An exception will be raised on any other value.
GeodeticCoords,:Out geodetic coordinates.
ellip,:the reference ellipsoid used for the transformation (default: WGS84)

Definition at line 192 of file conversions.h.

References mrpt::topography::TCoords::decimal_value, mrpt::topography::TGeodeticCoords::height, mrpt::topography::TGeodeticCoords::lat, mrpt::topography::TGeodeticCoords::lon, UTMToGeodetic(), mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.

void TOPO_IMPEXP mrpt::topography::UTMToGeodetic ( double  X,
double  Y,
int  zone,
char  hem,
double &  out_lon,
double &  out_lat,
TEllipsoid  ellip = TEllipsoid::Ellipsoid_WGS84() 
)

Returns the Geodetic coordinates of the UTM input point.

Parameters:
X,:East coordinate of the input point.
Y,:North coordinate of the input point.
zone,:time zone (Spanish: "huso").
hem,:hemisphere ('N'/'n' for North or 'S'/s' for South ). An exception will be raised on any other value.
ellip,:the reference ellipsoid used for the transformation (default: WGS84)
out_latOut latitude, in degrees.
out_lonOut longitude, in degrees.

Referenced by UTMToGeodetic().




Page generated by Doxygen 1.7.3 for MRPT 0.9.4 SVN: at Sat Mar 26 06:40:17 UTC 2011