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) |
Definition at line 140 of file data_types.h.
Definition at line 139 of file data_types.h.
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
only_angles | If set to true, the (x,y,z) fields will be left zeroed. |
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
only_angles | If set to true, the (x,y,z) fields will be left zeroed. |
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.
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.
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
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).
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
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
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
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
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
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.
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: (...)
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]
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
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].
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.
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.
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.
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_lat | Out latitude, in degrees. |
out_lon | Out longitude, in degrees. |
Referenced by UTMToGeodetic().
Page generated by Doxygen 1.7.3 for MRPT 0.9.4 SVN: at Sat Mar 26 06:16:28 UTC 2011 |