enter image description hereI have multiple feature classes (buildings, airport, land, roads etc) that I would like to clip using a Local Authority boundary. I am trying to create a process in model builder or Arcpy that will iterate the clip operation through the feature classes and create separate output (clipped building, airport, land, roads etc) for each feature class.
Please can anyone advice me on how to automate this than having to set separate clip operations for each feature class?
I've tried using the Iterate feature class in model builder but it only selects and clips the first feature class (Airports) not all feature classes.
-
Thank you for your reply. I tried the iterate feature class with the recursive option enabled but it limits clipping to the first feature class. Is there any change I can make to the model to make it iterate through all the feature classes not just the first feature class?user140198– user1401982019年08月16日 13:17:04 +00:00Commented Aug 16, 2019 at 13:17
-
2@Bera many thanks it has worked. I noticed I omitted (Clip_) in the clip output geodatabase. Corrected as suggested 'C:\Feature.gdb\Clip_%Name%'.user140198– user1401982019年08月16日 16:42:42 +00:00Commented Aug 16, 2019 at 16:42
1 Answer 1
Assuming you have all your features in the same folder or GDB you can try the following:
import arcpy
arcpy.env.workspace = r'path\to\your\folder'
feature_classes = arcpy.ListFeatureClasses()
clip_feature = r'path\to\clip_feature' # this would have to be on a different folder
for fc in feature_classes:
arcpy.Clip_analysis(fc, clip_feature, 'clip_{}'.format(fc))
Make sure to read the documentation.
-
Villa, thank you for the syntax. This also worked.user140198– user1401982019年08月16日 17:16:30 +00:00Commented Aug 16, 2019 at 17:16
-
please how do I specify a different output folder in the above code than that specified in the workspace? I tried specifying an output folder with fc format function but it didn't work - 'path\output_folder\'clip_{ }'.format(fc))'user140198– user1401982019年09月10日 14:16:47 +00:00Commented Sep 10, 2019 at 14:16
-
@user140198 That should work. Are you writing an
r
before the string like this:r'path\output_folder\clip_{}'.format(fc)
? If that does not work feel free to create a new question and comment the link here so I can take a look.Marcelo Villa– Marcelo Villa2019年09月10日 14:19:46 +00:00Commented Sep 10, 2019 at 14:19 -
Thanks @Marcelo Villa for the prompt reply and the formatted code. I noticed from your code that I had the quotation marks in the wrong place. I've made changes and it now runs as expected. Please may I ask what the 'r' before the file path does? Sorry I'm new to coding and would like to know. I notice the code still work with and without it. Thank you so much for your help.user140198– user1401982019年09月10日 15:17:03 +00:00Commented Sep 10, 2019 at 15:17
-
Glad it is working now. The
r
before a string means that it is a raw string literal. This means that the string will be interpreted as it is instead of reading backslashes and specific characters as escaping sequences. For example'\n'
means a new line but if you writer'\n'
it will be evaluated to\n
instead of a new line. Try that example in the console using print statement; it might help you understand it better.Marcelo Villa– Marcelo Villa2019年09月10日 15:34:01 +00:00Commented Sep 10, 2019 at 15:34