Как в Android измеряется точность определения местоположения?

95

Кто-нибудь знает правильную интерпретацию измерений точности, возвращаемых getAccuracy ()? Например, рассчитываются ли они как:

  • Вероятность круговой ошибки (имеется в виду, если я правильно понимаю, радиус круга уверенности 50%)?

  • Радиус круга уверенности 95%?

  • что-то другое?

Кроме того, какие именно расчеты используются и насколько мы можем на них полагаться? Зависит ли это от источника оценки местоположения (GPS или сеть)?

Большое спасибо за любой совет, который вы можете мне дать.

Джон Р. Б. Палмер
источник
4
Вопрос не в том, как получается местоположение, а в фактическом определении возвращаемого значения getAccuracy в классе местоположения.
Януш

Ответы:

67

Чтобы ответить на одну часть вопроса, число the radius of 68% confidence,означает, что существует 68% -ная вероятность того, что истинное местоположение находится в пределах радиуса измеренной точки в метрах. Предполагая, что ошибки распределены нормально (что, как говорится в документации, не обязательно верно), это означает, что это одно стандартное отклонение. Например, если Location.getAccuracyвозвращается 10, то с вероятностью 68% истинное местоположение устройства находится в пределах 10 метров от указанных координат.

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

Карл
источник
Спасибо, Карл. Я вижу, что они обновили документацию, что очень полезно. Это именно то, что я искал, хотя я думаю, что точка зрения Дшеффи также важна.
Джон РБ Палмер
@paracycle также указывает на то, что о точности сообщает поставщик, который, в конце концов, может решить обрабатывать ее так, как они хотят. Например, использование DDMS предоставит значение 0,0 для точности, потому что вы вводите точные координаты.
Карл
11
@AidenStrydom, нет. Если точность равна 1000, это означает, что существует 68% -ная вероятность того, что реальное местоположение находится в пределах 1000 метров от указанного местоположения.
Карл
На точность влияет погода?
Юрий Тихомироу
@karl вы имеете в виду, что 32% находятся за пределами 10 метров? (например, 11 или 12 или более метров).
Дэвид
44

Местоположение - сложная задача, когда у вас ограниченный срок службы батареи и когда нет сигнала GPS в зданиях и в районах с большим количеством больших зданий и т. Д. Но Android значительно упрощает эту задачу. Когда вы запрашиваете местоположение, вам просто нужно указать, какая точность вам нужна.

Если вы укажете, что вам нужен accuracyпример *100 meters*, Android попытается получить местоположение, и если он сможет получить местоположение с точностью до 70 метров, он вернет его вам, но если Android может получить местоположение с точностью выше 100 метров, ваше приложение будет ждать и ничего не получит, пока не будет найдено местоположение с такой точностью.

Обычно Android сначала получает Cell ID, а затем отправляет его на сервер Google, который сопоставляет такие Cell ID, и сервер возвращает широту и долготу с точностью, которая низкая, например, 1000 метров. К этому времени Android также попытается увидеть все сети Wi-Fi в этом районе и также отправит информацию о них на сервер Google, и, если возможно, сервер Google вернет новое местоположение с более высокой точностью, например, на 800 метров.

К этому времени GPS будет включен. Устройству GPS требуется не менее 30 секунд с момента холодного запуска, чтобы получить исправление, поэтому, если оно удастся исправить, оно вернет широту и долготу, но снова с точностью, которая будет максимально возможной для примера 100 метров. Чем дольше работает GPS, тем выше точность.

Важное примечание: для первых двух методов требуется подключение к Интернету. Если нет подключения для передачи данных, вам придется дождаться GPS, но если устройство находится в здании, вы, вероятно, не получите местоположение.

продавец
источник
14
Это не совсем ответ на вопрос, что означает «100-метровая точность».
Tomas
2
@vendor, пожалуйста, укажите ссылку, из которой вы получили эту информацию. Ваш ответ помог мне понять, как это работает, спасибо.
честный игрок
@a fair player Некоторая информация находится на сайте developer.android.com, и я провел несколько тестов с службами на основе местоположения в Android.
vendor
9
Какой API позволяет указать точность до 100 метров? Я вижу критерии ACCURACY_COARSE, ACCURACY_FINE, ACCURACY_HIGH, ACCURACY_LOW, ACCURACY_MEDIUM, но не 100 метров.
Cris
На чем основан этот ответ?
AlikElzin-kilaka
18

В документации по getAccuracy сказано, что он возвращает точность в метрах. Я предполагаю, что это означает, что если вы получите возвращаемое значение 60, вы находитесь где-то в круге с радиусом 60 метров вокруг указанной позиции.

Януш
источник
1
если я смотрю на свои карты Google и свое текущее положение, вы правы ... в большинстве случаев. Также случалось, что мой телефон показывал мое местоположение примерно в 2 или 3 километрах от моего настоящего местоположения ... Меня тоже интересует этот вопрос
poeschlorn
1
Спасибо. Я согласен с тем, что значение, возвращаемое getAccuracy, выражается в метрах и что это должен быть радиус круга (или, возможно, сферы, если высота также указана в оценке местоположения). Но с этим также должна быть связана вероятность, и странно, что в документации не говорится, что это за вероятность и как она достигается. Я видел одну публикацию в Интернете, где кто-то предположил, что это может быть CEP, но это, похоже, было всего лишь предположением, поэтому я действительно хотел бы найти способ подтвердить, что это, круг уверенности 95% или что-то еще.
John RB Palmer
1
Вот несколько ссылок, которые полезны для понимания вопроса (но не решают его): users.erols.com/dlwilson/gpsacc.htm groups.google.com/group/android-developers/browse_thread/thread/…
Джон Р. Б. Палмер
12

Насколько я могу судить по исходному коду Android, это зависит от аппаратного обеспечения устройства и того, какое значение оно выбирает для возврата.

В GpsLocationProvider.javaфайле есть reportLocationметод, который вызывается собственным кодом, и ему передается точность в качестве значения. Таким образом, по крайней мере, в рамках, похоже, не происходит никаких вычислений.

Репозиторий git git qcom (который, я считаю, является Qualcomm) проходит в hor_unc_circularпараметр для точности , который , кажется, подразумевает , что, по крайней мере, что реализация использует CER.

парацикл
источник
4

Если, как указано в документации, это точность, то фактическая позиция пользователя находится где-то в пределах QUOTED_LOCATION +/- ACCURACY. Таким образом, точность определяет радиус, в котором вы можете ожидать, что пользователь будет. В документации не говорится о том, насколько вы можете быть уверены, что пользователь находится в пределах радиуса - стандарт 95%, так что я предполагаю, что это все.

Джозеф Эрл
источник
1
Меня больше интересует уверенность, как указывает вопрос. Может быть одним из многих измерений gpsinformation.net/main/errors.htm
Самуэль
1

Я понимаю, что вы просите однозначного ответа с точки зрения вероятности, но я думаю, что здесь следует учесть две вещи.

Во-первых, поставщик должен решить, что он хочет вставить в это значение, поэтому, в зависимости от поставщика, это может быть просто неверным предположением.

Во-вторых, это может помочь думать об этом как о потенциальной проблеме округления. Если я пытаюсь вычислить ваше местоположение на основе количества входных данных, и некоторые из этих входов доступны только для определенного количества значащих цифр, тогда можно рассчитать местоположение только с заданным количеством значащих цифр.

Подумайте об этом так - что "примерно" один плюс "примерно" сто. Вероятно, около сотни, потому что точность сотни, вероятно, меньше, чем величина 1. Если я внезапно скажу, что ответ будет около 101, то я могу в конечном итоге иметь в виду уровень точности, которого не было. Однако, если я на самом деле укажу точность, то я могу сказать, что она 100 плюс-минус 10 плюс 1 плюс-минус .1 равно 101 плюс или минус 10. Я понимаю, что это обычно относится к чему-то вроде уровня уверенности 95% ( стандартная ошибка), но опять же, все предполагает, что провайдер понимает статистику, а не просто догадывается.

Dscheffy
источник
Спасибо - это очень полезно. По первой проблеме мой подход к отслеживанию местоположения заключался в сборе оценок точности, а также выполнении «проверки реальности» путем вычисления расстояний и времени между последовательными точками, а затем отбрасывания тех, которые потребовали бы нереалистичных скоростей (даже если, как иногда бывает, случае они имеют высокую точность). Если у вас есть другие предложения, я хотел бы их услышать.
Джон РБ Палмер