Básico If / Then en Python Parser of ArcGIS Field Calculator?

16

Estoy usando ArcGIS 10.2 for Desktop, he estado revisando este sitio y parece que todavía no puedo encontrar mi respuesta. Muy nuevo para VBA y Python, pero muchos años con ArcGIS. Sé que puedo hacerlo de manera lenta con Select By Attributes, pero consume mucho tiempo.

Estoy intentando una unión espacial entre los casos de una enfermedad (capa de puntos) y las secciones censales de EE. UU. (capa de polígono). Esto requiere datos de conteo. Para cada punto / caso, tengo un campo llamado AÑO con rangos de fechas de 2001 a 2012, según el año en que ocurrió el caso. Necesito una columna de conteo para cada año. Por ejemplo, el primero al que estoy llamando COUNT01. Si la fecha del caso en AÑO es 2001, entonces COUNT01 tendrá un 1 en ella. Si es cualquier otro año (2002-2012), entonces tendrá que haber un 0. Tendré COUNT02, COUNT03 ... COUNT12 columnas. No se puede tener un valor "Nulo".

Esto es lo que he intentado hasta ahora

YaquíescómosevenlosdatosenArc.

    
pregunta BenW 03.01.2014 - 00:28

3 respuestas

35

Creo que esto es lo que quieres ... usando python, podrías hacer lo siguiente (asume que los campos YEAR y COUNT0X son enteros)

  • Cambia a Python como se resalta a continuación
  • Agregue el código al cuadro de entrada "Pre lógica"
  • Cambie el valor del año según sea necesario para cada campo que calcular (Count01 usaría 2001, Count02 usaría 2002, etc.)

Tenga en cuenta que Python utiliza la sangría para analizar el código y asegurarse de que el espaciado sea correcto.

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

    
respondido por el dark fader 03.01.2014 - 06:45
7

Esta respuesta es esencialmente la misma que se indicó anteriormente, sin embargo, es una forma de no tener que usar el bloque de código ... para el campo Count01, debe configurar el analizador en Python y luego configurar su cálculo en

1 if !YEAR! == 2001 else 0

La forma en que se lee es: establece el campo en 1 si el campo AÑO es 2001, si no es 2001, configúralo en 0 ...

Si tiene múltiples condiciones, puede anidar la segunda (y las siguientes) condiciones "if" dentro de la instrucción else, como esta ...

1 if !YEAR! == 2001 else (2 if !YEAR! == 2002 else 0)

La forma en que se lee es: establece el campo en 1 si el campo AÑO es 2001, si no es 2001, luego configúralo en 2 si es 2002, si no, configúralo en 0 ...

    
respondido por el Jason Miller 14.05.2014 - 22:19
6

Si va a utilizar VBScript, el cálculo de su campo se configuró incorrectamente. En primer lugar, no usaría una variable que sea el nombre del campo, esto es confuso, use un nombre diferente para que quede claro lo que estaba configurando. Su "endif" estaba equivocado, debería estar "end if" y su código debería haber estado en la sección de script de pre-lógica. La forma correcta de configurar esto se muestra a continuación. Pero como han dicho los demás, trate de no usar VBScript, ya que ESRI está empeñado en deshacerse de él en favor de Python.

    
respondido por el Hornbydd 03.01.2014 - 14:35

Lea otras preguntas en las etiquetas