我有一个需要更新的要素类,将其命名为big_file,它有一个字段名称' ID_old'我们将用它来进行查询。另一个字段是Sum_value',需要填写 另一个文件的字段值的总和。
所以我有一个包含许多要素类的列表(名为list_file),将每个要素类命名为small_file。每个文件的名称已经包含我们需要找到的ID(名称' ID')。每个文件都有一个名为' field_value'的字段。 ' ID'不是字段,只是要素类的名称。
请注意' ID_old'和' ID'具有不同的格式,因为ID不包含' '或者'。',例如:
ID_old : New York, St. Louis corresponds to
ID: New_York, St_Louis
现在需要: 使用每行small_file的field_value和填充big_file的Sum_value字段,每个small_file具有每行的对应ID。
例如。一行big_file的ID为' New York',所以在list_file中有一个名称包含' New_York'的文件, 在我们找到该文件后,比如说sth_New_York_file,我们将获得字段' field_value'的总和。并有结果。然后 返回big_file并用结果填充行的字段Sum_value(ID为' New York')。
换句话说,我正在尝试使用原始文件中的行ID进行查询,在列表中查找对应的要素类, 要素类获取我想要的字段的总和,并使用原始文件中的总和更新每一行。
有线索吗?我想我需要使用UpdateCursor,但不知道如何查询和获取值。
答案 0 :(得分:0)
代码如下:
for file in list_file:
outStat="path_for_sum_output"
arcpy.Statistics_analysis(file,outStat, [["field_value", "SUM"]])
rowsStat = arcpy.SearchCursor(outStat)
for row in rowsStat:
sum=row.getValue('Sum_field_value')
#formate name of file so the format match with field ID_old of the feature class
namelist=file.split('_')
myname=' '.join(namelist)
print myname
fc='big_file'
cursor=arcpy.da.UpdateCursor(fc,['Sum_value'], "ID_old = '" +myname+ "'")
for row in cursor:
row[0]= sum
cursor.updateRow(row)
print row
这解决了大部分问题,除了big_file中的记录,ID_old以' St。'开头 - 这些记录需要手动填写