pythoninarcmap,如何使用行ID查询并从另一个要素类中查找字段值

2024-04-24 06:20:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个需要更新的要素类,将其命名为big_file,它有一个字段名'ID'u 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

现在需要: 在big_file的Sum_value字段中填充每行具有对应ID的每个小_文件的字段_value Sum。在

例如,一行big_file的ID是'New York',因此在list_file中有一个名为'New_York'的文件, 在我们找到那个文件之后,比如说sth_New_York_file,我们将得到字段“field_value”的和并得到一个结果。然后 回到big_文件,用结果填充thw row的Sum_value字段(ID是'New York')。在

换句话说,我试图使用原始文件中的行的ID进行查询,在列表中查找对应的要素类 要素类获取我想要的字段的总和,并使用原始文件中的总和更新每一行。在

有什么线索吗?我想我需要使用UpdateCursor,但不知道如何查询和获取值。在


Tags: 文件名称idfield列表newvalue命名
1条回答
网友
1楼 · 发布于 2024-04-24 06:20:30

代码如下:

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

这解决了大部分问题,除了大文件中ID为“St”的记录需要手动填充

相关问题 更多 >