Удаление дубликатов линий на автомате
- Игорь
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 19 ноя 2008, 12:25
- Репутация: 6
Удаление дубликатов линий на автомате
Специалисты, помогите пожалуйста.
Все таки хочется на автомате удалять дубликаты линий.
Кому не лень поломать голову - шейп в прицепе.
Все таки хочется на автомате удалять дубликаты линий.
Кому не лень поломать голову - шейп в прицепе.
- Вложения
-
- Connect.zip
- (3.95 КБ) 685 скачиваний
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Удаление дубликатов линий на автомате
Лови, выделяет объекты - охваты которых одинаковы, можно еще добавить дополнительную проверку на длину, но вероятность, что охваты равны, но это не одинаковые объекты ничтожно мала.
Код: Выделить всё
aview = av.getactivedoc
atheme = aview.getactivethemes.get(0)
aftab = atheme.getftab
f_shape = aftab.findfield("shape")
'f_dup = a
abitmap = aftab.getselection
for each rec in aftab
ashape = aftab.returnvalue(f_shape,rec)
for each rec2 in aftab
if (rec <> rec2) then
ashape2 = aftab.returnvalue(f_shape,rec2)
if (ashape.returnextent = ashape2.returnextent) then
abitmap.set(rec)
abitmap.set(rec2)
end
end
end
end
aftab.setselection(abitmap)
aftab.UpdateSelection
пристегивайтесь, турбулентность прямо по курсу
- Игорь
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 19 ноя 2008, 12:25
- Репутация: 6
Re: Удаление дубликатов линий на автомате
Sim, спасибо большое, как минимум на 50% задача решена. Еще бы понять как на автомате выделенные объекты разделить на оригинал и дубликаты, чтобы удалить все что не нужно, оставив только не дублирующиеся объекты.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Удаление дубликатов линий на автомате
Сделал так, из дубля - первый из них отмечается в новом поле dup, второй нет, поэтому в результате дубли отмечаются числами (которые показывают номер пары). Наконец, после работы скрипта надо сделать выборку: [dup] <> 0 и прибить все выделенное. Можно в принципе добавить в скрипт и эту часть, но это сделает его несколько менее универсальным.
Код: Выделить всё
aview = av.getactivedoc
atheme = aview.getactivethemes.get(0)
aftab = atheme.getftab
f_shape = aftab.findfield("shape")
f_dup = Field.Make("dup",#FIELD_BYTE,1,0)
aftab.seteditable(true)
aftab.addfields({f_dup})
abitmap = aftab.getselection
for each rec in aftab
ashape = aftab.returnvalue(f_shape,rec)
for each rec2 in aftab
if (rec <> rec2) then
ashape2 = aftab.returnvalue(f_shape,rec2)
if (ashape.returnextent = ashape2.returnextent) then
abitmap.set(rec)
if (aftab.returnvalue(f_dup,rec2)=0) then
aftab.setvalue(f_dup,rec,rec2)
end
abitmap.set(rec2)
end
end
end
end
aftab.seteditable(false)
aftab.setselection(abitmap)
aftab.UpdateSelection
пристегивайтесь, турбулентность прямо по курсу
- Игорь
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 19 ноя 2008, 12:25
- Репутация: 6
Re: Удаление дубликатов линий на автомате
Sim, спасибо огромное.
Действительно удаление дубликатов в скрипт не надо добавлять. Вдруг встанет задача выделить все дубликаты. Так скрипт действительно универсален.
Действительно удаление дубликатов в скрипт не надо добавлять. Вдруг встанет задача выделить все дубликаты. Так скрипт действительно универсален.
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: Удаление дубликатов линий на автомате
Дубликаты линий удаляет любая программа работы с топологией, поскольку это типовая операция, обязательная перед сборкой полигонов. Рекомендую EdiTools (Geowizards) - много пользовались. Это там в разделе "Clean Polylines". Работает в два варианта -быстрый (сравнение по началу и концу) и полный (все вертексы).
- Игорь
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 19 ноя 2008, 12:25
- Репутация: 6
Re: Удаление дубликатов линий на автомате
Geologic, спасибо большое.
Вот что называется век живи, век учись. Сколько пользуюсь ET, а про эту функцию не просек.
Вот что называется век живи, век учись. Сколько пользуюсь ET, а про эту функцию не просек.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей