вычесть линейный слой из линейного

0 голосов
спросил 11 Апр, 08 от AndreyL (5,420 баллов) в категории Программные продукты Esri
Извиняюсь, может, этот вопрос уже задавался. Нужно из одного линейного слоя вычесть другой. Есть два слоя типа Line. некоторые линии в них совпадают. Нужно убрать из первого слоя все линии, которые есть во втором.
С полигонами Erase нормально работает, а с линиями ругается, говорит «Invalid Topology [CLASS_IS_NOT_LINE_CLASS]»

20 Ответы

0 голосов
ответил 14 Апр, 08 от Nadiia (2,040 баллов)
можно построить топологию, указав правило "must not self-overlap"
0 голосов
ответил 14 Апр, 08 от geologic (39,860 баллов)
Такие задачи должны делаться с допуском, tolerance. ПО умолчанию ведь где критерий, совпадают линии или нет? Соответственно для полигонов и линий это не может быть одна и та же процедура, ищите специфические линейные инструменты.

Как вариант, можно сделать буфер. Линий хороших так не получить, но для анализа сойдет

ET (Geowizards) помню, удаляет двойные в ходе чистки. ВОобще nadiia правильно говорит, в топологии это должно быть (как этап подготовки к построению полигонов, например). Гляньте Clean.
0 голосов
ответил 14 Апр, 08 от Nadiia (2,040 баллов)
не уверенна,что это то,что нужно, но попробовать можно
http://forums.esri.com/Thread.asp?c=93&f=993&t=200112

0 голосов
ответил 14 Апр, 08 от AndreyL (5,420 баллов)
Толерантность тут не причем - линии полностью совпадают, это суть одни и те же линии.
Для таких задач топология, наверное, самое лучшее, буду учиться пользоваться.
А скрипт натолкнул на такую мысль - разбить линии на вертексы, удалить совпадающие (например в Access), по оставшимся собрать линии.
0 голосов
ответил 14 Апр, 08 от geologic (39,860 баллов)
Это для вас она ни к чему. Разработчики ГИС ставят такие задачи в общем виде. Везде, где она решается, и в ET, и в топологиях ArcINFO допуск присутствует, этого требует логика геоданных. Но разумеется, упрощенные инструменты можно найти - мне самому интересно былоб проверить такое на данных single и double precision, например :)

Идея "разбить на точки и проверить" всегда логически возникает при обсуждении топологии, ну а как чистить точки-дубликаты вы, наверно, помните дискусии,
https://forum.esri-cis.ru/index.php?qa=24678
http://gis-lab.info/forum/viewtopic.php?t=1633
Это можно и простым SQL-запросом. Только цепочка решения слишком хлопотная и многих отпугивает. Ну а если у вас единичная задача большого объема, пуркуа бы и не па :)
0 голосов
ответил 14 Апр, 08 от JGBoBBy (4,940 баллов)
А нельзя разве сделать выборку по расположению, с правилом Объекты одного слоя идентичны объектам второго слоя... И удалить выбранные объекты?
Вариант 2: слить два слоя в один и посторить топологию с правилом - Линии не должны накладываться, и затем ошибки топологии удалить.
    
0 голосов
ответил 15 Апр, 08 от dsavitskiy (10,720 баллов)
Толерантность тут не причем - линии полностью совпадают, это суть одни и те же линии.

Только еслии координаты хранить как целые числа Smile
В общем виде, представление чисел с плавающей точкой в ЭВМ таково, что для двух ОДИНАКОВЫХ чисел условие равенства часто выполняется только с некоторым допуском.
К примеру
1.00000000001 <> 0.999999999999999
0 голосов
ответил 15 Апр, 08 от JGBoBBy (4,940 баллов)
Причем тут толерантность? Это чисто топологическая задача...
0 голосов
ответил 15 Апр, 08 от Vadim (28,120 баллов)

Согласен с JGBoBBy все быстро решается через select by location

0 голосов
ответил 15 Апр, 08 от AndreyL (5,420 баллов)
А нельзя разве сделать выборку по расположению, с правилом Объекты одного слоя идентичны объектам второго слоя... И удалить выбранные объекты? 
А можно в деталях для особо одаренных?
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...