Comment la précision de la localisation est-elle mesurée dans Android?

95

Quelqu'un connaît-il l'interprétation correcte des mesures de précision renvoyées par getAccuracy ()? Par exemple, sont-ils calculés comme suit:

  • Probabilité d'erreur circulaire (c'est-à-dire, si je comprends bien, le rayon d'un cercle de confiance de 50%)?

  • Rayon du cercle de confiance à 95%?

  • autre chose?

En outre, quels sont les calculs réels qui sont utilisés et dans quelle mesure pouvons-nous nous fier à eux? Cela dépend-il de la source de l'estimation de l'emplacement (GPS vs réseau)?

Merci beaucoup pour tout conseil que vous pouvez me donner.

John RB Palmer
la source
4
La question n'était pas de savoir comment l'emplacement est obtenu, mais plutôt la définition réelle de la valeur de retour de getAccuracy dans la classe d'emplacement.
Janusz

Réponses:

67

Pour répondre à une partie de la question, le nombre the radius of 68% confidence,signifie qu'il y a 68% de chances que l'emplacement réel se trouve dans ce rayon du point mesuré en mètres. En supposant que les erreurs sont normalement distribuées (ce qui, comme le disent les documents, n'est pas nécessairement vrai), cela signifie qu'il s'agit d'un écart type. Par exemple, siLocation.getAccuracy renvoie 10, alors il y a 68% de chances que l'emplacement réel de l'appareil soit à moins de 10 mètres des coordonnées signalées.

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

Karl
la source
Merci, Karl. Je vois qu'ils ont maintenant mis à jour la documentation, ce qui est très utile. C'est exactement ce que je cherchais même si je pense que le point de dscheffy est également important.
John RB Palmer
@paracycle souligne également que la précision est signalée par le fournisseur, qui, à la fin, peut décider de la gérer comme il le souhaite. Par exemple, l'utilisation de DDMS fournira une valeur de 0,0 pour la précision, car vous mettez une coordonnée exacte.
karl
11
@AidenStrydom, non. Si la précision renvoie 1000, cela signifie qu'il y a 68% de chances que l'emplacement réel soit à moins de 1000 mètres de l'emplacement fourni.
karl
La précision est-elle affectée par les conditions météorologiques?
Juri Tichomirow
@karl voulez-vous dire que 32% est au-delà de 10 mètres? (par exemple 11 ou 12 mètres ou plus).
david
44

L'emplacement est une tâche délicate à faire, lorsque la durée de vie de la batterie est limitée et qu'il n'y a pas de signal GPS dans les bâtiments et dans les zones avec de nombreux grands bâtiments, etc. Mais Android rend les choses beaucoup plus faciles. Lorsque vous demandez un emplacement, il vous suffit de spécifier la précision dont vous avez besoin.

Si vous spécifiez que vous voulez un accuracyexemple *100 meters*, Android essaiera d'obtenir l'emplacement et s'il peut obtenir un emplacement avec une précision de 70 mètres, il vous le renverra, mais si Android peut obtenir un emplacement avec une précision supérieure à 100 mètres, votre application attendra et ne recevra rien jusqu'à ce qu'il y ait un emplacement avec une telle précision.

En règle générale, Android obtiendra d'abord l'identifiant de la cellule, puis l'enverra au serveur Google, qui mappera ces identifiants de cellule et le serveur renverra une latitude et une longitude avec une précision faible pour un exemple de 1000 mètres. À ce moment-là, Android essaiera également de voir tous les réseaux WiFi de la région et enverra également des informations à leur sujet au serveur de Google et si possible, le serveur de Google renverra un nouvel emplacement avec une plus grande précision pour un exemple de 800 mètres.

À ce moment-là, le GPS sera activé. L'appareil GPS a besoin d'au moins 30 secondes à partir d'un démarrage à froid pour obtenir un correctif, donc s'il peut obtenir un correctif, il retournera la latitude et la longitude, mais encore une fois avec une précision, qui sera la plus élevée possible pour un exemple de 100 mètres. Plus le GPS fonctionnera longtemps, meilleure sera la précision.

Avis important: les deux premières méthodes nécessitent une connexion Internet. S'il n'y a pas de connexion de données, vous devrez attendre le GPS, mais si l'appareil est dans un bâtiment, vous n'obtiendrez probablement aucun emplacement.

vendeur
la source
14
Cela ne répond pas vraiment à la question de savoir ce que signifie «précision à 100 m».
Tomas
2
@vendor pouvez-vous s'il vous plaît indiquer la référence à partir de laquelle vous avez obtenu cette information. ta réponse m'a aidé à comprendre comment ça marche, merci.
un joueur équitable
@a fair player Certaines informations se trouvent dans developer.android.com et j'ai fait quelques tests avec les services de localisation d'Android.
vendeur
9
Quelle API vous permet de spécifier une précision de 100 mètres? Je vois les critères de ACCURACY_COARSE, ACCURACY_FINE, ACCURACY_HIGH, ACCURACY_LOW, ACCURACY_MEDIUM, mais pas 100 mètres.
Cris
Sur quoi repose cette réponse?
AlikElzin-kilaka
18

La documentation sur getAccuracy indique qu'elle renvoie la précision en mètres. Je suppose que cela signifie que si vous obtenez une valeur de retour de 60, vous vous trouvez quelque part dans un cercle avec un rayon de 60 mètres autour de la position fournie.

Janusz
la source
1
si je regarde mes google maps et ma position actuelle, vous avez raison ... dans la plupart des cas. Il est également arrivé que mon téléphone montre ma position à environ 2 ou 3 kilomètres de ma position réelle ... Je suis également intéressé par cette question
poeschlorn
1
Merci. Je conviens que la valeur retournée par getAccuracy est en mètres et qu'il doit s'agir du rayon d'un cercle (ou peut-être d'une sphère lorsque l'altitude est également donnée dans l'estimation de l'emplacement). Mais il devrait également y avoir une probabilité associée, et il est étrange que la documentation ne dise pas quelle est cette probabilité ou comment elle est obtenue. J'ai vu une publication en ligne où quelqu'un a suggéré que c'était peut-être le CEP, mais cela semblait être juste une supposition, alors j'aimerais vraiment trouver un moyen de confirmer si c'est cela ou un cercle de confiance à 95% ou autre chose.
John RB Palmer
1
Voici quelques liens utiles pour comprendre la question (mais qui ne la résolvent pas): users.erols.com/dlwilson/gpsacc.htm groups.google.com/group/android-developers/browse_thread/thread/…
John RB Palmer
12

Pour autant que je puisse voir d'un coup d'œil rapide sur le code source Android, cela dépend du matériel de l'appareil et de la valeur qu'il choisit de renvoyer.

Le GpsLocationProvider.javafichier a une reportLocationméthode qui est appelée par le code natif et obtient la précision transmise en tant que valeur. Ainsi, aucun calcul ne semble se produire dans le cadre au moins.

Le repo GPS git qcom (qui, je crois, est Qualcomm), passe le hor_unc_circularparamètre de précision qui semble impliquer qu'au moins cette implémentation utilise CER.

paracycle
la source
4

Si, comme indiqué dans la documentation, il s'agit d'une précision, alors la position réelle de l'utilisateur se situe quelque part dans QUOTED_LOCATION +/- ACCURACY. Ainsi, la précision définit un rayon où vous pouvez vous attendre à ce que l'utilisateur se trouve. Ce que la documentation ne dit pas, c'est à quel point vous pouvez être sûr que l'utilisateur est dans un rayon - la norme est de 95%, donc je suppose que c'est tout.

Joseph Earl
la source
1
Je suis plus intéressé par la confiance comme l'indique la question. Cela pourrait être l'une des nombreuses mesures gpsinformation.net/main/errors.htm
Samuel
1

Je comprends que vous demandez une réponse définitive en termes de probabilité, mais je pense qu'il y a deux choses à considérer ici.

Tout d'abord, c'est au fournisseur de décider ce qu'il veut mettre dans cette valeur, donc selon le fournisseur, cela peut être une mauvaise estimation.

Deuxièmement, il peut être utile de considérer cela comme un problème potentiel d'arrondi. Si j'essaie de calculer votre emplacement en fonction d'un certain nombre d'entrées, et que certaines de ces entrées ne sont disponibles que pour un certain nombre de chiffres significatifs, alors il est uniquement possible de calculer un emplacement avec un nombre donné de chiffres significatifs.

Pensez-y de cette façon - ce qui est "environ" un plus "environ" cent. Probablement une centaine, car la précision de cent est probablement inférieure à la magnitude de 1. Si je dis soudain que la réponse est d'environ 101, alors je pourrais finir par impliquer un niveau de précision qui n'était pas là. Cependant, si je spécifie réellement la précision, alors je peux dire que 100 plus ou moins 10 plus 1 plus ou moins 0,1 est 101 plus ou moins 10. Je comprends que cela fait généralement référence à quelque chose comme un niveau de confiance de 95% ( erreur standard), mais encore une fois, cela suppose que le fournisseur comprend les statistiques et ne se contente pas de deviner.

Dscheffy
la source
Merci, ceci est très utile. Sur le premier problème, mon approche avec le suivi de la localisation a consisté à collecter des estimations de précision mais aussi à effectuer une "vérification de la réalité" en calculant les distances et les temps entre les points successifs, puis en écartant ceux qui auraient nécessité des vitesses irréalistes (même si, comme c'est parfois le cas cas, ils sont signalés comme ayant une précision précise). Si vous avez d'autres suggestions, j'aimerais les entendre.
John RB Palmer