【问题标题】:How can I calculate distance and bearing using latitude and longitude?如何使用纬度和经度计算距离和方位?
【发布时间】:2010-11-14 13:05:24
【问题描述】:

假设这 4 个值:

        double lat1 = ToRadians(53.14722222222222);
        double lon1 = ToRadians(-1.8494444444444447);
        double lat2 = ToRadians(52.20444444444445);
        double lon2 = ToRadians(-0.14055555555555554);

我在谷歌地图中计算得到方向,我得到了大约 181 公里,但在这个网站 (http://www.movable-type.co.uk/scripts/latlong.html) 中得到了大约 170 公里。

在我的源码中,我使用java和c#来实现这个功能,当我计算出来时,我得到了大约155公里。

为什么它们不相等?

你有什么函数可以准确计算这两个值吗?

【问题讨论】:

    标签: c# java map navigation geolocation


    【解决方案1】:

    网站上的 Haversine 公式在“乌鸦飞翔”时相当准确。你没有说你是如何使用谷歌地图来计算距离的,但如果你只是简单地输入这些值并要求它计算一条路线,它将使用更长的行驶距离(跟随道路)。如果您对 Haversine 公式的实现给出了与网站不同的答案,那么您或他们都错误地实现了它。您可能会找到 another web site 来检查您的答案,看看是哪个。

    您可以在 C# here 中找到一个实现。

    【讨论】:

      【解决方案2】:

      在 Google 地球上,该值为 155.92 公里。 所以它与你的结果一致。

      Google 地球使用Great Circle Distance 计算,考虑到地球是一个球体这一事实。 不过我不知道其他两个来源。

      我会保留你当前的实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-10
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多