2

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.

asked Aug 16, 2019 at 11:59
2
  • 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? Commented 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%'. Commented Aug 16, 2019 at 16:42

1 Answer 1

3

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.

answered Aug 16, 2019 at 12:24
6
  • Villa, thank you for the syntax. This also worked. Commented 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))' Commented 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. Commented 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. Commented 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 write r'\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. Commented Sep 10, 2019 at 15:34

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.