Estoy usando ArcGIS 10.2 para escritorio, y he estado buscando en este sitio, y parece que todavía no puedo encontrar mi respuesta. Muy nuevo en VBA y Python, pero muchos años con ArcGIS. Sé que puedo hacerlo de manera lenta con Seleccionar por atributos, pero lleva mucho tiempo.
Estoy intentando una unión espacial entre los casos de una enfermedad (capa de puntos) y las secciones del censo 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, al primero al que llamo COUNT01. Si la fecha del caso en AÑO es 2001, entonces COUNT01 tendrá un 1. Si es cualquier otro año (2002-2012), entonces deberá haber un 0. Tendré COUNT02, COUNT03 ... COUNT12 columnas. No puede tener un valor "Nulo".
Esto es lo que he probado hasta ahora.
Y así es como se ven los datos en Arc.
vba
yvbscript
por unapython
etiqueta. Aunque aún no ha desaparecido, VBScript está en proceso de desaprobación . Espero que sea fácil de hacer con el analizador Python una vez que proporcione una descripción más detallada que incluya una imagen / tabla de algunas filas de muestra que muestren la entrada real y la salida esperada. ¿AÑO es un campo de fecha o un campo entero que contiene valores correspondientes a años?Respuestas:
Creo que esto es lo que quieres ... usando Python puedes hacer lo siguiente (asume que los campos AÑO y COUNT0X son enteros)
Tenga en cuenta que Python usa sangría para analizar el código, de modo que asegúrese de que el espaciado sea correcto.
fuente
if (int(year) == yearVal):
, u otras (consulte: informit.com/articles/article.aspx?p=459269&seqNum=7 ).Esta respuesta es esencialmente la misma que se enumeró anteriormente, sin embargo, es una forma de no tener que usar el bloque de código ... para el campo Count01, establecería el analizador en Python y luego establecería su cálculo en
La forma en que esto se lee es: establezca el campo en 1 si el campo AÑO es 2001, si no es 2001, luego configúrelo en 0 ...
Si tiene múltiples condiciones if, puede anidar las segundas (y posteriores) condiciones "if" dentro de la instrucción else, como esta ...
La forma en que esto se lee es: establezca el campo en 1 si el campo AÑO es 2001, si no es 2001, luego configúrelo en 2 si es 2002, si no, luego configúrelo en 0 ...
fuente
1 if !YEAR! == 2001 else (2 if !YEAR! == 2002 else (3 if !YEAR! == 2003 else 0))
Si va a utilizar VBScript, entonces su cálculo de 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 ser "end if" y su código debería haber estado en la sección de script 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 los ESRI están decididos a deshacerse de él en favor de Python.
fuente