Страница 1 из 1
Объединение отрезков в единую линию
Добавлено: 03 окт 2006, 18:38
Maka
Здравствуйте!
Подскажите как лучше и правильнее решить следующую задачу:
есть линия состоящая из множества отрезков, причем конечный узел одного отрезка не обязательно точно попадает в начальный узел следующего.
нужно объеденить отрезки так чтобы они стоставляли единую линию (один объект в слое) и при этом начальный узел линий оказался бы либо на одном, либо на другом ее крае, а не в центре.
Заранее спасибо.
задачка не такая уж простая...
Добавлено: 04 окт 2006, 10:49
geologic
вам нужно, разумеется автоматически: вручную вы и сами с усами

пара наводящих вопросов:
1. порядок отрезков в линии известен?
2. есть ли критерий отличия начала линии от конца?
3. есть ли принцип отбора точек-дубликатов на стыках (например, берется всегда предыдущая).
И - когда приходилось такое решать, в любом случае удобно разбить все отрезки на точки вертексов. Сборку можно делать любой программой-сборщиком (линий из точек). О них есть здесь.
http://geofaq.narod.ru/1pnts2line.htm
Добавлено: 04 окт 2006, 17:54
Maka
Здравствуйте!
Как раз ручками и не получается (исходно трасса видимо была нарисована в Autocad, потом перегнана в АРК)
Я пытаюсь последовательно обединить отрезки, так вот в какой-то момент последний узел оказывается в месте слияния двух отрезков, либо при использовании flip в начале, но никак не в конце
1. порядок отрезков в линии известен?
нет но его можно задать (всетаки отрезков около 30, а точке при разбиении линии на точки получается около 4500 и пронумеровать их значительно сложнее)
2. есть ли критерий отличия начала линии от конца?
Можно задать как самый северный узел линии.
3. есть ли принцип отбора точек-дубликатов на стыках (например, берется всегда предыдущая).
По моему для моей задачи это не важно, можно брать предыдущую, можно последующую.
Разбила линию на точки (получилось порядка 4500). Буду думать как пронумеровать. К сожалению координаты не подходят
Маша.
Re: задачка не такая уж простая...
Добавлено: 04 окт 2006, 17:55
AN1440
geologic писал(а):вам нужно, разумеется автоматически: вручную вы и сами с усами
А вот между прочим - как раз вручную-то - как сделать?
Формально линия при combine становится единым объектом, но фактически после этого ее снова можно растащить кусками по углам.
Ненужный кусок можно пытаться удалить "поточечно" - но процедура останавливается, когда точек остается 2. Далее удалить нельзя.
И выделить зловредный кусок нельзя (чтобы удалить) - он же формально одно целое с остальными, выделяются все вместе.
Точно такая же проблема иногда возникает с полигоном - когда на нем "захлестывается петля" - вручную с ней сделать ничего не удается (ну, кроме как сделать малозаметной. Или отделить зловредный кусок "с мясом", удалить его, а потом залечивать рану).
Тут не сказали про что говорится. Я имею в виду АркВъю-330
Добавлено: 05 окт 2006, 17:24
Maka
Спасибо.
Все получилось. Использовала merge.
Еще "Если есть подозрения, что точки были отрисованы строго одна после другой" можно наверное открыть dbf в Excel и пронумеровать там (просто с точечной темой у меня это получилось).
Маша.
Добавлено: 10 окт 2006, 12:20
tsarev
2 Maka
Я так понял, что Вы просто взяли выделили необходимые линии и объединили их. А как же разрывы между отрезками?
Добавлено: 10 окт 2006, 14:14
Maka
to tsarev
Да я просто взяла и выделила необходимые отрезки и объединила их.
Перед этим я:
- убрала разрывы (точнее микронесовпадения, т.к. больших разрывов в линии у меняне было и на выходном масштабе карты она читалась как единая линия, а вот при значительном увеличении вылезало, что последний узел одного отрезка не точно проходится в узел следующего за ним отрезка). Просто точно соединила последний узел предыдущего отрезка с первым последующего (snapping).
- перевернула все отрезки с помощью flip в нужном направлении и соединила.
Маша.
ЗЫ: отрезков у меня было околок 30, а вот если разбить их на точки то точек около 4500, так что для меня получалось, что легче работать с отрезками.
Добавлено: 10 окт 2006, 15:19
tsarev
А можете исходный материал скинуть? Формат желательно TAB, MIF, DXF, можно SHP. Хотелось бы поковыряться. Заранее спасибо.
Добавлено: 11 окт 2006, 13:35
geologic
Если отрезки объединены, и объединены правильно, то физически пересобрать их несложно - разбиваем на точки и обратно в линию, дело нескольких минут, если не секунд. Есть даже (кажется) пересборка автоматом, типа скрипт какой-то. Сложно все, что ДО этого, а) нумерация, если через точки б) края отрезков в обоих вариантах сборки. По физическому порядку не обязательно делать через Эксель, многие инструменты пользуются им по умолчанию, например GeoWizards в AM. Для AV можно с ходу такой скрипт предложить:
http://geofaq.narod.ru/tools/alexp/pz2lz.ave. Правда, делает трезмерную линию, но ее упростить элементарно. да и это лишь пример, скриптов полно - текст сборки на Avenue, кстати, всего несколько строк.
Края отрезков сшить задача довольно интересная. Если не брать случай, когда края далеко - а там все просто при пересборке - то по сути мы имеем точки-дубликаты, и надо их как-то проредить. дубликаты в понимании БД: то есть две версии одного объекта. Универсальный способ - найти такие пары точек (опять-таки на это масса скриптов), и поудалять любую из пары. Потом сборка линии идет уже без проблем. НО: удаление из пары некорректно ни для одной точки, и напрашивается классический способ поглощения дубликатов:
Аггрегация таких точек, т.е. в данном случае простановка средней (по координатам). Способ для этого любознательный гисовец и сам сообразит. Любопытным и нетерпеливым могу рассказать - уже разбирали в свое время этот момент на DataPlus (правда, в переписке - но она сохранилась). Кстати, способ намного эффективней любого скрипта, и уж тем более ручного редактирования отрезков. Так что алгоритм инструмента, считайте, есть - дело за обкаткой.
Да, сомкнуть отрезки можно используя топологические средства - например, как это ни странно, Build Polygons подойдет, только Tolerance верно настроить.
Добавлено: 12 окт 2006, 14:12
Maka
tsarev писал(а):А можете исходный материал скинуть? Формат желательно TAB, MIF, DXF, можно SHP. Хотелось бы поковыряться. Заранее спасибо.
Могу только ближе к вечеру.
Маша.