Система Visitech «Мониторинг» предназначена для решения задач, связанных с мониторингом персонала и техники. Одна из важнейших — точное геопозионирование с заданной точностью вне и внутри зданий с выводом на карту информации о любых происходящих событиях.
Большое количество точек в треках перемещения объектов мониторинга может негативно сказываться на производительности системы и вызывать сложности с интерпретацией этих данных конечными пользователями. Всем привет, меня зовут Дмитрий Чернышов, работаю в команде Visitech, и сегодня я расскажу, как мы оптимизировали вывод треков объектов мониторинга.

Небольшой рассказ об особенностях Visitech и проблематике
Visitech получает данные о местонахождении объектов (сотрудники, транспортные средства, мобильное оборудование, грузы и т.д) с помощью трекингового оборудования различного типа. На типах оборудования сейчас не буду останавливаться — это весьма обширная тема. Благодаря трекинговым данным можно:
-
Понимать точное местонахождение отслеживаемых объектов с заданной точностью внутри и вне зданий.
-
Получить единую карту предприятия, на которой отображается информация о происходящих событиях: места, где планируются и уже проводятся работы, места, где происходят нарушения при проведении работ, и места, где потенциально может произойти опасная ситуация (сотрудник находится близко к опасной зоне, не соблюдает правила ношения СИЗ или правила безопасности при проведении работ).
-
Разграничить права доступа сотрудников. При помощи функции создания геозон карту объекта можно разметить на отдельные участки для обозначения всех функциональных зон объекта и дополнительно разграничить права доступа сотрудников в них, в том числе контролировать доступ сотрудников в опасные или запрещенные для посещения зоны, где проводятся работы повышенной опасности
-
Обеспечить контроль за техническим состоянием стационарных объектов и транспортных средств: при помощи интеграции с системами типа ТОРО\ТОиР и системами учета состояния транспортных средств Visitech понимает, где сотрудники не произвели обходы или не выполнили запланированные работы и ремонты.
-
Контролировать безопасность при проведении работ при помощи использования систем видеоаналитики, включая контроль за соблюдением регламентов по охране труда и промышленной безопасности: наличие СИЗ, предиктивная аналитика и выявление опасных условий и действий при проведении работ.
Итак, краеугольный камень — это построение треков передвижения. Чтобы не падала производительность, а результаты были легко интерпретируемыми, нам надо было оптимизировать вывод треков.
Мы проработали следующие методы:
-
предварительная обработка треков на backend‑стороне системы;
-
сжатие данных треков перемещения объектов при их выдаче на отрисовку на карте;
-
кеширование данных;
-
оптимизация отрисовки треков перемещения объектов на frontend‑стороне системы.
Рассматриваемые методы и алгоритмы оптимизации
Критерии выбора методов предварительной оптимизации
-
Сочетание простоты и эффективности для обработки больших наборов данных
-
Гарантированная точность — желательно иметь контроль над допустимыми отклонениями и уровнями точности
-
Гибкость в применении
Рассматриваемые алгоритмы оптимизации
-
Алгоритм Ланг‑Слоан
Основа: угловое изменение перед и после вершины трека.
Принцип выбора предела: заданный угловой порог.
Плюс: хорош для сохранения углов.
Минус: неэффективен для линий с плавными кривыми.
Вывод: нам не подходит.
-
Алгоритм углового предела
Основа: углы между сегментами трека.
Принцип выбора предела: заданный угловой порог, ниже которого углы считаются незначительными и соответствующие точки удаляются.
Плюс: прост в реализации.
Минус: может не сохранять общую форму.
Вывод: подходит для линий с большим количеством острых углов, где важно сохранить угловатую природу.
-
Алгоритм Дугласа‑Пекера
Основа: максимальное расстояние точки от прямой, соединяющей начальную и конечную точки сегмента трека.
Принцип выбора предела: заданный порог отклонения, основанный на допустимом максимальном расстоянии.
Плюс: хорошо сохраняет общую форму линии.
Минус: могут быть проблемы с невалидными данными (шумами).
Вывод: эффективен для длинных полигональных линий с большим количеством точек, где важна общая форма, а не мелкие детали.
-
Алгоритм топологической упрощенности
Основа: топологические свойства точек трека (самопересечение, вложенность, …).
Принцип выбора предела: избегание самопересечений, сохранение топологической целостности.
Плюс: поддерживает топологические особенности.
Минус: сложен в реализации.
Вывод: нам не подходит.
-
Алгоритм радиального расстояния
Основа: расстояние точек трека от начальной до каждой последующей.
Принцип выбора предела: заданный радиальный порог, который определяет, какие точки можно сохранить.
Плюс: прост в реализации.
Минус: может не сохранять мелкие детали формы.
Вывод: подходит для линий, где точки распределены равномерно вокруг центральной линии и важно сохранить радиальные характеристики.
-
Алгоритм Ритмана‑Викера
Основа: изменение длины и площади трека при удалении точки.
Принцип выбора предела: заданный порог «важности» точки, измеряемый изменением длины и площади трека.
Плюс: хороший компромисс между формой и упрощением.
Минус: требует предобработки перед оптимизацией.
Вывод: эффективен для линий с большим количеством точек, где важно сохранить основные характеристики, удаляя менее значимые точки.
Исследование и разработка
Используемый датасет: набор данных GPS‑траекторий проекта Geolife (Microsoft Research Asia), скачать.
Далее рассмотрим только те алгоритмы, которые не отмели сразу (углового эталона, радиального расстояния, Дугласа-Пекера, Реймана-Виткама).
Угловой эталон
-
Трек упрощается путем удаления вершин, основываясь на величине угла между соседними сегментами.
-
Если угол между двумя соседними сегментами меньше заданного порогового значения, вершина между этими сегментами удаляется.
-
Процесс продолжается до тех пор, пока не будут удалены все вершины, угол которых меньше порогового значения.

Результат: алгоритм был отсеян, так как в процессе оптимизации удаляется слишком большое количество точек, что приводит к потере важных атрибутов трека: петли, остановки, изменение движения в обратную сторону и т. д.
Радиальное расстояние
-
Для каждых из двух точек проверяется превышение суммой квадратов расстояний допустимого отклонения.
-
Если квадрат расстояний меньше допустимого отклонения точка из маршрута удаляется.

Результат: алгоритм схож с алгоритмом Дугласа‑Пекера, но плохо работает с фильтрацией ошибочных выбросов координат, когда точка маршрута резко перемещается на достаточное удаление и потом также резко возвращается на реальную траекторию движения. Поэтому мы отказались от его применения.
Дуглас-Пекер
-
Выбор начальной и конечной точек трека.
-
Определение точки, которая находится на максимальном расстоянии от прямой, соединяющей начальную и конечную точки.
-
Если это расстояние меньше заданного порога, все точки между начальной и конечной удаляются.
-
Процесс продолжается до тех пор, пока все точки, кроме начальной и конечной, не будут проверены.

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

Результат: алгоритм соответствует ожиданиям.
Дополнительная обработка
После прохождения основного алгоритма мы запускаем алгоритм собственной разработки, позволяющий улучшить результаты.
-
Разрежение трека: удаление точек, расстояние между которыми меньше 2 метров.
-
Удаление выбросов из трека: выявление аномалий, где угол между самыми длинными векторами, исходящими из точки, и среднее расстояние между точками для данных векторов больше 10 метров.
-
Выравнивание треков к средней скорости: удаление точек с резко изменяющейся скоростью (более 13 м/с).
-
Оптимизация остановок: если точка находится в пределах допустимого расстояния от центра кластера (100 метров) и продолжительность нахождения в кластере превышает минимальное значение (около 20 минут) — замена на среднюю координату кластера.
Итоговое сравнение и результаты
Методы оптимизации Дугласа‑Пекера и Реймана‑Виткама являются наиболее оптимальными методами при работе с треками передвижения объектов мониторинга. Они позволяют эффективно сокращать количество точек и сохранять важные характеристики маршрута движения.
-
Алгоритм Дугласа‑Пекера является оптимальным для длинных полигональных линий с большим количеством точек. В маршрутах передвижения объектов мониторинга важно сохранить общую форму маршрута, однако на тестовых треках качество сжатия трека сравнительно с алгоритмом Реймана‑Виткама меньше в среднем на 30%.
-
Алгоритм Реймана‑Виткама отлично подходит для линий с большим количеством точек, где важно сохранить основные характеристики и удалить менее значимые точки. В контексте маршрутов передвижения объектов мониторинга это означает, что можно эффективно удалить лишние точки, которые не играют ключевой роли в маршруте, сохраняя при этом важные точки и характеристики.
-
Выбор конкретной реализации оптимизационного алгоритма определяется по средней медианной длине трека. Соответственно система автоматически выбирает оптимальный алгоритм, что позволяет работать с разнообразными треками и не упираться в ограничения каждого из них.
Спасибо за внимание, если есть вопросы по теме — буду рад ответить!
ссылка на оригинал статьи https://habr.com/ru/articles/901658/
Добавить комментарий