Я борюсь с некоторым кодом, который пишу для обновления класса объектов базы геоданных, называемого "Grabs_WCVI". У меня есть новое поле с именем «SubModCat», которое я хочу заполнить системой ранжирования, используя оператор if elif else, основанный на значениях в существующем поле с именем «BType». Значения для BType могут варьироваться от 1 / 1a / 1b / 2 / 2a / 2b / 3 / 3a / 3b. Я раньше не использовал кодовые блоки и обнаружил, что IDE принимает мои локальные переменные, но после этого не будет запускать мою функцию CalculateField, поэтому там должна быть ошибка ...
Вот мой пока код:
# Set environment settings
arcpy.env.workspace = "C:\Users\gillespiek\Grabs_DataCleaning\All_BoP_Grabs_only.gdb"
# Set local variables
inTable = "Grabs_WCVI"
fieldName = "SubModCat"
expression = "newValue(!Btype!)"
codeblock = """def newValue(field):
val1 = [‘1’, ‘1a’, ‘1b’]
val2 = [‘2’, ‘2a’, ‘2b’]
if field in val1:
return 1
elif field in val2:
return 2
elif field == ‘3a’:
return 3
elif field == ‘3b’:
return 4
else:
return 0"""
# Execute CalculateField
arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON_9.3",
codeblock)
Кто-нибудь может увидеть, куда я сбился с пути? Любой совет с благодарностью: