web-dev-qa-db-fra.com

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

Est-ce que quelqu'un connaît la bonne interprétation des mesures de précision retournées par getAccuracy ()? Par exemple, sont-ils calculés comme suit:

  • Probabilité d'erreur circulaire (ce qui signifie, si je comprends bien, le rayon d'un cercle de confiance de 50%)?

  • Rayon de cercle de confiance de 95%?

  • autre chose?

En outre, quels sont les calculs réels utilisés et dans quelle mesure pouvons-nous nous en servir? Est-ce que cela dépend de la source de l'estimation de la position (GPS ou réseau)?

Merci beaucoup pour tout conseil que vous pouvez me donner.

93
John R.B. Palmer

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

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

63
karl

La localisation est une tâche délicate à faire, lorsque la batterie est trop chargée et qu’il n’ya pas de signal GPS dans les bâtiments et dans les zones avec beaucoup de gros bâtiments, etc. Mais Android en fait beaucoup Lorsque vous demandez un emplacement, il vous suffit de spécifier de quelle précision vous avez besoin.

Si vous spécifiez que vous voulez un accuracy comme exemple *100 meters*, Android essaiera d’obtenir l’emplacement. S'il peut obtenir un emplacement d’une précision de 70 mètres, il vous le retournera, mais si Android peut obtenir un emplacement avec une précision supérieure à 100 mètres, votre application attendra et ne recevra rien tant qu’il n’y aura pas un emplacement d’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, lequel mappera ces identifiants de cellule et le serveur renverra une latitude et une longitude avec une précision faible pour un exemple. 1000 À 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. par exemple 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 une solution. Ainsi, s’il peut obtenir une solution, il renverra la latitude et la longitude, mais avec une précision supplémentaire, qui sera la plus élevée possible pour un exemple de 100 mètres. Plus le GPS fonctionne 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.

42
vendor

La documentation sur getAccuracy indique qu'elle renvoie l'exactitude 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.

17
Janusz

Autant que je sache, 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.Java Le fichier a une méthode reportLocation qui est appelée par le code natif et reçoit la précision sous forme de valeur. Ainsi, aucun calcul ne semble se produire dans le cadre au moins.

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

11
paracycle

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

4
Joseph Earl

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 de ce qu’il veut inclure dans cette valeur. Par conséquent, cela peut être une mauvaise hypothèse. Deuxièmement, il peut être utile de considérer cela comme un problème d'arrondi potentiel. 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, il est uniquement possible de calculer un emplacement avec un nombre donné de chiffres significatifs. Pensez-y de cette façon: qu’en est-il de "un" plus "de" cent. Probablement environ cent, parce que la précision de cent est probablement inférieure à la magnitude 1. Si je dis tout à coup que la réponse est environ 101, alors je pourrais finir par impliquer un niveau de précision qui n'existait pas. Cependant, si je précise la précision, je peux dire que 100 plus ou moins 10 plus 1 plus ou moins 0,1 est égal à 101 plus ou moins 10. Je comprends qu'il s'agit généralement d'un niveau de confiance de 95% ( erreur standard), mais là encore, tout suppose que le fournisseur comprend les statistiques et ne se contente pas de deviner.

1
dscheffy