Как в 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% ( стандартная ошибка), но опять же, все предполагает, что провайдер понимает статистику, а не просто догадывается.


Спасибо - это очень полезно. По первой проблеме мой подход к отслеживанию местоположения заключался в сборе оценок точности, а также выполнении «проверки реальности» путем вычисления расстояний и времени между последовательными точками, а затем отбрасывания тех, которые потребовали бы нереалистичных скоростей (даже если, как иногда бывает, случае они имеют высокую точность). Если у вас есть другие предложения, я хотел бы их услышать.
Джон РБ Палмер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.