¿Cómo se mide la precisión de la ubicación en Android?

95

¿Alguien conoce la interpretación correcta de las medidas de precisión devueltas por getAccuracy ()? Por ejemplo, se calculan como:

  • ¿Probabilidad de error circular (es decir, si lo entiendo correctamente, radio de un círculo de confianza del 50%)?

  • ¿Radio del círculo de confianza del 95%?

  • ¿algo más?

Además, ¿cuáles son los cálculos reales que se utilizan y cuánto podemos confiar en ellos? ¿Depende de la fuente de la estimación de ubicación (GPS frente a red)?

Muchas gracias por cualquier consejo que me puedas dar.

John RB Palmer
fuente
4
La pregunta no era cómo se obtiene la ubicación, sino la definición real del valor de retorno de getAccuracy en la clase de ubicación.
Janusz

Respuestas:

67

Para responder a una parte de la pregunta, el número the radius of 68% confidence,significa que hay un 68% de probabilidad de que la ubicación real esté dentro de ese radio del punto medido en metros. Suponiendo que los errores se distribuyen normalmente (lo que, como dicen los documentos, no es necesariamente cierto), eso significa que se trata de una desviación estándar. Por ejemplo, si Location.getAccuracydevuelve 10, entonces hay un 68% de probabilidad de que la verdadera ubicación del dispositivo esté dentro de los 10 metros de las coordenadas informadas.

http://developer.android.com/reference/android/location/Location.html#getAccuracy ()

karl
fuente
Gracias, Karl. Veo que ahora han actualizado la documentación, lo cual es muy útil. Esto es exactamente lo que estaba buscando, aunque creo que el punto de dscheffy también es importante.
John RB Palmer
@paracycle También hace un buen punto que la precisión la informa el proveedor, quien, al final, puede decidir manejarlo como quiera. Por ejemplo, el uso de DDMS proporcionará un valor de 0.0 para la precisión porque está colocando una coordenada exacta.
karl
11
@AidenStrydom, no. Si la precisión devuelve 1000, significa que hay un 68% de posibilidades de que la ubicación real esté dentro de los 1000 metros de la ubicación proporcionada.
karl
¿La precisión se ve afectada por el clima?
Juri Tichomirow
@karl, ¿quieres decir que el 32% está más allá de los 10 metros? (por ejemplo, 11 o 12 o más metros).
David
44

La ubicación es una tarea complicada, cuando tienes una batería de duración limitada y cuando no hay señal de GPS en edificios y en áreas con muchos edificios grandes, etc. Pero Android lo hace mucho más fácil. Cuando solicita una ubicación, solo tiene que especificar qué precisión necesita.

Si especifica que desea un accuracyejemplo *100 meters*, Android intentará obtener la ubicación y, si puede obtener una ubicación con una precisión de 70 metros, se la devolverá, pero si Android puede obtener una ubicación con una precisión superior a 100 metros, su aplicación esperará y no recibirá nada hasta que haya una ubicación con tal precisión.

Por lo general, Android primero obtendrá el ID de celda y luego lo enviará al servidor de Google, que mapea dichos ID de celda y el servidor devolverá una latitud y longitud con una precisión que es baja, por ejemplo, 1000 metros. En este momento, Android también intentará ver todas las redes WiFi en el área y también enviará información sobre ellas al servidor de Google y, si es posible, el servidor de Google devolverá una nueva ubicación con mayor precisión, por ejemplo, 800 metros.

Para entonces, el GPS estará encendido. El dispositivo GPS necesita al menos 30 segundos desde un arranque en frío para obtener una solución, por lo que si puede obtener una solución, devolverá la latitud y la longitud, pero nuevamente con una precisión, que será la más alta posible para un ejemplo de 100 metros. Cuanto más tiempo funcione el GPS, mayor precisión obtendrá.

Aviso importante: los dos primeros métodos requieren una conexión a Internet. Si no hay conexión de datos, tendrá que esperar al GPS, pero si el dispositivo está en un edificio, probablemente no obtendrá ninguna ubicación.

vendedor
fuente
14
Eso realmente no responde a la pregunta de qué significa "precisión de 100 m".
Tomas
2
@vendor, ¿podría indicar la referencia de la que obtuvo esta información? tu respuesta me ayudó a entender cómo funciona, gracias.
un jugador justo
@un jugador justo Parte de la información está en developer.android.com y he hecho algunas pruebas con los servicios basados ​​en la ubicación en Android.
proveedor
9
¿Qué API le permite especificar una precisión de 100 metros? Veo los criterios de ACCURACY_COARSE, ACCURACY_FINE, ACCURACY_HIGH, ACCURACY_LOW, ACCURACY_MEDIUM, pero no 100 metros.
Cris
¿En qué se basa esta respuesta?
AlikElzin-kilaka
18

La documentación sobre getAccuracy dice que devuelve la precisión en metros. Supongo que esto significa que si obtiene un valor de retorno de 60, se encuentra en algún lugar de un círculo con un radio de 60 metros alrededor de la posición proporcionada.

Janusz
fuente
1
si miro mis mapas de Google y mi posición actual, tienes razón ... en la mayoría de los casos. También sucedió que mi teléfono mostró mi posición a unos 2 o 3 kilómetros de mi posición real ... También me interesa este tema
poeschlorn
1
Gracias. Estoy de acuerdo en que el valor devuelto por getAccuracy está en metros y que debe ser el radio de un círculo (o quizás una esfera cuando la altitud también se da en la estimación de ubicación). Pero también debería haber una probabilidad asociada, y es extraño que la documentación no diga cuál es esa probabilidad o cómo se llega a ella. He visto una publicación en línea donde alguien sugirió que podría ser CEP, pero eso parecía ser solo una suposición, así que realmente me gustaría encontrar una manera de confirmar si es eso o un círculo de confianza del 95% o algo más.
John RB Palmer
1
Aquí hay algunos enlaces que son útiles para comprender la pregunta (pero que no la resuelven): users.erols.com/dlwilson/gpsacc.htm groups.google.com/group/android-developers/browse_thread/thread/…
John RB Palmer
12

Por lo que puedo ver de un vistazo rápido al código fuente de Android, esto depende del hardware del dispositivo y del valor que elija devolver.

El GpsLocationProvider.javaarchivo tiene un reportLocationmétodo al que llama el código nativo y se le pasa la precisión como un valor. Por lo tanto, al menos no parece estar ocurriendo ningún cálculo en el marco.

El repositorio de git GPS de qcom (que creo que es Qualcomm) está pasando el hor_unc_circularparámetro de precisión, lo que parece implicar que, al menos, esa implementación está utilizando CER.

paraciclo
fuente
4

Si, como se cita en los documentos, es una precisión, entonces la posición real del usuario está en algún lugar dentro de QUOTED_LOCATION +/- PRECISIÓN. Entonces, la precisión define un radio en el que podría esperar que esté el usuario. Lo que los documentos no dicen es qué tan seguro puede estar de que el usuario está dentro del radio: el estándar es del 95%, así que supongo que esto es así.

Joseph Earl
fuente
1
Me interesa más la confianza, como indica la pregunta. Podría ser una de las muchas medidas gpsinformation.net/main/errors.htm
Samuel
1

Entiendo que está pidiendo una respuesta definitiva en términos de probabilidad, pero creo que hay dos cosas a considerar aquí.

En primer lugar, depende del proveedor decidir qué quieren poner en este valor, por lo que, dependiendo del proveedor, puede ser una mala suposición.

En segundo lugar, puede resultar útil pensar en esto como un posible problema de redondeo. Si estoy tratando de calcular su ubicación en función de una cantidad de entradas, y algunas de esas entradas solo están disponibles para una cierta cantidad de dígitos significativos, entonces solo es posible calcular una ubicación con una cantidad determinada de dígitos significativos.

Piénselo de esta manera: ¿qué es "uno más" aproximadamente "cien? Probablemente alrededor de cien, porque la precisión de cien es probablemente menor que la magnitud de 1. Si de repente digo que la respuesta es alrededor de 101, entonces puedo terminar implicando un nivel de precisión que no estaba allí. Sin embargo, si realmente especifico la precisión, entonces puedo decir que 100 más o menos 10 más 1 más o menos .1 es 101 más o menos 10. Entiendo que esto generalmente se refiere a un nivel de confianza del 95% ( error estándar), pero de nuevo, todo eso asume que el proveedor comprende las estadísticas y no solo está adivinando.

dscheffy
fuente
Gracias, esto es muy útil. En el primer tema, mi enfoque con el seguimiento de la ubicación ha sido recopilar estimaciones de precisión, pero también realizar una "verificación de la realidad" calculando distancias y tiempos entre puntos sucesivos y luego descartando aquellos que habrían requerido velocidades poco realistas (incluso si, como a veces ocurre caso, se informa que tienen una precisión precisa). Si tiene alguna otra sugerencia, me encantaría escucharla.
John RB Palmer