I'm trying to iterate through a feature class and select each feature one by one by using the OBJECTID field. When I use a single value, the SelectLayerByAttribute works, but how do I compare the OBJEECTID to a variable that increases in count through the loop. The program is then suppose to create a layer for each feature in the feature class. This is what I have so far:
import arcpy
import os
arcpy.env.workspace = "C:\Users\Daimon Nurse\Desktop\DFMPROJECT\DFMPROJECT.gdb"
arcpy.env.overwriteOutput=True
inlayer = "C:\Users\Daimon Nurse\Desktop\DFMPROJECT\DFMPROJECT.gdb\ZonesPolyline"
with arcpy.da.SearchCursor(inlayer, ("OID@", "SHAPE@AREA")) as cursor:
i = 1
for row in cursor:
print("Feature {0} has an area of {1}".format(row[0], row[1]))
outlayer = "ZonePolygon"
arcpy.MakeFeatureLayer_management (inlayer, outlayer)
arcpy.SelectLayerByAttribute_management (outlayer, "NEW_SELECTION", """ "OBJECTID" = 1 """)
output = r'C:\Users\Daimon Nurse\Desktop\Grounds Project\DFMGROUNDS.gdb'
outfile = os.path.join (output, i)
arcpy.CopyFeatures_management(outlayer, outfile)
print i
i = i + 1
Answer
Instead of using a where_clause of:
""" "OBJECTID" = 1 """
I think you should try:
'"OBJECTID" = {0}'.format(i)
Also, instead of:
outfile = os.path.join (output, i)
try:
outfile = os.path.join(output, "fc{0}".format(i))
What I have used in both of the above is Python string formatting. Python strings can be delimited using single or double quotes. I used single in the first so as not to clash with double quotes that indicated the field name. In the second I used double quotes because I think they look better.
I added "fc" to your feature class name because I don't think ArcGIS will like a feature class name that is, or starts with, a number.
Also take a look at:
arcpy.env.workspace = "C:\Users\Daimon Nurse\Desktop\DFMPROJECT\DFMPROJECT.gdb"
arcpy.env.overwriteOutput=True
inlayer = "C:\Users\Daimon Nurse\Desktop\DFMPROJECT\DFMPROJECT.gdb\ZonesPolyline"
which needs to escape the single backslashes in your pathnames e.g.:
arcpy.env.workspace = r"C:\Users\Daimon Nurse\Desktop\DFMPROJECT\DFMPROJECT.gdb"
arcpy.env.overwriteOutput=True
inlayer = r"C:\Users\Daimon Nurse\Desktop\DFMPROJECT\DFMPROJECT.gdb\ZonesPolyline"
No comments:
Post a Comment