Мне нужно найти алгоритм или метод, который может обнаружить latitude
longitude
точки выброса на траектории во время постобработки , которая затем может быть исправлена (возвращена на путь траектории на основе ее соседей).
В качестве примера точек выброса, которые я хотел бы обнаружить и исправить, я приложил изображение, демонстрирующее:
Я попытался использовать фильтр Калмана без запаха, чтобы сгладить данные как можно лучше, но это, кажется, не работает достаточно эффективно для более экстремальных выбросов (необработанные данные синим цветом, сглаженные данные красным):
Мой UKF не может быть откалиброван должным образом (но я уверен, что это так).
Траектории - это пешеходы, бегуны, велосипедисты - движением человека, которое может начинаться и останавливаться, но не резко меняться в скорости или положении, которые быстро или внезапно.
Решение, которое не опирается на данные о времени (и только на данные о местоположении), было бы чрезвычайно полезным (поскольку обрабатываемые данные не всегда могут содержать данные о времени). Тем не менее, я знаю, насколько маловероятно, что такое решение существует, поэтому я так же счастлив иметь любое решение!
В идеале решение должно обнаружить выброс, чтобы его можно было исправить, что привело бы к исправленной траектории:
Ресурсы, которые я просеял:
Smooth GPS data
- /programming/1134579/smooth-gps-dataCommon GPS and Geospatial Tracking Challenges and Solutions
- http://www.toptal.com/gis/adventures-in-gps-track-analytics-a-geospatial-primer (решение, похоже, теряет точность данных)Какой алгоритм следует использовать для удаления выбросов в данных трассировки?
Алгоритм я использую.
Как видно, это может привести к резкому повороту.
У меня есть реализация ArcGIS python вышеупомянутого алгоритма, он использует модуль networkx. Дайте мне знать, если это представляет интерес, и я обновлю свой ответ сценарием
ОБНОВИТЬ:
источник
Одна идея состоит в том, чтобы создать скрипт, который перечисляет углы (и, возможно, также длину) каждого сегмента вашего пути. Теперь вы можете сравнить значения каждого сегмента с его прямыми соседями (и, возможно, вторыми соседями также для повышения точности) и выбрать все те точки, где значения превышают заданное значение предельного значения. Наконец, просто удалите точки с вашего пути.
источник
Также стоит обратить внимание на метод Медиана-5.
Каждая координата x (или y) устанавливается равной медиане из 5 значений x (или y) вокруг нее в последовательности (т. Е. Само по себе, два предыдущих значения и два последующих значения).
например, x3 = медиана (x1, x2, x3, x4, x5) y3 = медиана (y1, y2, y3, y4, y5) и т. д.
Метод быстрый и простой в использовании для потоковой передачи данных.
источник
В этом вопросе / ответах есть хорошие данные.
Хотя все зависит от того, как ваши очки сгруппированы по тому, что будет / не будет работать. Вы должны быть осторожны с точками, которые распределены, но не выделяются.
источник
Вы можете импортировать ваши данные в Excel или использовать pandas и пометить и / или удалить все расстояния от предыдущей точки, которые превышают некоторый нереалистичный порог расстояния.
источник