Precisión de elevación CLLocation

Tengo una aplicación de service de location, en la que se proporciona la elevación del usuario. Sin embargo, he descubierto que la precisión de elevación proporcionada por CLLocationManager es extremadamente imprecisa. Cuando pruebo los mismos dos puntos dos veces, a veces la diferencia de elevación es de cuarenta pies y, a veces, es cien. ¿Hay alguna manera de mejorar la precisión vertical de CLLocation o hay una forma diferente de adquirir la elevación del usuario (bibliotecas de terceros)? Ya he intentado comprobar la propiedad verticalAccuracy de la nueva location proporcionada por el CLLocationManager y tirarla si no es suficiente, pero incluso cuando es lo suficientemente 'precisa', todavía a menudo no es realmente precisa. ¡Gracias por tu time!

En este momento estoy usando:

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]]; } 

Problemas con ese código: a menudo, la precisión vertical nunca llega a ser inferior a 30, y cuando lo hace, eso aún no es lo suficientemente preciso; He probado el código que recorre mi casa (una historia), y dice que la elevación cambia hasta diecinueve pies, lo cual, estoy seguro, no es cierto.

La elevación derivada de los satélites GPS es intrínsecamente less precisa que la solución horizontal del GPS debido a la geometry de los satélites. Debe esperar que la precisión vertical sea generalmente de 1.5 a 3 veces peor que la precisión horizontal. Eso es solo una limitación del GPS y por qué la aviación requiere la corrección de WAAS antes de poder usar el GPS para aproximaciones de instrumentos.

Cuando la precisión vertical es de 20 o 30 metros, debes esperar que la altitud esté a 100 pies. Esperando que no varíe por 19 pies mientras caminas por la casa en poco realists.

Lo que podría hacer es mantener un promedio ponderado (o un filter de Kalman ) de las lecturas de altitud "buenas" recientes para ayudar a filtrar los errores de medición.

¿Qué código has probado? Este es el mejor código para la elevación, así que no creo que haya nada más allá de esto:

 -(void)awakeFromNib { locmanager = [[CLLocationManager alloc] init]; [locmanager setDelegate:self]; [locmanager setDesinetworkingAccuracy: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"; } 
    Intereting Posts