Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Упрощение полилинии при уменьшении масштаба / 7 сообщений из 7, страница 1 из 1
16.10.2017, 14:32
    #39536891
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упрощение полилинии при уменьшении масштаба
На карте нарисована ломаная линия из большого количества отрезков с заданными координатами.
То есть множество (сотни, тысячи) точек последовательно соединяются отрезками.
Такое большое количество объектов не очень хорошо сказывается на скорости работы браузера.
Хочется убрать точки, которые все равно на конечную фигуру заметного (видимого) влияния не оказывают.
Если речь идет о близкорасположенных точках, то для них есть то, что в картографических сервисах называется кластеризацией.
А как поступать с точками, которые расположены недостаточно близко друг к другу, но при этом находятся очень близко к линейной траектории? Другими словами, вместо 100 точек, рисующих чуть изогнутую траекторию, оставить 3 точки, рисующих ломанную, близкую к прямой линии.
...
Рейтинг: 0 / 0
16.10.2017, 14:49
    #39536910
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упрощение полилинии при уменьшении масштаба
Alibek B.вместо 100 точек, рисующих чуть изогнутую траекторию, оставить 3 точки, рисующих ломанную, близкую к прямой линии.На самом деле вместо 50 точек оставить 2 точки, отрезок между которыми отклоняется по ломаной не более чем на заданное расстояние. Первых 50, и вторых 50. Ну и учесть, что отрезки должны иметь одну общую конечную точку.

Понятно, что задача не требует точного решения (оптимума), так что имхо самым простым будет расчёт прямой, на которой лежит отрезок, по МНК, затем расчёт начальной и конечной точек и максимального отклонения. Если отклонение уложилось в заданные рамки - добавить к МНК следующую точку (при этом использовать накопленные при предыдущем расчёте суммы), иначе начать поиск следующего отрезка.
...
Рейтинг: 0 / 0
16.10.2017, 15:22
    #39536931
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упрощение полилинии при уменьшении масштаба
Точки на линии могут быть различными — есть активные точки (в которых, например, присоединяются другие линии или объекты), есть транзитные точки, которые просто задают маршрут. У всех точек есть дополнительная информация, но на отрисовку линии она не влияет. Активные точки на упрощенной линии должны остаться обязательно, транзитные должны упроститься до минимума.

Например такой алгоритм:
1. Беру две ближайшие активные точки.
2. Промежуточные точки кластеризую, получаю некоторое количество "упрощенных" транзитных точек.
3. Провожу линию между активными точками, нахожу наиболее удаленную упрощенную транзитную точку.
4. Если эта точка отстоит не далее порогового значения, то цикл завершен и перехожу к следующим активным точкам.
4. Считаю эту точку активной и итеративно повторяю цикл сначала (пропуская пункты 2 и 3).

Так?
...
Рейтинг: 0 / 0
16.10.2017, 16:46
    #39536996
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упрощение полилинии при уменьшении масштаба
Alibek B.,
Начни с построения выпуклой оболочки. Принятые точки берешь за базис, для остальных делаешь решающее правило исходя из масштаба и отклонения.
...
Рейтинг: 0 / 0
16.10.2017, 16:54
    #39537010
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упрощение полилинии при уменьшении масштаба
Alibek B.Так?Почти. Надо лишь учитывать, что в случае добавления активной точки у тебя увеличивается количество сглаживаемых участков. Впрочем, если соблюдается направленность, то оно учтётся само собой.
Конечно, этот алгоритм не гарантирует минимизации количества сглаженных участков, но он должен давать вменяемый результат.
...
Рейтинг: 0 / 0
18.10.2017, 14:49
    #39538107
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упрощение полилинии при уменьшении масштаба
Alibek B.,
довольно примитивый алгоритм:
авторПри ненулевом значении параметра Допуск сглаживания активизируется функция исключения из линии лишних точек в соответствии со следующим правилом: если для любых трех точек линии средняя точка отстоит от прямой, соединяющей две крайние, на расстояние, меньшее, чем заданная величина, то эта средняя точка исключается. Это позволяет исключить из линии точки, лежащие почти на одной прямой.
При ненулевом значении параметра Минимальная длина линии все линии меньшей длины игнорируются программой.

http://www.lesis.ru/doc/_toc2_6_3_0.html
...
Рейтинг: 0 / 0
19.10.2017, 12:26
    #39538620
MBo
MBo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упрощение полилинии при уменьшении масштаба
Классический алгоритм для упрощения полилиний - алгоритм Дугласа-Пекера
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Упрощение полилинии при уменьшении масштаба / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]