Какой лучший способ оценить точность данных GPS-датчика для местоположения пользователя? - PullRequest
2 голосов
/ 18 января 2010

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

здесь я хочу проверить, что если точность нового местоположения лучше, тогда используйте новое местоположение, иначе используйте старое местоположение

if (newLocation.horizontalAccuracy>oldLocation.horizontalAccuracy)
{
    self.bestEffortAtLocation=newLocation; // this mean new location is better accurate
}
else
{
    self.bestEffortAtLocation=oldLocation; // this mean old location is better accurate
}

Я хочу знать, что проверка выше верна или нет?

я знаю, что это глупый вопрос. но сейчас я нахожусь на уровне поверхности.

Пожалуйста, предложите

Ответы [ 5 ]

8 голосов
/ 18 января 2010

Это не очень хорошая идея. Чтобы понять почему, скажем, мы называем точность в момент времени t A (t), и она будет дана в единицах метров. Представим следующую ситуацию:

  • A (0) = м метров
  • A (t) = n> м метров
  • v (0) = k метров / сек, где k / t> m
  • нулевое ускорение на интервале [0, т]

То есть:

  • В нулевое время ваша точность равна некоторому значению m метров.
  • Через некоторое время t ваша точность будет хуже n метров.
  • Ваша скорость в нулевое время унесет вас за пределы радиуса m через время t.
  • У вас постоянное ускорение, поэтому ваша скорость не меняется.

Используя ваш алгоритм, вы отказались бы использовать новое местоположение GPS, когда вы находитесь в момент времени t, потому что n хуже, чем m, даже если пользователь не может находиться где-либо рядом со старым местоположением. Их скорость перенесла их за радиус m. Это явно не правильно.

Вместо этого, вот элементарный алгоритм для определения, является ли новое местоположение лучше или хуже старого:

0 голосов
/ 18 января 2010

Нет. Самый простой способ - увеличить старую точность A(0) на вероятное пройденное расстояние, v*t. Затем проверьте, является ли A(0) + v*t) < A(t) - если так, используйте старую позицию вместо новой.

0 голосов
/ 18 января 2010

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

На самом деле, как только вы нашли самую лучшую позицию (в хорошем открытом поле, не двигаясь, скажем так), HDOP будет увеличиваться, и вы никогда не обновитесь со своего старого местоположения ...

0 голосов
/ 18 января 2010

CLLocation.horizontAccuracy определяется как

horizontalAccuracy

Радиус неопределенности для местоположение, измеренное в метрах. (Только для чтения)

@ собственность (только для чтения, NS_NONATOMIC_IPHONEONLY) CLLocationAcuracy горизонтальнаяAcraracy

Обсуждение

Широта координат и долгота определить центр круг и это значение указывает на радиус этого круга. Отрицательный значение указывает, что координата широта и долгота недействительны.

Таким образом, согласно этому определению, «лучшая» точность - это меньшее из двух неотрицательных значений.

0 голосов
/ 18 января 2010

horizontalAccuracy - радиус неопределенности для местоположения, то есть чем больше его значение, тем менее точным является ваше местоположение. Поэтому вам следует отменить сравнение, которое вы используете.
Я бы также предложил ввести некоторый порог, ниже которого любое новое местоположение хорошо.

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