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

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

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

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

  • что-то еще?

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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