Sự cố với hàm setValue () trong ArcGIS 10


8

Tôi đang cố gắng thêm dữ liệu vào bảng thuộc tính trong ArcGIS 10 bằng mã sau:

def make_floor_no( shapefile ):
    "Makes header for number of Floors (FLO) and calculates value"

    fieldName = "FLO"
    try:
        ARCPY.AddField_management(shapefile, fieldName, "DOUBLE")
    except:
        print "Field already there"  

    # loop through attribute table    
    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)            

Tuy nhiên, tôi liên tục gặp lỗi

row.setValue( fieldName, floors )

Tôi không thể phát hiện ra bất cứ điều gì sai với điều này, và đã thử một vài lựa chọn khác nhau. Có cái gì đó sai với cú pháp của tôi?

Thông báo lỗi như sau:

 File "Z:\ConstructionMaterial.py", line 100, in <module> make_floor_no( InputFile )
 File "Z:\ConstructionMaterial.py", line 71, in make_floor_no 
    row.setValue( fieldName, floors )
 File "C:\Program Files (x86)\ArcGIS\Desktop10.0\arcpy\arcpy\arcobjects\arcobjects.py", line 941, in setValue
    return convertArcObjectToPythonObject(self._arc_object.SetValue(*gp_fixargs(args)))
RuntimeError: ERROR 999999: Error executing function.

Câu trả lời:


9

Con trỏ tìm kiếm giúp bạn có các đối tượng hàng chỉ đọc. nếu bạn muốn cập nhật, bạn cần sử dụng con trỏ cập nhật.

Vì vậy, thay đổi điều này

    Rows = ARCPY.SearchCursor( shapefile ) 

Để điều này

    Rows = ARCPY.UpdateCursor( shapefile ) 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.