【问题标题】:Latitude and Longitude radius经纬度半径
【发布时间】:2013-03-02 10:21:28
【问题描述】:

我正在开发应用程序,我首先将用户纬度和经度发送到服务器。服务器也有一些以前存储的坐标,现在应用程序必须检查用户坐标是否在服务器已有坐标的 1km 或 2km 半径内。

我发现的一种方法是将初始坐标作为圆心,但这并不准确。 任何建议我应该遵循哪种算法和来源可以帮助我理解这一点。

【问题讨论】:

    标签: geocoding latitude-longitude


    【解决方案1】:
        R  =  6378.1;  //  radius of the Earth (km)
        dlat = deg2rad( $lat1-$lat2 ) // lattitude diference in radians
        dlang = deg2rad ( $lang1 - $lang2 ) //longitude diference in radian
    

    地球的半径远大于 1-2 km ,所以我们可以使用毕达哥拉斯定理,我们得到了 0.03 % 的准确率 ~ 0.3 m。

       distance = R * sqrt( $dlat^2 + $dlang^2  );
       // same:   distance =  sqrt( ($dlat*R)^2 + ($dlang*R)^2)   )
    

    这可能有助于您理解: http://en.wikipedia.org/wiki/Spherical_coordinate_system

    球坐标系与地理位置坐标系不同,但要了解您需要什么,我认为下面的链接有一个很好的解释。

    如果您需要更高的准确性: 请参阅 Worked example 部分的http://en.wikipedia.org/wiki/Great-circle_distance

    当距离只有几公里时,精度差异很小,但使用我写的公式计算时间要好得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 2011-02-12
      • 2011-08-04
      • 2013-03-15
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      相关资源
      最近更新 更多