Сглаживание данных, полученных из CoreLocation

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

Я ищу предложения / стратегии о том, как сгладить данные, чтобы линия, нарисованная на карте, была более гладкой, а не точной точечной прорисовкой.

1 ответ

Решение

Существует множество различных типов алгоритмов сглаживания, которые вы можете применить к данным (несколько начальных точек см. В этой статье Википедии). Единственный способ точно узнать, какие из них подходят для вашего приложения, - это внедрить и протестировать их.

Простые или взвешенные скользящие средние значения довольно распространены (взятие последних n выборок и их усреднение), но они имеют проблему отставания от данных. Общим для фильтрации шумового сигнала является фильтр верхних частот, который ослабляет небольшие (шумные) движения при прохождении через более крупные. У Apple есть некоторый код для этого в их образце AccelerometerGraph.

Я бы посоветовал сначала опробовать их, так как их легко реализовать, прежде чем смотреть на сложные.

Другие вопросы по тегам