Compute GPS distance

Compute GPS distance

compute two { latitude, longitude, altitude } distance

#
ellipsoidal distance
spherical distance
some online tools

ellipsoidal distance

  • 1 both latitude, longitude, altitude to ECEF xyz
    (WGS84, ENU / NED .. also ok)
  • 2 compute two 3D points distance
  • see one implementation in c++

spherical distance

  • NOTE { latitude, longitude } only and DEPRECATED

use haversine formula

Haversine
formula: a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
c = 2 ⋅ atan2( √a, √(1−a) )
d = R ⋅ c
where φ is latitude, λ is longitude, R is earth’s radius
(mean radius = 6,371km);
note that angles need to be in radians to pass to trig functions!
// DEPRECATED please use ellipsoidalDistance or lineDistance
double Wgs84::haversineDistance(
    double const latitude,
    double const longitude,
    double const er) const
{
    double const latitude1R = DegreeToRadian(this->llh(0));
    double const longitude1R = DegreeToRadian(this->llh(1));
    double const latitude2R = DegreeToRadian(latitude);
    double const longitude2R = DegreeToRadian(longitude);
    double const deltaLatitude = latitude2R - latitude1R;// in radians
    double const deltaLongitude = longitude2R - longitude1R;// in radians
    double const a = Square(::sin(deltaLatitude / 2))
        + (::cos(latitude1R) * ::cos(latitude2R) * Square(
            ::sin(deltaLongitude / 2)));
    double const c = 2 * ::atan2(::sqrt(a), ::sqrt(1 - a));
    return er * c;
}

some online tools


see also

geographic coordinate

geodetic / geographic coordinate

#
测量中常用的坐标系
* ENU
* NED
* 高斯投影
refs

测量中常用的坐标系

ECEF coordinate 空间直角坐标系

  • The point (0,0,0) is defined as the center of mass of the earth,
    hence the name “earth-centered.”

  • 空间直角坐标系的坐标系原点位于参考椭球的中心,

    • The z-axis extends through True north,
      which does not coincide with the instantaneous earth rotational axis.
      Z 轴指向参考椭球的北极,
    • The x-axis intersects the sphere of the earth at 0° latitude
      (the equator) and 0° longitude (prime meridian in Greenwich).
      X 轴指向起始子午面与赤道的交点,
    • Y 轴位于赤道面上且按右手系与 X 轴呈 90° 夹角。
  • 某点在空间中的坐标可用该点在此坐标系的各个坐标轴上的投影来表示。

  • 空间直角坐标系可用图 743px-ECEF.svg.png 来表示

geodetic coordinate 空间大地坐标系

  • 空间大地坐标系是采用大地经、纬度和大地高来描述空间位置的。

    • 纬度是空间的点与参考椭球面的法线与赤道面的夹角;
    • 经度是空间中的点与参考椭球的自转轴所在的面与参考椭球的起始子午面的夹角;
    • 大地高是空间点沿参考椭球的法线方向到参考椭球面的距离。
      空间大地坐标系可用图
      600px-Latitude_and_longitude_graticule_on_a_sphere.svg.png 来表示
      (A perspective view of the Earth showing how latitude (φ) and longitude (λ)
      are defined on a spherical model. The graticule spacing is 10 degrees.)

ENU

East (x), North (y), Up (z), referred as ENU

Up-Down in the direction to the center of the earth
(when using a spherical Earth simplification),
or in the direction normal to the local tangent plane
(using an oblate spheroidal or geodetic ellipsoidal model of the earth)
which does not generally pass through the center of the Earth.

NED

North (x), East (y), Down (z), referred as NED, used specially in aerospace

高斯投影

  • 正形投影
  • 中央子午线投影后应为 x 轴,且长度保持不变
  • 将中央子午线东西各一定经差(一般为 6 度或 3 度)
    范围内的地区投影到椭圆柱面上,
    再将此柱面沿某一棱线展开,便构成了高斯平面直角坐标系,
    如图 高斯投影.png 右侧所示, x 方向指北,y 方向指东.

refs