He encontrado una útil calculadora de campo bloque de código que estoy tratando de agregar a una costumbre herramienta de python. Funciona muy bien en el manual de la calculadora de campo; sin embargo, cuando se inserta en el bloque de código de texto para ser utilizado como un script, me sale "NameError: name 'fc' no está definido". Al parecer, el script no está viendo mi variable. Mi pregunta entonces es: ¿Cómo puedo obtener la variable dentro del bloque de código?
He intentado todo lo que puedo pensar, incluyendo pero no limitado a la configuración de 'fc' como global, escapar 'fc' en el bloque de código de la cadena, y la definición de 'filas' fuera del bloque de código, pero me parecen llegar a ninguna parte. Me siento como que me falta algo obvio, pero yo estoy fuera de ideas para el día de hoy. A continuación es mi código y el error:
import arcpy
fc=arcpy.GetParameterAsText(0)
DupNumCode="""uniquelist = {}
rows = arcpy.SearchCursor(fc)
for row in rows:
value = row.getValue('SpatialID')
if value not in uniquelist:
uniquelist[value] = 1
else:
uniquelist[value] = uniquelist[value] + 1
def findIncidence(inValue):
return uniquelist[inValue]"""
DupNumExpression="findIncidence(!SpatialID!)"
arcpy.CalculateField_management(fc, "DupNum", DupNumExpression, "PYTHON", DupNumCode)
Me sale lo siguiente:
ExecuteError: ERROR 000539: Runtime error
Traceback (most recent call last):
File "<string>", line 2, in <module>
NameError: name 'fc' is not defined
Failed to execute (CalculateField).
Aquí está mi configuración de los parámetros: