поэлементный Clip

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 32

поэлементный Clip

Сообщение 5Nap » 22 апр 2016, 12:21

Привет!
Есть два слоя - полигональный и линейный. Эти слои соотносятся друг с другом по ID - линия N1 относится к полигону N1. При этом геометрически линия N1 может заезжать на полигон NX. Задача - обрезать линейный шейп по соответствующим полигонам. Т.е. пошагово это "выбрать первый полигон"-"выбрать первую линию"-"клипнуть"-"выбрать второй полигон"-...
Есть какие-нибудь варианты сделать это автоматом?

Andrey Zhukov
Гуру
Сообщения: 838
Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: поэлементный Clip

Сообщение Andrey Zhukov » 22 апр 2016, 12:55

Model Builder в помощь.

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 32

Re: поэлементный Clip

Сообщение 5Nap » 22 апр 2016, 13:28

я понимаю, что можно в modelbuilder'е накидать что-то вроде iterate selection (Poly) - select by attribute (Line, id=%ID%) - clip (Line, Poly). Но это наплодит промежуточных слоёв.

Нашел метод intersect для курсора, пытаюсь понять, как это работает..

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 32

Re: поэлементный Clip

Сообщение 5Nap » 22 апр 2016, 14:25

Сработало!
В итоге (вдруг кому пригодится?:)

uc = arcpy.da.UpdateCursor(Lines, "SHAPE@")
sc = [row[-1] for row in arcpy.da.SearchCursor(Polygons, "SHAPE@")]
k=0
for row in uc:
clippedFeature=row[-1].intersect(sc[k], 2)
uc.updateRow([clippedFeature])
k+=1

по мотивам https://blogs.esri.com/esri/arcgis/2013 ... r-the-job/

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: поэлементный Clip

Сообщение gamm » 22 апр 2016, 18:06

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

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 32

Re: поэлементный Clip

Сообщение 5Nap » 26 апр 2016, 22:28

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

[ Сообщение с мобильного устройства ]

Ответить

Вернуться в «ArcGIS»

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

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