Попытка использовать CalculateField в Python IDE для заполнения нового поля в базе геоданных на основе значений в существующем поле - PullRequest
0 голосов
/ 30 января 2020

Я борюсь с некоторым кодом, который пишу для обновления класса объектов базы геоданных, называемого "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)

Кто-нибудь может увидеть, куда я сбился с пути? Любой совет с благодарностью:

...