Hi, I am a GIS student, just starting out with python, and I am working on a project in which I want to create a custom script tool to clip a list of feature classes in a municipality to a single clip feature representing flood extent (FloodLevel). Can I create a list of the feature classes and then loop through the list to accomplish this? Here is what I am trying, though I cannot get the script to work at this point. I get an error that says: 'list' object is not callable. And I am not sure how to properly provide the output name for multiple features at once.
# Clip town features to a flood level polygon # Define input parameter for floodLevel polygon # Define infrastructure variables FloodLevel = arcpy.GetParameterAsText(0) FC1 = "Town_Boundary" FC2 = "Parcels_2010" FC3 = "Buildings_2009" FC4 = "Trails" FC5 = "Banff_Roads" FC6 = "Water_Main" FC7 = "Storm_Main" FC8 = "Hydrant" # Create list of feature classes and loop through the feature classes Features = [FC1, FC2, FC3, FC4, FC5, FC6, FC7, FC8] # Clip features in list to the FloodLevel polygon feature for items in Features(): arcpy.Clip_analysis(Features, FloodLevel, "Features_clip")
Any suggestions on how I could solve this scenario would be helpful!
Thanks,
Myla-Rae
(Curtis Price formatted code block 4/29/2015)
for item in Features: arcpy.Clip_analysis(item, FloodLevel, "Features_clip")
arcpy.env.workspace = r'G:\Some\Path\file.gdb' for item in Features: arcpy.Clip_analysis(item, FloodLevel, "Features_clip")
arcpy.env.workspace = r'G:\Some\Path\file.gdb' for item in Features: arcpy.Clip_analysis(item, FloodLevel, "Features_clip")
import arcgisscripting import arcpy gp = arcgisscripting.create(9.3) gp.overwriteOutput = 1 # input hard-coded but you can make it a script tool parameter to make it an interactive input. in_fc = r"X:\mohammadi\finalmunichGIS\munich.gdb\fc_parent1_" # this polygon feature class has several polygons. fc_parent1_=[fc_parent1_1, fc_parent1_2, fc_parent1_3, fc_parent1_4, fc_parent1_5, fc_parent1_6, fc_parent1_7, fc_parent1_8 ,fc_parent1_9,fc_parent1_10, fc_parent1_11, fc_parent1_12, fc_parent1_13, fc_parent1_14, fc_parent1_15, fc_parent1_16 , fc_parent1_17, fc_parent1_18, fc_parent1_19, fc_parent1_20] rows = gp.SearchCursor(in_fc) row = rows.Next() while row: feat = row.shape ext = feat.extent orig = str(ext.xmin) + " " + str(ext.ymin) yaxis = str(ext.xmin) + " " + str(ext.ymin + 100.00) opp_corner = str(ext.xmax) + " " + str(ext.ymax) print orig, yaxis, opp_corner out_fc = r"X:\mohammadi\finalmunichGIS\munich.gdb\clip" # + str(row.OBJECTID) result = arcpy.clip_management("X:\mohammadi\finalmunichGIS\Testdaten-original data\munich_subset.tif", "650923.51 5297968.73 743103.51 5375868.73" , "X:\mohammadi\finalmunichGIS\munich.gdb\clip","#", "#", "NONE") print(gp.GetMessages()) row = rows.Next() del row, rows
# only import arcpy - don't use arcgisscripting/gp at 10.x import arcpy from arcpy import env arcpy.env.overwriteOutput = True ## 1 # in_fc is your polygon feature class in_fc = r"X:\mohammadi\finalmunichGIS\clip0ffishnet9000\shapefilesoffc\fc_parent1" # in_tif is your input in_raster = "X:\mohammadi\finalmunichGIS\Testdaten-original data\munich_subset.tif" # output location outGDB = r"X:\mohammadi\finalmunichGIS\munich.gdb" arcpy.MakeFeatureLayer_management(in_fc,lyrFC) # get list of object ids objIDs = [] objIDField = arcpy.Describe(lyrFC).OIDFieldName Rows = arcpy.SearchCursor(lyrFC) while Row in Rows: objIDs.append(Row.getValue(objIDField)) del Row, Rows # temp polygons tmpFC = "in_memory/tmpPoly" # one by one clip raster to polygons arcpy.env.workspace= outGDB for objID in objIDs: where = "{0} = {1}".format(objIDField,objID) arcpy.SelectLayerByAttributes_management(lyrFC,where) arcpy.CopyFeatures_management(lyrFC,tmpFC) ext = arcpy.Describe(tmpFC).Extent extString = "{0} {1} {2} {3}".format(ext.XMin, ext.YMin, ext.XMax, ext.YMax) out_raster = "clip{0}".format(objID) arcpy.Clip_management(in_raster, extString, out_raster, tmpFC) print arcpy.GetMessages(0) arcpy.Delete_management(tmpFC)