8 votos

Problema con la función setValue() en ArcGIS 10

Estoy tratando de añadir datos a una tabla de atributos en ArcGIS 10 utilizando el siguiente código:

def make_floor_no( shapefile ):
    "Hace el encabezado para el número de pisos (FLO) y calcula el valor"

    fieldName = "FLO"
    try:
        ARCPY.AddField_management(shapefile, fieldName, "DOUBLE")
    except:
        print "Campo ya existente"  

    # loop a través de la tabla de atributos    
    Rows = ARCPY.SearchCursor( shapefile ) 

    for row in Rows:
        floors = round( row.getValue( 'HGT' ) / 3.0, 0)
        print str(floors)
        row.setValue( fieldName, floors )
        Rows.updateRow(row)            

Sin embargo, sigo recibiendo un error en la línea

row.setValue( fieldName, floors )

No logro identificar qué está mal en este código, y he intentado varias opciones. ¿Hay algo erróneo en mi sintaxis?

El mensaje de error es el siguiente:

 File "Z:\ConstructionMaterial.py", línea 100, en  make_floor_no( InputFile )
 File "Z:\ConstructionMaterial.py", línea 71, en make_floor_no 
    row.setValue( fieldName, floors )
 File "C:\Program Files (x86)\ArcGIS\Desktop10.0\arcpy\arcpy\arcobjects\arcobjects.py", línea 941, en setValue
    return convertArcObjectToPythonObject(self._arc_object.SetValue(*gp_fixargs(args)))
RuntimeError: ERROR 999999: Error ejecutando la función.

9voto

Michael Gorsuch Puntos 1760

Los cursores de búsqueda obtienen objetos de filas de solo lectura. Si deseas actualizar, necesitas utilizar el cursor de actualización.

Así que cambia esto

    Rows = ARCPY.SearchCursor( shapefile ) 

A esto

    Rows = ARCPY.UpdateCursor( shapefile )

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