Как

0 голосов
спросил 11 Янв, 02 от Alik (6,660 баллов) в категории Программные продукты Esri
Народ! Подскажите кто может как решить следующую задачу:

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

Требуется: собрать все эти кусочки в один, причем обязательно, чтобы это был "физически" один объект, т.е. выделялся в теме как один объект .

Попытки слить это дело по полю шейп в таблице желаемых результатов не дает :(. Получается мультилиния с разрывами.
Кстати никакого признака в семантике по которому можно собирать нет. Её (атрибутики) вообще нет.
Дело в том что это результат импорта из Serfer`а и рисовать правильные линии поверх заново весьма неохота :)

Если естьь идей как с наименьшими трудозатратами это сделать - буду весьма признателен.

3 Ответы

0 голосов
ответил 11 Янв, 02 от Гость (210,080 баллов)
Можно скачать с сайта ESRI (раздел ArcScripts)расширение "Point & Polyline Tools" (автор Soeren Alsleben). В Виде добавится новое меню с кучей опций... Есть там и консолидация полилиний, то есть линии с сидентичными концевыми точками будут объединяться. При этом есть возможность использовать подсортировку Темы, то есть отдельно объединять, например, "реки" и "притоки".
0 голосов
ответил 11 Янв, 02 от Alik (6,660 баллов)
Спасибо, помогло (-)
0 голосов
ответил 12 Янв, 02 от Гость (210,080 баллов)
Вот тебе скрипт позволяющий перенести и атрибутику (выбранного поля) в новый объект Прежде чем запустить скрипт начни редактирование темы и выбери все объекты, которые надо объединить в один theView = av.GetActiveDoc anFTheme = theView.GetEditableTheme if (anFTheme.GetFtab.IsEditable) then theFields=anFTheme.GetFtab.Getfields thefield2gettext=MsgBox.Choice (theFields, "Выберите поле, атрибутику которого надо перенести в новый объект", "Выберите поле") if (thefield2gettext=nil) then exit end theSelection=anFTheme.GetFtab.GetSelection if (theSelection.Count<2) then msgbox.warning("Нет выбранных объектов. Или объектов меньше двух","Ошибка") exit end theSelectionList={} for each rec in theSelection s = anFTheme.GetFtab.ReturnValueString(thefield2gettext,rec).asstring theSelectionList.Add (s) end theAttribValue=MsgBox.ChoiceAsString (theSelectionList, "Выберите значение для объекта", "Выберите значение") if (theAttribValue=nil) then exit end theAttribValue=theAttribValue.asstring if (anFTheme.GetFTab.IsEditable) then anFTheme.UnionSelected end theSelection=anFTheme.GetFtab.GetSelection theSelectionList={} for each rec in theSelection anFTheme.GetFtab.SetValueString (thefield2gettext, rec, theAttribValue) end else msgbox.warning("Сначала начните редактирование темы", "Ошибка") end
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...