2014-02-20 4 views
0

У меня есть приложение для Android, в котором я пытаюсь определить расстояние, пройденное с помощью координат, предоставляемых GPS. В настоящее время я использую метод, который вычисляет длину дуги между двумя точками земного шара.расчет расстояния с помощью GPS точки облака

public void onLocationChanged(Location location) 
{ 
Location loc= new Location(""); 
loc.setLatitude(prev_latitude); 
loc.setLongitude(prev_longitude); 
distance+=location.distanceTo(loc); 
... 
} 

Кроме того, как только это будет сделано, prev_ {широта, долгота} устанавливаются в текущей широты/долготы.

Полученное расстояние дуги затем добавляется к накопленному расстоянию (последняя строка кода). Теперь этот метод работает отлично, если прием GPS достаточно хорош, и мы имеем достаточную точность. Как только точность полученных координат ухудшается, точки начинают отклоняться от реального местоположения, и вся эта ошибка интегрируется в общее расстояние. Есть ли функция в android или отдельная библиотека java, которая автоматически фильтрует ошибку и подходит к правильным точкам/дорожке к набору необработанных GPS-измерений и, таким образом, получает точную оценку пройденного расстояния? Как решить эту проблему, если такая библиотека не существует? См. Изображение ниже для справки. Метод, представленный на Android и используемый сейчас, отображается синей линией. Он вычисляет расстояния отдельно между последующими координатами. Из-за ошибки расстояние неверно. Фактический путь показан красным цветом.

GPS points (black dots),wrong distance (blue), true distance (red)

+0

попробуйте прочитать это сообщение, возможно, поможет вам. http://stackoverflow.com/questions/3412416/improve-gps-accuracy-android – totonho

ответ

1

вы задали два вопроса:

Ответ на первый: Нет там нет встроенного в фильтрации для плохого расположения GPS, вы должны сделать это самостоятельно.

2) фильтрация зависит от потребностей приложений: будь то только для транспортных средств, а также для пешеходов.

В зависимости от потребностей вашего приложения вы можете разработать собственный алгоритм фильтрации. Для транспортных средств простой подход заключается в том, чтобы игнорировать все местоположения с местоположением. Скорость под некоторым порогом. (GPS прыгает на низких скоростях).
Далее вы можете посмотреть на location.gethoriconatlAccuracy и игнорировать местоположение, если минимальный порог точности (который вы определяете) не достигнут.

+0

так, например, для прогулок лучше всего было бы собирать очки в течение некоторого времени и стараться соответствовать функции (полином?) к данным? – Jaka

Смежные вопросы