Попытка изменить значения в поле с курсором

Мы пытаемся изменить значения в столбце из 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"
Другие вопросы по тегам