19 votos

Básica If/Then en calculadora de campo de ArcGIS 10.2 (Python o VB)

He estado buscando a través de estos hilos y parece que no puede encontrar mi propia respuesta todavía. Muy nuevo en VBA y Python, pero un montón de años con Arco.Sé que puedo hacer esto de la manera lenta con Seleccionar Por Atributos, pero Es desperdiciador de tiempo.

Estoy intentando hacer una unión espacial entre los casos de una enfermedad (puntos de capa) y NOS Censos (capa de polígono). Esto requiere que los datos de recuento. Para cada punto/caso, tengo un campo llamado AÑO con intervalos de fechas de 2001 a 2012, según en qué año el caso que sucedió. Necesito un recuento columna para cada año. Por ejemplo, el primero voy a llamar a COUNT01. Si el caso se fecha en el AÑO 2001, luego COUNT01 tendrá un 1 en la misma. Si es cualquier otro año (2002-2012), entonces no se necesita ser un 0. Voy a tener COUNT02, COUNT03...COUNT12 columnas. No puede tener un valor "Nulo".

He aquí lo que he probado hasta ahora

enter image description here

Y esto es lo que los datos se ve como en el Arco.

enter image description here

43voto

Creo que esto es lo que quieres .... usando python se podría hacer lo siguiente (se asume que el AÑO y COUNT0X campos son enteros)

  • Cambiar a Python como se destaca a continuación
  • Agregue el código para el "Pre Lógica" cuadro de entrada
  • Cambiar el yearVal según sea necesario para cada campo calcular (Count01 haría uso de 2001, Count02 haría uso de 2002, etc)

Nota Python uso de sangría para analizar el código para garantizar el espacio es correcta.

def myCalc(year,yearVal):
  if (year == yearVal):
    return 1
  else:
    return 0

this

8voto

Colour Puntos 11

Esta respuesta es esencialmente el mismo como se describe arriba, sin embargo es una manera para no tener que utilizar el bloque de código... para el campo Count01, se establece el analizador en Python y a continuación establece el cálculo en

1 if !YEAR! == 2001 else 0

Lo que esto dice es: sistema el campo a 1 si el campo año es 2001, si no es de 2001, luego, configúrelo a 0...

6voto

John Kramlich Puntos 286

Si usted va a utilizar VBScript, a continuación, su campo de cálculo se creó el mal. En primer lugar yo no los uso una variable que es el nombre del campo, esto es confuso, utilice un nombre diferente para su cristal claro lo que se estaban estableciendo. Su "endif" estaba equivocado "end if" y el código debería haber sido en el pre-lógica de la sección de secuencia de comandos. La manera correcta de esta configuración se muestra a continuación. Pero como han dicho otros, trate de no usar VBScript como ESRI está empeñado en deshacerse de él en favor de Python.

Correct Field Calculator Usage

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