Объединение отрезков в единую линию

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Ответить
Maka
Активный участник
Сообщения: 121
Зарегистрирован: 23 ноя 2005, 16:57
Репутация: 6
Откуда: Москва

Объединение отрезков в единую линию

Сообщение Maka » 03 окт 2006, 18:38

Здравствуйте!

Подскажите как лучше и правильнее решить следующую задачу:

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

нужно объеденить отрезки так чтобы они стоставляли единую линию (один объект в слое) и при этом начальный узел линий оказался бы либо на одном, либо на другом ее крае, а не в центре.
Заранее спасибо.

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

задачка не такая уж простая...

Сообщение geologic » 04 окт 2006, 10:49

вам нужно, разумеется автоматически: вручную вы и сами с усами :)
пара наводящих вопросов:

1. порядок отрезков в линии известен?
2. есть ли критерий отличия начала линии от конца?
3. есть ли принцип отбора точек-дубликатов на стыках (например, берется всегда предыдущая).

И - когда приходилось такое решать, в любом случае удобно разбить все отрезки на точки вертексов. Сборку можно делать любой программой-сборщиком (линий из точек). О них есть здесь.
http://geofaq.narod.ru/1pnts2line.htm

Maka
Активный участник
Сообщения: 121
Зарегистрирован: 23 ноя 2005, 16:57
Репутация: 6
Откуда: Москва

Сообщение Maka » 04 окт 2006, 17:54

Здравствуйте!
Как раз ручками и не получается (исходно трасса видимо была нарисована в Autocad, потом перегнана в АРК)
Я пытаюсь последовательно обединить отрезки, так вот в какой-то момент последний узел оказывается в месте слияния двух отрезков, либо при использовании flip в начале, но никак не в конце :(

1. порядок отрезков в линии известен?
нет но его можно задать (всетаки отрезков около 30, а точке при разбиении линии на точки получается около 4500 и пронумеровать их значительно сложнее)

2. есть ли критерий отличия начала линии от конца?
Можно задать как самый северный узел линии.

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

Разбила линию на точки (получилось порядка 4500). Буду думать как пронумеровать. К сожалению координаты не подходят
Маша.

AN1440
Участник
Сообщения: 76
Зарегистрирован: 24 фев 2006, 14:33
Репутация: 0

Re: задачка не такая уж простая...

Сообщение AN1440 » 04 окт 2006, 17:55

geologic писал(а):вам нужно, разумеется автоматически: вручную вы и сами с усами :)
А вот между прочим - как раз вручную-то - как сделать?
Формально линия при combine становится единым объектом, но фактически после этого ее снова можно растащить кусками по углам.
Ненужный кусок можно пытаться удалить "поточечно" - но процедура останавливается, когда точек остается 2. Далее удалить нельзя.
И выделить зловредный кусок нельзя (чтобы удалить) - он же формально одно целое с остальными, выделяются все вместе.

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

Тут не сказали про что говорится. Я имею в виду АркВъю-330

Maka
Активный участник
Сообщения: 121
Зарегистрирован: 23 ноя 2005, 16:57
Репутация: 6
Откуда: Москва

Сообщение Maka » 05 окт 2006, 17:24

Спасибо.
Все получилось. Использовала merge.

Еще "Если есть подозрения, что точки были отрисованы строго одна после другой" можно наверное открыть dbf в Excel и пронумеровать там (просто с точечной темой у меня это получилось).
Маша.

tsarev
Завсегдатай
Сообщения: 406
Зарегистрирован: 14 авг 2006, 16:21
Репутация: 25

Сообщение tsarev » 10 окт 2006, 12:20

2 Maka
Я так понял, что Вы просто взяли выделили необходимые линии и объединили их. А как же разрывы между отрезками?

Maka
Активный участник
Сообщения: 121
Зарегистрирован: 23 ноя 2005, 16:57
Репутация: 6
Откуда: Москва

Сообщение Maka » 10 окт 2006, 14:14

to tsarev
Да я просто взяла и выделила необходимые отрезки и объединила их.

Перед этим я:

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

- перевернула все отрезки с помощью flip в нужном направлении и соединила.
Маша.
ЗЫ: отрезков у меня было околок 30, а вот если разбить их на точки то точек около 4500, так что для меня получалось, что легче работать с отрезками.

tsarev
Завсегдатай
Сообщения: 406
Зарегистрирован: 14 авг 2006, 16:21
Репутация: 25

Сообщение tsarev » 10 окт 2006, 15:19

А можете исходный материал скинуть? Формат желательно TAB, MIF, DXF, можно SHP. Хотелось бы поковыряться. Заранее спасибо.

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Сообщение geologic » 11 окт 2006, 13:35

Если отрезки объединены, и объединены правильно, то физически пересобрать их несложно - разбиваем на точки и обратно в линию, дело нескольких минут, если не секунд. Есть даже (кажется) пересборка автоматом, типа скрипт какой-то. Сложно все, что ДО этого, а) нумерация, если через точки б) края отрезков в обоих вариантах сборки. По физическому порядку не обязательно делать через Эксель, многие инструменты пользуются им по умолчанию, например GeoWizards в AM. Для AV можно с ходу такой скрипт предложить: http://geofaq.narod.ru/tools/alexp/pz2lz.ave. Правда, делает трезмерную линию, но ее упростить элементарно. да и это лишь пример, скриптов полно - текст сборки на Avenue, кстати, всего несколько строк.

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

Аггрегация таких точек, т.е. в данном случае простановка средней (по координатам). Способ для этого любознательный гисовец и сам сообразит. Любопытным и нетерпеливым могу рассказать - уже разбирали в свое время этот момент на DataPlus (правда, в переписке - но она сохранилась). Кстати, способ намного эффективней любого скрипта, и уж тем более ручного редактирования отрезков. Так что алгоритм инструмента, считайте, есть - дело за обкаткой.

Да, сомкнуть отрезки можно используя топологические средства - например, как это ни странно, Build Polygons подойдет, только Tolerance верно настроить.
Последний раз редактировалось geologic 12 окт 2006, 15:55, всего редактировалось 1 раз.

Maka
Активный участник
Сообщения: 121
Зарегистрирован: 23 ноя 2005, 16:57
Репутация: 6
Откуда: Москва

Сообщение Maka » 12 окт 2006, 14:12

tsarev писал(а):А можете исходный материал скинуть? Формат желательно TAB, MIF, DXF, можно SHP. Хотелось бы поковыряться. Заранее спасибо.
Могу только ближе к вечеру.
Маша.

Ответить

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

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

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