Использование ArcDesktop 10.1 & Python 2.7: Я работаю над кодом, который ищет значения в пределах 13 полей и, основываясь на том, что он находит в этих 13 полях, объединяет строку и помещает приведет к существующему (пустому) полю.Неисправность с помощью UpdateCursor при установке значения
Он использует поисковый курсор для поиска по 13 полям. Затем использует результат этого в курсоре обновления для конкатенации строки.
У меня возникли проблемы с получением результата в поле, используя setValue - Line 40 кода ниже @ urow.setValue (комментарииField, easementType). Сообщение об ошибке очень бесполезно (RuntimeError: ERROR 999999: Ошибка при выполнении функции.)
Я не уверен, как правильно получить значение, заданное в нужном поле. Любая помощь будет принята с благодарностью!
import arcpy, os, math
from itertools import izip
arcpy.env.workspace = "C:\\Users\\mdelgado\\Desktop\\WorkinDog.gdb"
#These are my variables
fc = "EASEMENTS"
commentsField = "Comments"
typeFields = ["ABANDONED", "ACCESS", "AERIAL", "BLANKET", "COMM", "DRAIN", "ELEC", "GEN_UTIL", "LANDSCAPE", "PARKING", "PIPELINE", "SAN_SEWR", "SIDEWALK", "SPECIAL", "STM_SEWR", "WATER"]
fieldNames = ["ABANDONED", "ACCESS", "AERIAL", "BLANKET", "COMMUNICATION", "DRAINAGE", "ELECTRIC", "GENERAL UTILITY", "LANDSCAPE", "PARKING", "PIPELINE", "SANITATION SEWER", "SIDEWALK", "SPECIAL", "STORM SEWER", "WATER"]
fieldValues = []
easementType = ""
#This is my search cursor
scursor = arcpy.SearchCursor(fc)
srow = scursor.next()
for field in typeFields:
srowValue = (srow.getValue(field))
fieldValues.append(srowValue)
srow = scursor.next()
print fieldValues
#This is my update cursor
ucursor = arcpy.UpdateCursor(fc)
for urow in ucursor:
#This is where I begin the loop to concatenate the comment field
for (value, name) in izip(fieldValues, fieldNames):
print str(value) + " " + name
#This is where I check each field to find out which types the easement is
if value == 1:
easementType = easementType + name + ", "
#This is where I format the final concatenated string
easementType = easementType[:-2]
print easementType
#This is where the field is updated with the final string using the cursor
urow.setValue(commentsField, easementType)
ucursor.updateRow(urow)
urow = cursor.next()
del urow
del ucursor
del srow
del scursor
выполнить ли это правильно для некоторых строк, а затем перерыв? Вы проверили, что длина поля «Комментарии» достаточно, чтобы разместить максимально длинный конкатенированный 'easementType'? – Erica
Отличное предложение! Изучая это, я обнаружил, что ссылаюсь на псевдоним поля, а не на фактическое имя поля. Это решило одну проблему. –