Пересекающиеся линии -> 1 линя
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Пересекающиеся линии -> 1 линя
Есть шейп пресекающихся между собой линий (замкнутые, отрезки, кривые).
Задача конвертировать это множество линий в одну, с одной начальной и одной конечной точкой.
При необходимости результирующая линия может проходить несколько раз вперёд-назад точка-в-точку сама над собой.
Просьба подсказать инструменты и способы, если реализация возможна.
Спасибо.
Задача конвертировать это множество линий в одну, с одной начальной и одной конечной точкой.
При необходимости результирующая линия может проходить несколько раз вперёд-назад точка-в-точку сама над собой.
Просьба подсказать инструменты и способы, если реализация возможна.
Спасибо.
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Пересекающиеся линии -> 1 линя
Было бы неплохо увидеть пример файла, а то на словах не очень ясно.
Т.е. нужно просто объединить все линии в файле в одну полилинию? Или надо выбрать какие-то по признакам (атрибуты и т.д.) и уже потом объединить. Или объединение нужно вообще для сетевой анализа?
Т.е. нужно просто объединить все линии в файле в одну полилинию? Или надо выбрать какие-то по признакам (атрибуты и т.д.) и уже потом объединить. Или объединение нужно вообще для сетевой анализа?
Редактор материалов, модератор форума
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: Пересекающиеся линии -> 1 линя
Да, просто преобразовать все линии в файле в одну линию. Пример - карта OSM, без точек.
Вариант "обхода" красным в примере. Для наглядности неизбежные двойные линии изобразил параллельными.
Вариант "обхода" красным в примере. Для наглядности неизбежные двойные линии изобразил параллельными.
- Вложения
-
- lines.png (6.98 КБ) 8611 просмотров
-
- line.png (11.61 КБ) 8611 просмотров
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Пересекающиеся линии -> 1 линя
Для QGIS есть модуль JoinLines, но пока без поддержки пакетного режима, т.е. «клеить» отрезки надо вручную.
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Пересекающиеся линии -> 1 линя
Если не трудно, выложите пример самого SHP-файла. Интересно попробовать объединить линии в одну в GRASS.
Редактор материалов, модератор форума
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: Пересекающиеся линии -> 1 линя
Пример шейпа в аттаче. Родилось необязательное пожелание - хорошо, если результирующая линия будет минимальной длины (но это не критично). Спасибо за внимание к теме!
- Вложения
-
lines.zip
- (24.08 КБ) 400 скачиваний
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Пересекающиеся линии -> 1 линя
Т.е. надо вычислить кратчайший путь по всем линиям от какой-то начальной точки к какой-то конечной, так? Тогда вопрос: каковы начальная и конечная точки?oleg писал(а):хорошо, если результирующая линия будет минимальной длины (но это не критично)
Если задача не в этом, тогда вопрос: в чём задача (кроме просто объединения линий в одну)?
Редактор материалов, модератор форума
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: Пересекающиеся линии -> 1 линя
Кроме просто объединения линий в одну задач нет, это конечная цель. Начальной и конечной точки нет, можно брать любые. Пожелание по длине родилось исходя лишь из мысли о меньшем размере результирующих данных (но в моем случае это не обязательно).
Да, кратчайший путь обхода - подходящее и ёмкое определение. В эту сторону не пробовал искать еще. Наверно должно быть что-то готовое для решения задачи обхода... например всех троп или просек с целью наблюдения...
Да, кратчайший путь обхода - подходящее и ёмкое определение. В эту сторону не пробовал искать еще. Наверно должно быть что-то готовое для решения задачи обхода... например всех троп или просек с целью наблюдения...
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: Пересекающиеся линии -> 1 линя
Если вдруг у кого-то возникнут идеи на эту тему - выходите, пожалуйста, на связь, задача всё-еще актуальна.
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Пересекающиеся линии -> 1 линя
В такой формулировке это задача Штейнера, в GRASS GIS есть соответствующий модуль для ее решения, наверняка такое есть и в других ГИС.oleg писал(а): кратчайший путь обхода - подходящее и ёмкое определение.
Есть загвоздка: я не уверен, что этот модуль возвращает одну линию, скорее всего решение представляет собой набор соприкасающихся сегментов. Решить эту проблему "дешево и сердито" я предлагаю так: создайте буферную зону вокруг полученных линий размером "эпсилон -> 0", а потом преобразуйте площадной буфер к линии, получится ПОЧТИ то, что вам нужно.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя