Come viene misurata la precisione della posizione su Android?


95

Qualcuno conosce la corretta interpretazione delle misurazioni di accuratezza restituite da getAccuracy ()? Ad esempio, vengono calcolati come:

  • Probabilità di errore circolare (che significa, se ho capito correttamente, raggio di un cerchio di confidenza del 50%)?

  • Raggio del cerchio di confidenza al 95%?

  • qualcos'altro?

Inoltre, quali sono i calcoli effettivi utilizzati e quanto possiamo fare affidamento su di essi? Dipende dalla fonte della stima della posizione (GPS vs. rete)?

Molte grazie per qualsiasi consiglio che puoi darmi.


4
La domanda non era come viene ottenuta la posizione, ma la definizione effettiva del valore restituito di getAccuracy nella classe di posizione.
Janusz

Risposte:


67

Per rispondere a una parte della domanda, il numero the radius of 68% confidence,significa che c'è una probabilità del 68% che la posizione reale si trovi all'interno del raggio del punto misurato in metri. Supponendo che gli errori siano normalmente distribuiti (il che, come dicono i documenti, non è necessariamente vero), ciò significa che questa è una deviazione standard. Ad esempio, se Location.getAccuracyrestituisce 10, c'è una probabilità del 68% che la vera posizione del dispositivo sia entro 10 metri dalle coordinate riportate.

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


Grazie, Karl. Vedo che ora hanno aggiornato la documentazione, il che è molto utile. Questo è esattamente quello che stavo cercando, anche se penso che anche il punto di dscheffy sia importante.
John RB Palmer

@paracycle sottolinea anche che l'accuratezza viene segnalata dal provider, che, alla fine, può decidere di gestirla come preferisce. Ad esempio, l'utilizzo di DDMS fornirà un valore di 0,0 per la precisione perché stai inserendo una coordinata esatta.
karl

11
@AidenStrydom, no. Se la precisione restituisce 1000, significa che c'è una probabilità del 68% che la posizione reale si trovi entro 1000 metri dalla posizione fornita.
karl

La precisione è influenzata dal tempo?
Juri Tichomirow

@karl intendi che il 32% è oltre i 10 metri? (es. 11 o 12 o più metri).
david

44

La posizione è un compito difficile da fare, quando hai una durata della batteria limitata e quando non c'è segnale GPS negli edifici e in aree con molti edifici di grandi dimensioni, ecc. Ma Android lo rende molto più semplice. Quando richiedi una posizione, devi solo specificare di quale precisione hai bisogno.

Se si specifica che si desidera che un accuracyper un esempio *100 meters*, Android cercherà di ottenere la posizione e se si può ottenere una posizione per la precisione 70 metri, verrà restituito a voi, ma se Android può ottenere una posizione con una precisione superiore a 100 metri, la tua applicazione attenderà e non riceverà nulla finché non sarà disponibile una posizione con tale precisione.

In genere Android prima otterrà l'ID cella e poi lo invierà al server di Google, che mappa tali ID cella e il server restituirà una latitudine e una longitudine con una precisione che è bassa per un esempio 1000 metri. A questo punto Android proverà anche a vedere tutte le reti WiFi nell'area e invierà anche informazioni su di loro al server di Google e se possibile il server di Google restituirà una nuova posizione con maggiore precisione per un esempio 800 metri.

A questo punto il GPS sarà acceso. Il dispositivo GPS necessita di almeno 30 secondi da un avvio a freddo per ottenere una correzione, quindi se può ottenere una correzione restituirà latitudine e longitudine ma ancora con una precisione, che sarà la più alta possibile per un esempio 100 metri. Più a lungo funziona il GPS, migliore sarà la precisione.

Avviso importante: i primi due metodi richiedono una connessione Internet. Se non è presente una connessione dati, dovrai attendere il GPS, ma se il dispositivo si trova in un edificio, probabilmente non otterrai alcuna posizione.


14
Ciò non risponde realmente alla domanda che cosa significhi "precisione di 100 m".
Tomas

2
@vendor, puoi indicare il riferimento da cui hai ottenuto questa informazione. la tua risposta mi ha aiutato a capire come funziona, grazie.
un discreto giocatore il

@un fair player Alcune delle informazioni sono in developer.android.com e ho effettuato alcuni test con i servizi basati sulla posizione in Android.
venditore

9
Quale API ti consente di specificare una precisione di 100 metri? Vedo i criteri di ACCURACY_COARSE, ACCURACY_FINE, ACCURACY_HIGH, ACCURACY_LOW, ACCURACY_MEDIUM, ma non 100 metri.
Crisi

Su cosa si basa questa risposta?
AlikElzin-kilaka

18

La documentazione su getAccuracy dice che restituisce la precisione in metri. Immagino che questo significhi che se ottieni un valore di ritorno di 60 sei da qualche parte in un cerchio con un raggio di 60 metri intorno alla posizione fornita.


1
se guardo le mie mappe di google e la mia posizione attuale hai ragione ... nella maggior parte dei casi. È anche successo che il mio telefono mostrasse la mia posizione a circa 2 o 3 chilometri di distanza dalla mia posizione reale ... Anche a me interessa questo problema
poeschlorn

1
Grazie. Sono d'accordo che il valore restituito da getAccuracy è in metri e che deve essere il raggio di un cerchio (o forse una sfera quando nella stima della posizione è indicata anche l'altitudine). Ma dovrebbe esserci anche una probabilità ad essa associata, ed è strano che la documentazione non dica quale sia tale probabilità o come si sia arrivati. Ho visto un post online in cui qualcuno suggeriva che potesse essere CEP, ma sembrava essere solo un'ipotesi, quindi mi piacerebbe davvero trovare un modo per confermare se è quello o un cerchio di fiducia del 95% o qualcos'altro.
John RB Palmer

1
Ecco alcuni link utili per comprendere la domanda (ma che non la risolvono): users.erols.com/dlwilson/gpsacc.htm groups.google.com/group/android-developers/browse_thread/thread/…
John RB Palmer

12

Per quanto posso vedere da una rapida occhiata al codice sorgente di Android, questo dipende dall'hardware del dispositivo e dal valore che sceglie di restituire.

Il GpsLocationProvider.javafile ha un reportLocationmetodo che viene chiamato dal codice nativo e ottiene la precisione come valore. Pertanto, almeno nel quadro non sembra che avvenga alcun calcolo.

Il repository git GPS qcom (che credo sia Qualcomm) sta passando il hor_unc_circularparametro per la precisione che sembra implicare che, almeno, quell'implementazione stia usando CER.


4

Se, come citato nei documenti, è una precisione, la posizione effettiva dell'utente è da qualche parte all'interno di QUOTED_LOCATION +/- PRECISIONE. Quindi la precisione definisce un raggio in cui ci si potrebbe aspettare che si trovi l'utente. Quello che i documenti non dicono è quanto puoi essere sicuro che l'utente si trovi nel raggio: lo standard è del 95%, quindi immagino che sia così.


1
Sono più interessato alla fiducia come indica la domanda. Potrebbe essere una delle tante misurazioni gpsinformation.net/main/errors.htm
Samuel

1

Capisco che stai chiedendo una risposta definitiva in termini di probabilità, ma penso che ci siano due cose da considerare qui.

Prima di tutto, spetta al provider decidere cosa inserire in questo valore, quindi a seconda del provider, potrebbe essere solo una cattiva ipotesi.

In secondo luogo, può essere utile pensare a questo come a un potenziale problema di arrotondamento. Se sto cercando di calcolare la tua posizione in base a un numero di input e alcuni di questi input sono disponibili solo per un certo numero di cifre significative, è possibile calcolare solo una posizione con un dato numero di cifre significative.

Pensala in questo modo: cos'è "su" uno più "su" cento. Probabilmente circa cento, perché la precisione di cento è probabilmente inferiore alla magnitudine di 1. Se improvvisamente dico che la risposta è circa 101, allora potrei finire per implicare un livello di accuratezza che non c'era. Tuttavia, se indico effettivamente l'accuratezza, posso dire che 100 più o meno 10 più 1 più o meno 0,1 è 101 più o meno 10. Capisco che questo si riferisce generalmente a qualcosa come un livello di confidenza del 95% ( errore standard), ma ancora una volta, tutto presuppone che il provider comprenda le statistiche e non stia solo supponendo.


Grazie, è molto utile. Sulla prima questione, il mio approccio con il rilevamento della posizione è stato quello di raccogliere stime di accuratezza ma anche di eseguire un "controllo di realtà" calcolando distanze e tempi tra punti successivi e quindi scartando quelli che avrebbero richiesto velocità non realistiche (anche se, come talvolta accade caso, sono segnalati come aventi una precisione precisa). Se hai altri suggerimenti, mi piacerebbe ascoltarli.
John RB Palmer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.