操作方法
在 ArcGIS Pro 中,可以使用 ArcGIS API for Python 自动化更新要素类属性表字段数据记录的流程,并从 CSV 文件中导入数据。 按照本文中描述的工作流程,使用独立 Python 文件 (.py) 从 CSV 文件更新属性表,并添加新行。 Python 文件也在 Jupyter Notebook 中运行。
import arcpy
fc = r"<featureClassPath>" csv = r"<csvPath>" copy_fields = ["<fieldName1>", "<fieldName2>", "<fieldName3>"]
csv_dict = {row[0]: row for row in arcpy.da.SearchCursor(csv, copy_fields)}
with arcpy.da.UpdateCursor(fc, copy_fields) as cursor:
for row in cursor:
key = row[0]
try:
new_row = csv_dict[key]
except KeyError:
print(f"Entry not found in csv: {copy_fields[0]} = {key}")
continue
cursor.updateRow(new_row)
del csv_dict[key]
with arcpy.da.InsertCursor(fc, copy_fields) as cursor: for new_row in csv_dict.values(): cursor.insertRow(new_row)
print("<message>")
以下代码块演示了完整工作脚本。
fc = r"C:\Users\testUser\Documents\Article work\Article 29321\MyProject 29321\MyProject 29321.gdb\Schools_all"
csv = r"C:\Users\testUser\Documents\Article work\Article 29321\schoolLvl.csv"
copy_fields = ["NAME", "LEVEL_NO", "LEVEL"]
import arcpy
csv_dict = {row[0]: row for row in arcpy.da.SearchCursor(csv, copy_fields)}
with arcpy.da.UpdateCursor(fc, copy_fields) as cursor:
for row in cursor:
key = row[0]
try:
new_row = csv_dict[key]
except KeyError:
print(f"Entry not found in csv: {copy_fields[0]} = {key}")
continue
cursor.updateRow(new_row)
del csv_dict[key]
with arcpy.da.InsertCursor(fc, copy_fields) as cursor:
for new_row in csv_dict.values():
cursor.insertRow(new_row)
print("Complete")
文章 ID: 000029321
获取来自 ArcGIS 专家的帮助
立即开始聊天