Как создать мастер-трек из большого набора координат, полученных от gps-трекеров? Есть самописная система мониторинга транспорта.
Есть несколько сотен автомобилей, оснащенных gps-трекерами.
Все автомобили катаются из Москвы в регионы. Представьте карту Москвы и области, основные трассы, выходящие с МКАДа и идущие во Владимир, Екатеринбург, Красноярск, Питер, Краснодар и т.д. Десятки и сотни городов.
За год работы в системе накопилось несколько десятков миллионов координат. Если отобразить их на карте, то они в основном лягут на трассы, о которых говорилось выше. Иногда будет "мусорные координаты" - машина под крышей заправки, либо еще какие-то помехи, объез пробок. Например, в Питер из москвы можно ехать через Чехов. Узнали об этом только после запуска мониторинга. "Мусора" хватает.
Задача в следующем: научить систему мониторинга самостоятельно определять сход с основного/обычного маршрута движения. Для этого хочется все существующие точки обработать и получить т.н. мастер-трек. А потом искать ближайшую координату из мастер-трека к получаемой от трекера из машины, и если расстояние больше определенного 2 раза подряд, считать это сходом с маршрута.
Сейчас координаты хранятся в виде XX.XXXXXX и YY.YYYYYY. Т.е. точность шесть знаков после запятой. Мастер-трек должен содержать пять знаков после запятой.
Алгоритм должен отсеивать "мусор", т.е. если вокруг точки, которую мы рассматриваем в радиусе пяти знаков после запятой нет других точек или их меньше определенного количества, то мы считаем точку мусором и не учитываем в расчетах.
Т.е. начать можно с простого обрубания шестого знака после запятой. Потом "убираем" мусорные точки. А далее из оставшихся надо посчитать мастер-трек.
Много вариантов перепробовал и понял, что идеальный вариант - медиана. Но как ее применить к координатам, не знаю.
Коллеги, есть идеи?

21 Авг 2019 в 06:11
141 +1
1
Ответы
1

Для создания мастер-трека из большого набора координат можно использовать следующий алгоритм:

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

Используя этот алгоритм, можно создать мастер-трек из большого набора координат и затем использовать его для определения сходов с основного маршрута.

20 Апр 2024 в 13:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир