【问题标题】:How accurate is distanceFromLocation on Iphone vs calculating it yourself in cartesian cordinates?距离 Iphone 上的位置与在笛卡尔坐标中自己计算的距离有多准确?
【发布时间】:2011-03-08 19:58:11
【问题描述】:

在 Iphone SDK 中,distanceFromLocation: 表示它根本不使用高度。如果我正在编写一个应用程序来跟踪我步行/骑车/等多远(是的,我知道已经有很多人这样做了),我很好奇这有多重要。有任何人对此有经验吗?

当我说笛卡尔线时,我的意思是这样的(在 C# 中,而不是在客观 C 中):

        double lattitude, longitude, altitude, x, y, z, x1, y1, z1, S;
        double a = 6378137, C, f = 1 / 298.257224;

        lattitude = <insert degrees> * Math.PI / 180.0;
        longitude = <insert degrees> * Math.PI / 180.0;
        altitiude = <insert altitude>

        C= 1 / (Math.Sqrt(Math.Pow(Math.Cos(lattitude),2.0) + Math.Pow((1 - f),2.0) *Math.Pow(Math.Sin(lattitude),2.0)));
        S = Math.Pow(1 - f, 2.0) * C;
        x = (a*C+altitude) * Math.Cos(lattitude) * Math.Cos(longitude);
        y = (a*C+altitude) *Math.Cos(lattitude) * Math.Sin(longitude);
        z = (a*S+altitude) * Math.Sin(lattitude);

        lattitude = <insert degrees new> * Math.PI / 180.0;
        longitude = <insert degrees new> * Math.PI / 180.0;
        altitiude = <insert altitude new>;


        x1 = (a * C + altitude) * Math.Cos(lattitude) * Math.Cos(longitude);
        y1 = (a * C + altitude) * Math.Cos(lattitude) * Math.Sin(longitude);
        z1 = (a * S + altitude) * Math.Sin(lattitude);

        double distance;
        distance = Math.Sqrt(Math.Pow(x1 - x, 2.0) + Math.Pow(y1 - y, 2.0) + Math.Pow(z1 - z, 2.0));

有谁知道它实际上有多大的不同?本质上它是如何在iphone上精确计算的?大圆距离?我似乎无法在任何地方找到答案

【问题讨论】:

    标签: c# iphone objective-c location cllocationmanager


    【解决方案1】:

    The docs说:

    "此方法测量距离 通过跟踪两个位置之间 它们之间的线遵循 地球的曲率。所结果的 圆弧是平滑曲线,不 考虑到特定的高度 两个位置之间的变化。”

    对我来说,这意味着大圆距离(事实上,它几乎是它的definition)。

    我的理解(虽然我当然不是专家)是大圆计算(例如Haversine)是非常典型的,并且对于大多数应用程序通常被认为“足够好”。

    关于主题here 的信息可能比您想要的多得多。 This question 也是半相关的。

    如果您真的很担心,我会尝试几种不同的算法,看看您是否可以确定哪种最适合您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-31
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多