2 votos

¿Calculando un campo con una condición de if-else que comprueba los parámetros de entrada para <Null>?

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:

  1. establecer una condición de if-else
  2. calcular el campo con expresiones de Python en lugar de VB
  3. 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

Tabla

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?

1voto

John Kramlich Puntos 286

Parece que estás tratando tus variables en tu script, por ejemplo owner, como variables de modelo en línea al rodearlas con %%. Esa sintaxis es para acceder a variables en un modelo. Quieres configurar tu expresión a algo como:

expresión = '"' + owner + '"'

También establece el tipo de expresión de PYTHON a PYTHON_9.3 en la herramienta Calcular Campo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X