Попытка изменить значения в поле с курсором
Мы пытаемся изменить значения в столбце из shapefile
создать новое поле / столбец с новыми значениями. Для этого мы попытались использовать курсор поиска и обновления, а также цикл for и калькулятор полей. У кого-нибудь есть идеи о том, как сделать это в упрощенном виде?
Вот пример нашего скрипта, в котором мы пытаемся преобразовать все элементы, помеченные "Montane_Chaparal" в столбце, в новое значение "Dry_Forest" в новом столбце.
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."
Я также попробовал:
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"
1 ответ
Я определенно рекомендовал бы более современный da
Обновите Cursor для своего скрипта по разным причинам, но в основном для скорости и эффективности.
Похоже, что вы неправильно запускаете вложенный курсор, где все, что вам нужно, это один курсор обновления. Попробуй это.
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"