105 votes

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

Quelqu'un sait-il comment interpréter les mesures de précision renvoyées par getAccuracy() ? Par exemple, sont-elles calculées comme :

  • 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% ?

  • quelque chose d'autre ?

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

Merci beaucoup pour tous les conseils que vous pourrez me donner.

4 votes

La question n'est pas de savoir comment l'emplacement est obtenu, mais de définir la valeur de retour de getAccuracy dans la classe d'emplacement.

76voto

karl Points 669

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

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

0 votes

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 la remarque de dscheffy est également importante.

0 votes

@paracycle fait également remarquer que la précision est signalée par le fournisseur, qui, en fin de compte, peut décider de la traiter comme il le souhaite. Par exemple, si vous utilisez le DDMS, vous obtiendrez une valeur de 0,0 pour la précision, car vous saisissez des coordonnées exactes.

12 votes

@AidenStrydom, non. Si la précision est de 1000, cela signifie qu'il y a 68 % de chances que l'emplacement réel se trouve à moins de 1000 mètres de l'emplacement fourni.

50voto

vendor Points 996

La localisation est une tâche délicate lorsque l'autonomie de la batterie est limitée et qu'il n'y a pas de signal GPS dans les bâtiments ou dans les zones où se trouvent de grands immeubles, etc. Mais Android rend la tâche beaucoup plus facile. Lorsque vous demandez une localisation, il vous suffit de préciser la précision dont vous avez besoin.

Si vous spécifiez que vous voulez un accuracy pour un exemple *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 tant qu'il n'y aura pas d'emplacement avec cette précision.

En général, Android obtient d'abord l'identifiant de la cellule, puis l'envoie au serveur de Google, qui cartographie ces identifiants. Le serveur renvoie une latitude et une longitude avec une faible précision, par exemple 1000 mètres. À ce moment-là, Android essaiera également de voir tous les réseaux WiFi de la zone et enverra des informations à leur sujet au serveur Google. Si possible, le serveur Google renverra un nouvel emplacement avec une plus grande précision, par exemple 800 mètres.

À ce moment-là, le GPS sera allumé. Le dispositif GPS a besoin d'au moins 30 secondes à partir d'un démarrage à froid pour obtenir une position. S'il peut obtenir une position, il renverra la latitude et la longitude, mais là encore avec une précision qui sera la plus élevée possible, par exemple de 100 mètres. Plus le GPS fonctionne longtemps, plus la précision est grande.

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 se trouve dans un bâtiment, vous n'obtiendrez probablement aucune localisation.

14 votes

Cela ne répond pas vraiment à la question de savoir ce que signifie "précision à 100 m".

2 votes

@vendor pouvez-vous indiquer la référence d'où vous avez obtenu cette information. Votre réponse m'a aidé à comprendre comment cela fonctionne, merci.

0 votes

Une partie des informations se trouve sur le site developer.Android.com et j'ai effectué quelques tests avec les services de localisation d'Android.

19voto

Janusz Points 52607

La documentation sur getAccuracy dit qu'il 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 d'un rayon de 60 mètres autour de la position fournie.

1 votes

Si je regarde sur mes cartes google et ma position actuelle vous avez raison... dans la plupart des cas. Il est également arrivé que mon téléphone affiche ma position à environ 2 ou 3 kilomètres de ma position réelle... Je suis également intéressé par cette question.

1 votes

Merci. Je suis d'accord pour dire que la valeur renvoyé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 la localisation). Mais il devrait également être associé à une probabilité, 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 cela pourrait être la PEC, mais cela semblait n'être qu'une supposition, donc j'aimerais vraiment trouver un moyen de confirmer si c'est cela ou un cercle de confiance à 95% ou autre chose.

1 votes

Voici quelques liens qui sont 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/

12voto

paracycle Points 4021

D'après ce que je peux voir d'un rapide coup d'œil au code source d'Android, cela dépend du matériel de l'appareil et de la valeur qu'il choisit de renvoyer.

Le site GpsLocationProvider.java a un reportLocation método qui est appelé par le code natif et se voit passer la précision comme valeur. Ainsi, aucun calcul ne semble se produire dans le cadre, du moins.

Le dépôt git de qcom (qui je crois est Qualcomm) GPS passe le site hor_unc_circular pour la précision, ce qui semble impliquer que, au moins, cette implémentation utilise le CER.

4voto

Joseph Earl Points 11953

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 la fourchette QUOTED_LOCATION +/- ACCURACY. La précision définit donc un rayon dans lequel vous pouvez vous attendre à ce que l'utilisateur se trouve. Ce que les documents ne disent pas, c'est à quel point vous pouvez être sûr que l'utilisateur se trouve dans ce rayon - la norme est de 95%, donc je suppose que c'est ça.

1 votes

Je suis plus intéressé par la confiance comme l'indique la question. Cela pourrait être une mesure parmi d'autres gpsinformation.net/main/errors.htm

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X