2016-05-22 6 views
2

shapefileから列の値を変更して、新しい値で新しいフィールド/列を作成しようとしています。私たちはこれを達成するために検索と更新のカーソルを使って、forループとフィールド計算機を試してみました。 これを簡単な方法で達成する方法を知っている人はいますか?カーソルでフィールド内の値を変更しよう

は、ここで新しい列に

veg = "Cal_Veg.shp" 
field = ["WHRNAME"] 

therows=arcpy.UpdateCursor(veg, field) 

for therow in therows: 
    if (therow.getValue(field)==" "): 
     therow.setValue("Montane_Chaparral","Dry_Forest") 
    therows.updateRow(therow) 

print "Done." 

Dry_Forest」我々は新しい値に列に「Montane_Chaparal」と表示された項目のすべてを変換しようとする私たちのスクリプトのサンプルです私も試してみました:

veg = "Cal_Veg.shp" 
with arcpy.da.SearchCursor(veg,["WHRNAME","NewVeg"]) as SCursor: 
    for row in SCursor: 
     if row[0] == "Montane Chaparral": 
      with arcpy.da.InsertCursor(veg,["NewVeg"]) as ICursor: 
       for new_row in ICursor: 
        NewVeg = "Dry Forest" 
        ICursor.insertRow(new_row) 
print "done" 

答えて

0

を私は間違いなくあなたのSCRIのためのより近代的なdaUpdate Cursorをお勧めしますptはさまざまな理由からではなく、主に速度と効率の点で優れています。

ネストされたカーソルを誤って実行しているように見えますが、必要なのは1つの更新カーソルだけです。これを試して。

veg = "Cal_Veg.shp" 

with arcpy.da.UpdateCursor(veg,["WHRNAME","NewVeg"]) as cursor: 
    for row in cursor: 
     if row[0] == "Montane Chaparral": # row[0] references "WHRNAME" 
      row[1] = "Dry Forest"   # row[1] references "NewVeg" 
     cursor.updateRow(row) 

print "done" 
関連する問題