python-in-arcmap,如何使用行ID进行查询并查找其他要素类的字段值

时间:2014-10-22 17:22:44

标签: python field arcmap

我有一个需要更新的要素类,将其命名为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,但不知道如何查询和获取值。

1 个答案:

答案 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。'开头 - 这些记录需要手动填写