6 votos

¿Haciendo If/Then sobre varias columnas de datos en Python analizador de ArcGIS campo calculadora?

Tengo algún código VB guardado que mira dos columnas de datos y rellena una tercera con el valor bajo.

Código de Script pre-logic:

Dim output as double
if [MIN_LEFT] < [MIN_RIGHT] Then
  output = [MIN_LEFT]
else
  output = [MIN_RIGHT]
end if

low = output

Nunca he usado Python antes, pero veo que voy a tener que si quiero hacer este cálculo. Pero yo estoy confundido por la comparación de las dos columnas y cómo definir. ¿Alguien me puede ayudar? (Y pido disculpas si esto es demasiado básico)

10voto

Jon M Puntos 206

Qué quieres hacer en el indentado para Python es definir una función y luego llamar a la función usando sus atributos como parámetros los siguientes:

def comparison(left,right):
    if left < right:
        return left
    else:
        return right

output = comparison(!MIN_LEFT!,!MIN_RIGHT!)

Entonces, todo lo que necesita en el cálculo es output , que ya había para VBScript.

7voto

user2013 Puntos 2301

Tu pregunta es algo similar a el Uso de la Gama en Python expresión de ArcGIS Calculadora de Campo?

Como se puede ver, declarar funciones es un lugar diferente asunto en Python, y que no están obligados a indicar los tipos (como la doble) antes de tiempo.

Usted debe mirar en Calcular el Campo de ejemplos en el centro de recursos para darle una buena idea de lo que su aspecto de la sintaxis.

Puntos importantes:

  • Los campos están marcadas con doble signos de exclamación (!MIN_LEFT!).
  • En la expresión, puede llamar a la función y crear una variable con el valor devuelto (como @nmpeterson muestra), o enviarlo directamente a partir de la función de poner la llamada a la función en el cuadro de expresión.
  • Tenga cuidado con sangría, como es la forma de funciones y de bloques de control (if/else) se identifican.

Sin duda, recomendaría buscar las tuercas y los pernos de funciones python. Son bastante simple para empezar y va a hacer mucho bien en el futuro si usted bajarlos ahora.

6voto

hernan43 Puntos 566

Para este sencillo ejemplo, puede utilizar un en línea-si declaración (no requiere indentado):

!MIN_LEFT! if !MIN_LEFT! < !MIN_RIGHT! else !MIN_RIGHT!

Más complicada lógica (p. ej., if-elif-...), utilice un def e indentado.

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