В этом разделе вы можете проголосовать за идеи по открытым проектам. Вы всегда можете предложить свою идею, перейдя на страницу проекта.
<<< НазадВ приложение GPS-трекер прилетают координаты с телефона геоточек с огромной погрешностью при этом максимальное значение точности не превышает 35. Вот так это выглядит:
https://disk.yandex.ru/i/Gyv2SxOJU93u1A
Все точки в данном случае невалидные. У невалидных точек наблюдаются значения Altitude: или отрицательные: меньше -120, -300, наименьшее значение -16858 или положительные: 335, 413, 576, 575, 1776, 1945, 4815, 6584, 8109 и т.д.
Средний диапазон фактических высот: 60-120.
Использую телефон: Samsung A54. Версия Android 13, Majordroid последней версии. В настройках геопозиции включена максимальная точность. Приложению даны все разрешения.
Если обратить внимание, ложные точки не находятся рядом.
Предлагаю ввести несложную фильтрацию (проверку валидности) в GPS-трекере по получению точек:
Если X1<-5, то X1=false илиесли |X-X1|>110, то дополнительно проверяется линейное расстояние между точками без учета высоты. Если расстояние между X и X1 больше 1500м, то false.
где X - предыдущее значение
X1 новое поступившее значение.
В следующей проверке X1 будет X (даже, если оно было не валидным).
Можно дополнительно подумать про проверку времени, но оно в приложении задается пользователем... В алгоритме есть изъян - после невалидной точки новая точка валидная вероятнее всего не запомнится. Если человек отправился в горы и новая точка прилетела через через несколько часов, то она вероятно не запомнится.
Если кто-то предложит альтернативный алгоритм, буду благодарен.