首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLLocation高程精度

CLLocation高程精度
EN

Stack Overflow用户
提问于 2011-11-27 06:38:31
回答 2查看 9.1K关注 0票数 10

我有一个位置服务应用程序,其中提供了用户的海拔。然而,我发现CLLocationManager提供的高程精度是非常不准确的。当我测试相同的两个点两次时,有时高程差是40英尺,有时是100英尺。有没有什么方法可以提高CLLocation的垂直精度,或者是否有不同的方法来获取用户的高程(第三方库)?我已经尝试过检查CLLocationManager提供的newLocation的verticalAccuracy属性,如果还不够,就抛出它,但即使它足够“准确”,它仍然经常不准确。耽误您时间,实在对不起!

现在我使用的是:

代码语言:javascript
复制
if([newLocation verticalAccuracy] < 30) {
    if(isCustomary)
        altitudeLabel.text = [NSString stringWithFormat:@"%.2f feet", ([newLocation altitude] * 3.2808399)];
    else
        altitudeLabel.text = [NSString stringWithFormat:@"%.2f meters", [newLocation altitude]];
}

该代码的问题:通常情况下,verticalAccuracy永远不会低于30,即使低于30,也仍然不够准确;我在我的房子周围(一个故事)测试了代码,它显示海拔高度变化到19英尺,我确信这不是真的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-29 11:36:29

由于卫星的geometry,由GPS卫星得到的高程固有地比由GPS得到的水平解的精度要低。你应该期望垂直精度通常比水平精度差1.5到3倍。这只是GPS的局限性,以及为什么航空需要WAAS校正,然后才能使用GPS进行仪表方法。

当垂直精度是20或30米时,你应该期望高度下降到100英尺。当你在不切实际的房子里走来走去时,期望它不会变化19英尺。

您可以做的是对最近的“良好”高度读数进行滚动加权平均(或Kalman filter),以帮助过滤测量误差。

票数 28
EN

Stack Overflow用户

发布于 2011-11-29 11:23:49

你尝试过什么代码?这是最好的高程代码,所以我认为没有什么比这个更好的了:

代码语言:javascript
复制
-(void)awakeFromNib {
  locmanager = [[CLLocationManager alloc] init];
  [locmanager setDelegate:self];
  [locmanager setDesiredAccuracy:kCLLocationAccuracyBest];
  [locmanager startUpdatingLocation];
}

  - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
  heightMesurement.text = [NSString stringWithFormat: @"%.2f m",   newLocation.altitude];
}

  - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
  heightMesurement.text = @"0.00 m";
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8282169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档