Quantcast
Channel: Forums - Python
Viewing all articles
Browse latest Browse all 2485

Calculate Field Hellp

$
0
0
Well I am getting better at python scripting. I have the following code block which works fine until the last process which is titled Calculate SNAP_FLAG field with FID values.

Basically when the rest of the code runs, I end up with a field "FID". Based on this fields values I would like to calculate a field "SNAP_FLAG". If "FID" > -1, then I want SNAP_FLAG to be 1. If "FID" = -1, I would like the corresponding records to have a value of 2 for the "SNAP_FLAG" field.

Even if my code for the calculate field part worked, I know there is a much cleaner way of doing this, perhaps with cursors? But I feel it is just out of my grasp right now, and if someone could help me that would be great. The part of the script I am having troubles with is in Red.

Code:

# Import arcpy module
import arcpy, sys, traceback
arcpy.env.overwriteOutput = True
from os import path as p

# Define Workspace directory
arcpy.env.workspace = r"C:\Users\Christopher\Desktop\GISData\PS_Steelhead\Work"
#
# Create List of all Workspaces (GDB)
try:
    for ws in arcpy.ListWorkspaces("*", "FileGDB"):
        arcpy.env.workspace = ws
        print '\n\nSearching in %s\n\n' %ws
#
# Define Variables to be used in Near processes     
        NB = p.join(ws, "NB")
        NHD = p.join(ws, "NHD")
        NHD_buf = p.join(ws, "NHD_buffer100")
        NB_ID = p.join(ws, "NB_Identity")
#
# Add SNAP_FLAG field to NB feature class
        arcpy.AddField_management(NB, 'SNAP_FLAG', 'SHORT')
        print '\n\nAdded SNAP_FLAG field %s\n\n' %NB
#
# Buffer NHD
        arcpy.Buffer_analysis(NHD, NHD_buf, '100 FEET')
        print '\n\nNHD Buffer output created in %s\n\n' %ws
#
# Run Identity Process
        arcpy.Identity_analysis(NB, NHD_buf, NB_ID, 'ONLY_FID')
        print '\n\nIdentity Analysis Complete for %s\n\n' %NB
#
# Calculate SNAP_FLAG field with FID values
        arcpy.SelectLayerByAttribute_management(NB_ID, "NEW_SELECTION", '"FID_NHD_buffer100" > -1'
        arcpy.CalculateField_management(NB_ID, 'SNAP_FLAG', 1)
        arcpy.SelectLayerByAttribute_management(NB_ID, "CLEAR_SELECTION")
        arcpy.SelectLayerByAttribute_management(NB_ID, "NEW_SELECTION", '"FID_NHD_buffer100" = -1'
        arcpy.CalculateField_management(NB_ID, 'SNAP_FLAG', 2)
        arcpy.SelectLayerByAttribute_management(NB_ID, "CLEAR_SELECTION")
        print 'SNAP_FLAG Calculated For %s'%NB_ID


except:
   
    # Get the traceback object
    tb    = sys.exc_info()[2]
    tbinfo = traceback.format_tb(tb)[0]
    pymsg = "PYTHON ERRORS:\nTraceback info:\n%s\nError Info:\n%s\n" % (tbinfo, sys.exc_info()[1])
    msgs  = "ArcPy ERRORS:\n%s\n" % arcpy.GetMessages(2)
    arcpy.AddError(pymsg)
    arcpy.AddError(msgs)
    print pymsg
    print msgs


Viewing all articles
Browse latest Browse all 2485

Trending Articles