5 votos

Si/entonces VBScript/código de Python equivalente a SQL EN ('x','y',z') expresión en ArcGIS Calculadora de Campo?

necesitamos como el siguiente, sólo con varios registros seleccionados... han probado el "xyz" en (1,2,3,4,5) código SQL pero, por supuesto, VB Script quiere algo más.

dim f2
if [field1] = "foo" then
  f2 = "bar"
end if

Captura de pantalla de este ser utilizado en el campo de la calculadora.

enter image description here

7voto

hernan43 Puntos 566

Si te gusta SQL, usted puede solicitar una Consulta de Definición:

IN('x','y','z')

a continuación, el proceso de su campo de resultados de la calculadora. Sólo los registros filtrados será modificado.


Si desea Python, que será similar a la de SQL:

if !field1! in ("x","y","z"):
    f2 = "field1 is yep"

[Añadido como solución] O como un 1-liner sin ningún tipo de procesamiento previo requerido:

'yes' if !field1! in ('x','y','z') else ''

3voto

mark Puntos 413

Parece que usted está tratando de condicionalmente calcular el valor del campo 2, basado en el valor de campo 1. usted podría hacer toda la operación en una secuencia de comandos de python usando una combinación de Mike sugerencia y una UpdateCursor algo como esto:

cursor = gp.UpdateCursor(yourfeatureclass)
row = cursor.Next()

while row:
     for row.GetValue("yoursourcefield") in ["foo", "bar", "snafu"]:
          row.YOURTARGETFIELD = "your target value"
     cursor.UpdateRow(row)
     row = cursor.Next()

de otra manera, utilizando sólo los pre-lógica y la calculadora, si es sólo un valor booleano comprobar, personalmente, me gustaría hacer la inversa de lo que Mike se sugiere:

if [field1] not in ["x","y","z"]:
     [field2] = "NO WAY JOSE"
else:
     [field2] = "shoot'em up cowboy"

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