Страница 1 из 1
поэлементный Clip
Добавлено: 22 апр 2016, 12:21
5Nap
Привет!
Есть два слоя - полигональный и линейный. Эти слои соотносятся друг с другом по ID - линия N1 относится к полигону N1. При этом геометрически линия N1 может заезжать на полигон NX. Задача - обрезать линейный шейп по соответствующим полигонам. Т.е. пошагово это "выбрать первый полигон"-"выбрать первую линию"-"клипнуть"-"выбрать второй полигон"-...
Есть какие-нибудь варианты сделать это автоматом?
Re: поэлементный Clip
Добавлено: 22 апр 2016, 12:55
Andrey Zhukov
Model Builder в помощь.
Re: поэлементный Clip
Добавлено: 22 апр 2016, 13:28
5Nap
я понимаю, что можно в modelbuilder'е накидать что-то вроде iterate selection (Poly) - select by attribute (Line, id=%ID%) - clip (Line, Poly). Но это наплодит промежуточных слоёв.
Нашел метод intersect для курсора, пытаюсь понять, как это работает..
Re: поэлементный Clip
Добавлено: 22 апр 2016, 14:25
5Nap
Сработало!
В итоге (вдруг кому пригодится?:)
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/
Re: поэлементный Clip
Добавлено: 22 апр 2016, 18:06
gamm
а зачем такой мудреж, если можно просто разрезать линии полигонами, а потом собрать нужное запросом по ID и вложенности в полигоны (не прибегая к программированию)?
Re: поэлементный Clip
Добавлено: 26 апр 2016, 22:28
5Nap
Потому что линии покрывают большую площадь и залезают на соседние полигоны. Т.е при разбиении полигонами я получил бы линию, состоящую из, условно, двух кусков - один в "своём" полигоне, другой - в соседнем.
[ Сообщение с мобильного устройства ]