Пересекающиеся линии -> 1 линя

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Ответить
oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Пересекающиеся линии -> 1 линя

Сообщение oleg » 20 июл 2011, 21:58

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

Просьба подсказать инструменты и способы, если реализация возможна.
Спасибо.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Пересекающиеся линии -> 1 линя

Сообщение Александр Мурый » 20 июл 2011, 22:33

Было бы неплохо увидеть пример файла, а то на словах не очень ясно.
Т.е. нужно просто объединить все линии в файле в одну полилинию? Или надо выбрать какие-то по признакам (атрибуты и т.д.) и уже потом объединить. Или объединение нужно вообще для сетевой анализа?
Редактор материалов, модератор форума

oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Re: Пересекающиеся линии -> 1 линя

Сообщение oleg » 21 июл 2011, 00:19

Да, просто преобразовать все линии в файле в одну линию. Пример - карта OSM, без точек.
Вариант "обхода" красным в примере. Для наглядности неизбежные двойные линии изобразил параллельными.
Вложения
lines.png
lines.png (6.98 КБ) 8611 просмотров
line.png
line.png (11.61 КБ) 8611 просмотров

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Пересекающиеся линии -> 1 линя

Сообщение Voltron » 21 июл 2011, 09:32

Для QGIS есть модуль JoinLines, но пока без поддержки пакетного режима, т.е. «клеить» отрезки надо вручную.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Пересекающиеся линии -> 1 линя

Сообщение Александр Мурый » 21 июл 2011, 11:29

Если не трудно, выложите пример самого SHP-файла. Интересно попробовать объединить линии в одну в GRASS.
Редактор материалов, модератор форума

oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Re: Пересекающиеся линии -> 1 линя

Сообщение oleg » 21 июл 2011, 22:09

Пример шейпа в аттаче. Родилось необязательное пожелание - хорошо, если результирующая линия будет минимальной длины (но это не критично). Спасибо за внимание к теме!
Вложения
lines.zip
(24.08 КБ) 400 скачиваний

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Пересекающиеся линии -> 1 линя

Сообщение Александр Мурый » 21 июл 2011, 22:51

oleg писал(а):хорошо, если результирующая линия будет минимальной длины (но это не критично)
Т.е. надо вычислить кратчайший путь по всем линиям от какой-то начальной точки к какой-то конечной, так? Тогда вопрос: каковы начальная и конечная точки?
Если задача не в этом, тогда вопрос: в чём задача (кроме просто объединения линий в одну)?
Редактор материалов, модератор форума

oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Re: Пересекающиеся линии -> 1 линя

Сообщение oleg » 23 июл 2011, 23:38

Кроме просто объединения линий в одну задач нет, это конечная цель. Начальной и конечной точки нет, можно брать любые. Пожелание по длине родилось исходя лишь из мысли о меньшем размере результирующих данных (но в моем случае это не обязательно).

Да, кратчайший путь обхода - подходящее и ёмкое определение. В эту сторону не пробовал искать еще. Наверно должно быть что-то готовое для решения задачи обхода... например всех троп или просек с целью наблюдения...

oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Re: Пересекающиеся линии -> 1 линя

Сообщение oleg » 08 июн 2012, 23:51

Если вдруг у кого-то возникнут идеи на эту тему - выходите, пожалуйста, на связь, задача всё-еще актуальна.

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Пересекающиеся линии -> 1 линя

Сообщение KolesovDmitry » 09 июн 2012, 13:54

oleg писал(а): кратчайший путь обхода - подходящее и ёмкое определение.
В такой формулировке это задача Штейнера, в GRASS GIS есть соответствующий модуль для ее решения, наверняка такое есть и в других ГИС.
Есть загвоздка: я не уверен, что этот модуль возвращает одну линию, скорее всего решение представляет собой набор соприкасающихся сегментов. Решить эту проблему "дешево и сердито" я предлагаю так: создайте буферную зону вокруг полученных линий размером "эпсилон -> 0", а потом преобразуйте площадной буфер к линии, получится ПОЧТИ то, что вам нужно.

Ответить

Вернуться в «Общие вопросы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя