5 votos

arcpy. UpdateCursor para múltiples campos de

He golpeado una pared tratando de bucle a través de múltiples campos con arcpy.UpdateCursor. Tengo una lista de archivos (2) con varios campos (10-15 ish) que tienen su propia verificación de error en SQL, y un valor de error para ser escrito. Estoy deseando recorrer y actualización de cada campo con su valor programado.

    import arcpy
    FILE = 'X:\\SOME_FILE'
    FIELDS = [ "FIELD_X", "...", "FIELD_N"]
    SQL = "SOME_FIELD = SOME_VALUE" # or less than, greater, etc
    for FIELD in FIELDS:
        rows = arcpy.UpdateCursor(FILE, SQL, "", FIELD)
        row.FIELD = 'FIELD_ERROR_VALUE'
        rows.updateRow(row)
    del rows

Hay un poco más a él, pero el resumen es que la fila.CAMPO se lee como la fila.'NOMBRE_CAMPO', con NOMBRE_CAMPO como un valor de cadena. Soy bastante nuevo en la parte trasera de programación en Python y tengo tirado sólo para aprender. He trabajado a través de muchos temas, pero este me tiene perplejo. Si la fila.CAMPO de trabajo, sería más fácil que ir a través de cada campo con su NOMBRE, SQL, UPDATE_VALUE, etc manualmente. Funciona si escribo en la fila.WHATEVER_FIELD = ..., pero llamando a la variable (de cadena) agrega ' a ambos extremos como un valor de cadena. La única cosa que no trabajan en el bucle de la fila.CAMPO.

Estoy trabajando con python2.6, arc10.0, en su mayoría win7.

Cualquier ayuda sería muy apreciada.

GM

8voto

UnkwnTech Puntos 21942

Creo que es necesario utilizar row.setValue(FIELD)

1voto

dchanson Puntos 29

Creo que esto va a funcionar mejor:

    import arcpy
    FILE = 'X:\\SOME_FILE'
    FIELDS = [ "FIELD_X", "...", "FIELD_N"]
    rows = arcpy.UpdateCursor(FILE)
    for row in rows:
         for FIELD in FIELDS:
              row.setValue(FIELD, "FIELD_ERROR_VALUE")
              rows.updateRow(row)

Esto le permitirá recorrer la tabla 1 vez y la lista de campos varias veces.

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