【问题标题】:Shortest distance calculation using GPS Co - ordinates使用 GPS 坐标计算最短距离
【发布时间】:2011-12-16 10:39:04
【问题描述】:

我想知道 GPS 坐标的计算公式,最短距离计算精度 >= 5 mtr。

我已经检查过Haversine 公式和大圆距离公式。但它们适用于长距离计算。如果我们谈论 mtrs 的准确性,应该使用哪个公式?

【问题讨论】:

    标签: geolocation gps geometry


    【解决方案1】:

    Vincenty's formulae 在 WGS84 近似地球形状上精确到毫米级(显然,地球在这种程度上与 WGS84 不一致)。

    几年前,我为distance calculation in Javascript 实现了一些算法。由于代码缺少 cmets,请随时询问您是否对算法有任何疑问。

    一个潜在的问题是,这些算法在海平面上工作并且没有考虑高度差异。改用convert to geocentrical cartesian coordinates 并使用直线距离可能会更好...

    经度φ、纬度λ、高度h的点的直线距离d的直接表达式为

    k = √(a²·cos²φ + b²·sin²φ)
    r = (a²/k + h)·cosφ
    z = (b²/k + h)·sinφ
    d = √((z - z')² + r² + r'² - 2·r·r'·cos(λ - λ'))
    

    使用以下参数值

    a = 6378137m
    b = (a·297.257223563)/298.257223563
    

    【讨论】:

      【解决方案2】:

      如果 (long0, lat0) 是一个点, (long1, lat1) 是另一个:

      对于小距离,您可以使用:

      x0 = long0 * r_earth * cos(lat0)
      y0 = lat0  * r_earth
      x1 = long1 * r_earth * cos(lat1)
      y1 = lat1  * r_earth
      dx = x0 - x1
      dy = y0 - y1
      d = sqrt(dx*dx + dy*dy)
      

      long = 经度弧度
      lat = 纬度弧度
      r_earth = 地球半径

      您可以通过分解 r_earth 和/或假设 cos(lat0)==cos(lat1) 来进一步简化此公式。

      【讨论】:

      • 谢谢,我正在使用用于车辆跟踪器的 SIM18 GPS 模块。对于跟踪应用程序,我们需要准确的结果。是否适合跟踪应用。
      • @Prakesh:我不明白你的意思。你觉得不够准确吗?您说您不想使用大圆公式,因为您的距离很小。对于小距离,此公式将足够准确。如果它不符合您的要求,您必须使用大圆公式。
      • 非常感谢。我会检查并回复你的结果。
      • @Tomalak Geret'kal:Prakash 说他对长距离不感兴趣。所以我假设人们可以忽略地球是椭球体,甚至忽略地球表面在特定的小距离内并不平坦。
      • @Curd:他根本没这么说。他所说的只是他想要体面的准确性。此外,即使在很短的距离内,如果您在该地区的地球半径值是错误的,那么您的三角函数也将是错误的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      相关资源
      最近更新 更多