Como a precisão da localização é medida no Android?


95

Alguém sabe a interpretação adequada das medições de precisão retornadas por getAccuracy ()? Por exemplo, eles são calculados como:

  • Probabilidade de erro circular (ou seja, se bem entendi, raio de um círculo de confiança de 50%)?

  • Raio do círculo de confiança de 95%?

  • algo mais?

Além disso, quais são os cálculos reais que são usados ​​e quanto podemos confiar neles? Depende da fonte da estimativa de localização (GPS x rede)?

Muito obrigado por qualquer conselho que você possa me dar.


4
A questão não era como a localização é obtida, mas sobre a definição real do valor de retorno de getAccuracy na classe de localização.
Janusz

Respostas:


67

Para responder a uma parte da pergunta, o número the radius of 68% confidence,significa que há 68% de chance de que a localização verdadeira esteja dentro daquele raio do ponto medido em metros. Supondo que os erros sejam normalmente distribuídos (o que, como dizem os documentos, não é necessariamente verdadeiro), isso significa que esse é um desvio padrão. Por exemplo, se Location.getAccuracyretorna 10, então há 68% de chance de que a verdadeira localização do dispositivo esteja dentro de 10 metros das coordenadas relatadas.

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


Obrigado, Karl. Vejo que agora eles atualizaram a documentação, o que é muito útil. Isso é exatamente o que eu estava procurando, embora eu ache que o ponto de dscheffy também seja importante.
John RB Palmer

@paracycle Também destaca que a precisão é relatada pelo provedor, que, no final, pode decidir lidar com ela da maneira que quiser. Por exemplo, usar DDMS fornecerá um valor de 0,0 para precisão porque você está colocando uma coordenada exata.
karl

11
@AidenStrydom, no. Se a precisão retornar 1000, significa que há 68% de chance de que o local real esteja a 1000 metros do local fornecido.
Karl

A precisão é afetada pelo clima?
Juri Tichomirow

@karl você quer dizer que 32% está além de 10 metros? (por exemplo, 11 ou 12 ou mais metros).
David,

44

A localização é uma tarefa complicada de fazer, quando você tem uma vida útil da bateria limitada e quando não há sinal de GPS em edifícios e em áreas com muitos edifícios grandes e etc. Mas o Android torna isso muito mais fácil. Ao solicitar um local, você só precisa especificar qual precisão você precisa.

Se você especificar que deseja um accuracyexemplo *100 meters*, o Android tentará obter a localização e se puder obter uma localização com precisão de 70 metros, ele retornará para você, mas se o Android puder obter uma localização com precisão superior a 100 metros, seu aplicativo irá aguardar e não receberá nada até que haja um local com essa precisão.

Normalmente, o Android obterá primeiro o Cell ID e depois o enviará para o servidor do Google, que mapeia esses Cell IDs e o servidor retornará uma latitude e longitude com uma precisão baixa para um exemplo de 1000 metros. A esta altura, o Android também tentará ver todas as redes WiFi na área e enviará informações sobre elas também para o servidor do Google e, se possível, o servidor do Google retornará um novo local com maior precisão para um exemplo de 800 metros.

Nesse momento, o GPS estará ligado. O dispositivo GPS precisa de pelo menos 30 segundos de uma inicialização a frio para obter uma posição, então, se puder, ele retornará a latitude e a longitude, mas novamente com uma precisão, que será a maior possível para um exemplo de 100 metros. Quanto mais tempo o GPS funcionar, melhor será a precisão.

Aviso importante: os primeiros dois métodos requerem uma conexão com a Internet. Se não houver conexão de dados, você terá que esperar pelo GPS, mas se o dispositivo estiver em um prédio, provavelmente você não obterá a localização.


14
Isso realmente não responde à pergunta sobre o que significa "precisão de 100 m".
Tomas

2
@vendor pode indicar a referência de onde obteve esta informação. sua resposta me ajudou a entender como funciona, obrigado.
um jogador justo de

@a fair player Algumas das informações estão em developer.android.com e fiz alguns testes com os serviços baseados em localização no Android.
vendedor

9
Qual API permite que você especifique uma precisão de 100 metros? Vejo os critérios de ACCURACY_COARSE, ACCURACY_FINE, ACCURACY_HIGH, ACCURACY_LOW, ACCURACY_MEDIUM, mas não 100 metros.
Cris

Em que esta resposta se baseia?
AlikElzin-kilaka de

18

A documentação sobre getAccuracy diz que retorna a precisão em metros. Eu imagino que isso significa que se você obtiver um valor de retorno de 60, você está em algum lugar em um círculo com um raio de 60 metros em torno da posição fornecida.


1
se eu observar meus mapas do google e minha posição atual, você está certo ... na maioria dos casos. Aconteceu também que meu telefone mostrou minha posição a cerca de 2 ou 3 quilômetros de distância da minha posição real ... Também estou interessado nesta questão
poeschlorn

1
Obrigado. Eu concordo que o valor retornado por getAccuracy está em metros e que deve ser o raio de um círculo (ou talvez uma esfera quando a altitude também é fornecida na estimativa de localização). Mas também deve haver uma probabilidade associada a ela, e é estranho que a documentação não diga qual é essa probabilidade ou como ela é obtida. Eu vi uma postagem online onde alguém sugeriu que poderia ser o CEP, mas isso parecia ser apenas um palpite, então eu realmente gostaria de encontrar uma maneira de confirmar se é isso ou um círculo de confiança de 95% ou outra coisa.
John RB Palmer

1
Aqui estão alguns links que são úteis para entender a questão (mas não a resolvem): users.erols.com/dlwilson/gpsacc.htm groups.google.com/group/android-developers/browse_thread/thread/…
John RB Palmer

12

Pelo que posso ver com uma rápida olhada no código-fonte do Android, isso depende do hardware do dispositivo e do valor que ele escolhe retornar.

O GpsLocationProvider.javaarquivo tem um reportLocationmétodo que é chamado pelo código nativo e passa a precisão como um valor. Assim, nenhum cálculo parece estar acontecendo no quadro, pelo menos.

O qcom (que acredito ser da Qualcomm) GPS git repo está passando o hor_unc_circularparâmetro de precisão o que parece implicar que, pelo menos, essa implementação está usando CER.


4

Se, conforme citado nos documentos, for uma precisão, a posição real do usuário está em algum lugar dentro de QUOTED_LOCATION +/- ACCURACY. Portanto, a precisão define um raio onde você poderia esperar que o usuário estivesse. O que os documentos não dizem é como você pode ter certeza de que o usuário está dentro do raio - o padrão é 95%, então acho que é isso.


1
Estou mais interessado na confiança, conforme indica a pergunta. Pode ser uma das muitas medidas gpsinformation.net/main/errors.htm
Samuel

1

Eu entendo que você está pedindo uma resposta definitiva em termos de probabilidade, mas acho que há duas coisas a serem consideradas aqui.

Em primeiro lugar, cabe ao provedor decidir o que deseja colocar neste valor, portanto, dependendo do provedor, pode ser apenas um palpite errado.

Em segundo lugar, pode ajudar pensar nisso como um problema potencial de arredondamento. Se estou tentando calcular sua localização com base em uma série de entradas, e algumas dessas entradas estão disponíveis apenas para um determinado número de dígitos significativos, então só é possível calcular uma localização com um determinado número de dígitos significativos.

Pense desta forma - o que é "cerca de" um mais "cerca de" cem. Provavelmente cerca de cem, porque a precisão de cem é provavelmente menor que a magnitude de 1. Se eu de repente disser que a resposta é cerca de 101, posso acabar sugerindo um nível de precisão que não existia. No entanto, se eu realmente especificar a precisão, posso dizer que 100 mais ou menos 10 mais 1 mais ou menos 0,1 é 101 mais ou menos 10. Entendo que isso geralmente se refere a algo como um nível de confiança de 95% ( erro padrão), mas, novamente, isso tudo assume que o provedor entende as estatísticas e não apenas adivinha.


Obrigado, isso é muito útil. Na primeira questão, minha abordagem com o rastreamento de localização tem sido coletar estimativas de precisão, mas também realizar uma "verificação da realidade", calculando distâncias e tempos entre pontos sucessivos e, em seguida, descartando aqueles que teriam exigido velocidades irrealistas (mesmo se, como às vezes é o caso, eles são relatados como tendo uma precisão precisa). Se você tiver alguma outra sugestão, eu adoraria ouvi-la.
John RB Palmer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.