2 votos

Uso de la sentencia if else en el parser de Python de la calculadora de campo en ArcGIS for Desktop?

Necesito ayuda para escribir el python script en la calculadora de campo. Tengo tres campos a saber: CÓDIGO COMPLEJO Mapa1

Mapa1 es un campo vacío que quiero rellenar. Tengo una serie de condiciones para atender un solo campo de Map1. Por ejemplo, si CODE es 1.1.7 y COMPLEX es 4, entonces la salida para Map1 debe ser 1.3, y estas condiciones continúan con diferentes valores de CODE y COMPLEX. He tratado de escribirlo así pero no funciona:

Parser Python

Bloque de códigos

def Reclass( !CODE! , !COMPLEX! ):
    if ( !CODE! == 1.1.7 and !COMPLEX! == 4):
        return 1.3
    elif ( !CODE! == 3.2.0 and !COMPLEX! == 4):
        return 1.3    
    else:
        return 0

Mapa1 =

Reclass( !CODE! , !COMPLEX! )

¿Puede alguien decirme en qué me estoy equivocando? ¿O alguna otra forma de hacerlo?

4voto

UnkwnTech Puntos 21942

El problema está en su bloque de código.

En lugar de:

def Reclass( !CODE! , !COMPLEX! ):
    if ( !CODE! == 1.1.7 and !COMPLEX! == 4):
        return 1.3
    elif ( !CODE! == 3.2.0 and !COMPLEX! == 4):
        return 1.3    
    else:
        return 0

Inténtalo:

def Reclass( CODE , COMPLEX ):
    if ( CODE == "1.1.7" and COMPLEX == 4):
        return 1.3
    elif ( CODE == "3.2.0" and COMPLEX == 4):
        return 1.3    
    else:
        return 0

Los signos de exclamación son necesarios en su expresión porque allí están indicando los nombres de los campos, pero en el bloque de código CODE y COMPLEX son variables de Python y pueden llamarse a y b si quieres.

El otro problema es que su campo CODE parece ser de tipo texto por lo que he añadido comillas alrededor de las pruebas de sus valores. No puedo decir si sus campos Map1 y COMPLEX son texto o números, por lo que no los he puesto allí - ¡puede que lo necesite!

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