Алгоритм сокращения данных трека GPS для удаления избыточных данных? - PullRequest
5 голосов
/ 04 ноября 2011

Мы создаем ГИС-интерфейс для отображения данных трека GPS, например, представьте необработанные данные о парне, который целый час бродит по окрестностям на велосипеде. Набор таких данных, возможно, с новой точкой, записываемой каждые 5 секунд, будет большим, и его отображение в браузере или на портативном устройстве будет сложной задачей. Кроме того, отображение каждой отдельной точки обычно не требуется, поскольку пользователь все равно не может визуально разрешить такое количество данных.

Таким образом, по соображениям производительности мы ищем алгоритмы, которые хорошо «сокращают» данные, подобные этим, чтобы количество отображаемых точек значительно уменьшилось, но таким образом, чтобы оно не рисковало неверной интерпретацией данных. Например, если наш вымышленный велосипедист останавливается, чтобы выпить, мы, конечно же, не хотим рисовать 100 лат / лон точек в кластере вокруг 7-Eleven.

Нам известно о кластеризации, которая хороша при просмотре группы отключенных точек, однако нам нужно то, что применимо к дорожкам , как описано выше. Спасибо.

Ответы [ 2 ]

8 голосов
/ 07 ноября 2011

Более научным и, возможно, более сложным математическим решением является использование алгоритма Рамера-Дугласа-Пекера для обобщения вашего пути.Я использовал его, когда учился на мастера геодезии, так что это проверенная вещь.: -)

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

2 голосов
/ 04 ноября 2011

Обычно лучший способ сделать это:

  1. Определите минимальное количество пикселей на экране между отображаемыми точками GPS.

  2. Определяет расстояние, представленное каждым пикселем в текущем уровне масштабирования.

  3. Умножьте ответ 1 на ответ 2, чтобы получить минимальное расстояние между координатами, которые вы хотите отобразить.

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

...