Как уменьшить набор баллов?

У меня есть упорядоченный список точек (широта, долгота) на маршруте. У меня есть упорядоченный список остановок (лат, лонг). Допустим, у меня 1000 очков и 20 остановок. Я хотел бы уменьшить 1000 баллов до примерно 100 в зависимости от того, какие баллы более актуальны для маршрута. Например, точки, которые вызывают повороты.

Один из способов, как я думаю, что я могу это сделать, - это группироваться вокруг остановок и выбирать точки, может быть, наугад Но это все еще не кажется эффективным для меня. Я уже использую алгоритм Дугласа Пекера. Помимо этих каких-либо идей?

1 ответ

Вы можете использовать алгоритм Рамера-Дугласа-Пекера, чтобы упростить вашу ломаную линию.

Для исходной комплексной полилинии этот алгоритм получает новую полилинию, аппроксимирующую оригинал с заданной погрешностью e, Точки, определяющие новую полилинию, являются подмножеством оригинала.

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

Алгоритм основан на подходе типа "разделяй и властвуй" и, следовательно, имеет ожидаемую сложность: O(n*log(n)) (хотя наихудший случай O(n^2)).

Из-за поведения "наихудший - первый" полученная полилиния включает в себя "важные" точки, которые определяют острые углы, при этом исключая псевдо-избыточные точки вдоль плоских участков в пределах допуска e,

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