Agregue valor en el campo de atributo usando arcpy

8

Necesito agregar valores a un campo existente en la tabla de atributos. Los valores se determinarán mediante valores en otro campo en la misma tabla de atributos. No puedo definir los valores en otro campo en el script. ¿Puede alguien ayudarme con eso?

poshan
fuente

Respuestas:

8

No he usado cursores Arc 10.1, pero aparentemente es aún más fácil allí.

En 10.0, hay algunas maneras de hacerlo, pero aquí hay un enfoque básico para principiantes:

# Create a cursor on a feature class
cur = arcpy.UpdateCursor(myFeatureClass)

# Loop through the rows in the attribute table
for row in cur:
    # The variable sqMiles will get the value from the column
    # named 'Area_Miles'
    sqMiles = row.getValue('Area_Miles')
    # Calculate how many acres
    acres = (sqMiles * 640)
    # Assign the acres to a column named 'Area_Acres'
    row.setValue('Area_Acres', acres)
    # Apply the change
    cur.updateRow(row)

    # The loop will then move on to the next row/feature

Una versión más simple y condensada:

cur = arcpy.UpdateCursor(myFeatureClass)

for row in cur:
    row.setValue('Area_Acres', row.getValue('Area_Miles') * 640)
    cur.updateRow(row)

Ver: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v0000003m000000

Tom
fuente
55
Tom, vuelve a escribir TODOS los "archivos de ayuda" de ESRI utilizando el método que utilizaste en esta respuesta. Entonces más personas entenderán, y el mundo será un lugar más feliz.
Jason Miller
2
Tom, por favor sigue los consejos de @JasonMiller. Y muchas gracias por solucionar esto para nosotros. Me consideraba analfabeto, pero ahora no más.
FaCoffee
2

Bueno, hay algunas maneras en que puedes hacer esto.

  1. Si el cálculo es bastante simple, usaría la herramienta Calcular campo . Si necesita usar el parámetro code_block, iría con la opción # 2, ya que no siempre es fácil obtener la sintaxis correcta en un script (o en la herramienta en sí).

  2. Si está interesado en crear más secuencias de comandos en el futuro, le recomiendo encarecidamente utilizar cursores . Puede escribir los valores de un campo en una lista de Python y realizar sus cálculos en cada elemento de la lista con un bucle for y luego volver a escribir la lista en su nuevo campo.

Raramente uso Calcular campo ya que es más fácil escribir cursores para todas las fórmulas, excepto las más simples.

Pablo
fuente