Quiero calcular un campo dependiendo de 3 parámetros de cadena de entrada. Dos de ellos pueden contener valores Null. Mi antigua expresión de VB no podía trabajar con valores Null, por lo que el script se detenía.
Ahora quiero desarrollar un script que me permita resolver todos mis problemas:
- establecer una condición de if-else
- calcular el campo con expresiones de Python en lugar de VB
- eliminar los valores Null al no calcular/utilizar esas celdas en la expresión.
Esta es la tabla de entrada para obtener mis parámetros
Y aquí está mi script:
import arcpy, os
from arcpy import env
#Obtener parámetros
importfeature = arcpy.GetParameter(0)
workspace = arcpy.GetParameter(1)
owner = arcpy.GetParameter(2)
criteria = arcpy.GetParameter(3)
keep_fieldname1 = arcpy.GetParameter(4)
keep_fieldname2 = arcpy.GetParameter(5)
#Establecer espacio de trabajo
arcpy.env.workspace = workspace
#Agregar Campo
arcpy.AddField_management(importfeature, criteria, "text")
#Calcular campo criterios
if keep_fieldname1 is None and keep_fieldname2 is None:
expression = '"%owner%"'
elif keep_fieldname2 is None:
expression = '"%owner%" +" - "+ !%keep_fieldname1%!'
else:
expression = '"%owner%" +" - "+ !%keep_fieldname1%! +" - "+ !%keep_fieldname2%!'
arcpy.CalculateField_management(importfeature, criteria, expression, "Python")
Necesito mencionar que los parámetros son proporcionados automáticamente por un iterador al script a través de "obtener valores". Así que no se preocupe por la entrada. Esto funciona bien.
¿Cómo resuelvo mis problemas?