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.
Réponses:
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 ()
la source
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
accuracy
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 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.
la source
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.
la source
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.java
fichier a unereportLocation
mé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_circular
paramètre de précision qui semble impliquer qu'au moins cette implémentation utilise CER.la source
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.
la source
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.
la source