Как измеряется точность определения местоположения в Android? - PullRequest
92 голосов
/ 16 июня 2010

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

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

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

  • что-то еще?

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

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

Ответы [ 6 ]

62 голосов
/ 10 декабря 2012

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

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

42 голосов
/ 24 марта 2011

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

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

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

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

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

17 голосов
/ 16 июня 2010

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

11 голосов
/ 30 марта 2011

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

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

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

4 голосов
/ 23 марта 2011

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

1 голос
/ 13 апреля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...