ArcGIS 10のsetValue()関数の問題


8

次のコードを使用して、ArcGIS 10の属性テーブルにデータを追加しようとしています。

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)            

しかし、私は線に沿ってエラーが発生し続けます

row.setValue( fieldName, floors )

私はこれで何か問題を見つけることができず、いくつかの異なるオプションを試しました。構文に問題がありますか?

エラーメッセージは次のとおりです。

 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.

回答:


9

検索カーソルを使用すると、読み取り専用の行オブジェクトを取得できます。更新する場合は、更新カーソルを使用する必要があります。

だからこれを変えて

    Rows = ARCPY.SearchCursor( shapefile ) 

これに

    Rows = ARCPY.UpdateCursor( shapefile ) 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.