使用 GPS 提高测量距离的准确性

Posted

技术标签:

【中文标题】使用 GPS 提高测量距离的准确性【英文标题】:Improve accuracy of measured distance with GPS 【发布时间】:2013-06-22 14:12:32 【问题描述】:

我目前正在测量用户步行/跑步/等的距离。当我将我的结果与其他应用程序的结果进行比较时,我的结果并不像其他应用程序那样准确(即 100m 是正确的,我的结果大约是 50m)。那么如何提高准确性以获得更准确的结果呢?

到目前为止,我正在做的是:

初始化 CLLocationManager:

locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
locationManager.distanceFilter = 10;

和:

- (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

    CLLocation *lastLocation = [locations lastObject];

    NSTimeInterval age = -[lastLocation.timestamp timeIntervalSinceNow];

    if (age > 30.0) return;

    if (lastLocation.horizontalAccuracy < 0) return; // ignore invalid updates

    if (previousLocation == nil || previousLocation.horizontalAccuracy < 0)
    
        previousLocation = lastLocation;
        return;
    

    CLLocationDistance distance = [lastLocation distanceFromLocation:previousLocation];

    if ([delegate respondsToSelector:@selector(currentDistance:)])
    
        [delegate currentDistance:distance];
    

    previousLocation = lastLocation;  

干杯!

【问题讨论】:

【参考方案1】:

根据设置和设备硬件,通常以 3 种方式进行地理定位:

蜂窝无线电 wifi 映射 全球定位系统

-desiredAccuracy 属性设置应该打开这三种模式中的哪一种。另一方面,您要求最新响应的最准确度是。首先,您将获得无线电(仅适用于手机设备),如果打开 WiFI 并且打开手机数据,您将获得 WiFi 地理位置,通常在 +- 100m 左右,并且在 GPS 之后很多(如果可用)。 GPS的延迟是由于两次搜索卫星和电池优化。对于跑步,我建议您使用所需的精度kCLLocationAccuracyBestForNavigation,一旦 GPS 发挥作用,您应该获得接近 +-10m 的值。 另一件事是将-distanceFilter 设置为 5 米,如果 CoreLocation Manager 得到一个 delta >= 5 米的新测量值,它将调用委托方法。 如果要排除水平精度大于某个值的位置,只需添加另一个逻辑条件。 我建议您也阅读这些答案link

【讨论】:

以上是关于使用 GPS 提高测量距离的准确性的主要内容,如果未能解决你的问题,请参考以下文章

GPS坐标的多点定位

如何提高 ARKit 测量两个 SCNNode 之间距离的准确性?

如何使用手机gps定位两点之间的直线距离?

中海达GPS怎么测量2个点之间的距离

iOS 和 Android 上相对地理定位的准确性

使用 GPS 坐标计算最短距离