GPS距离计算可能不准确

时间:2018-04-01 15:52:14

标签: java c# android

我正在用java编写一个Android应用程序来计算使用GPS行进的距离。

应用程序每隔4秒将GPS坐标发送到服务器,从而将所有点保存在一个大阵列中。在旅程结束时,服务器通过将每个点之间的距离相加来计算总距离。

问题是最终距离总是比实际距离小一点,所以任何使用我的应用程序的人都会抱怨距离总是错误的!

也许距离总是较小的原因是驾驶时相距4秒的两点之间的距离总是小于实际距离,特别是如果驾驶员需要大量的曲线和转弯。

我知道改善这一点的唯一方法是将GPS位置更频繁地发送到服务器,但这将使用更多数据,再次惹恼用户!

有人知道如何解决这个问题吗?

以下是使用c#

中的大圆计算计算两点之间距离的代码
    public static double DistanceTo(double lat1, double lon1, double lat2, double lon2, char unit = 'M')
    {
        double rlat1 = Math.PI * lat1 / 180;
        double rlat2 = Math.PI * lat2 / 180;
        double theta = lon1 - lon2;
        double rtheta = Math.PI * theta / 180;
        double dist = Math.Sin(rlat1) * Math.Sin(rlat2) + Math.Cos(rlat1) * Math.Cos(rlat2) * Math.Cos(rtheta);
        dist = Math.Acos(dist);
        dist = dist * 180 / Math.PI;
        dist = dist * 60 * 1.1515;

        switch (unit) {
            case 'K': //Kilometers -> default
                return dist * 1.609344;
            case 'N': //Nautical Miles 
                return dist * 0.8684;
            case 'M': //Miles
                return dist;
        }

        return dist;
    }

0 个答案:

没有答案