CÓMO
En ArcGIS Pro, ArcGIS API for Python se puede utilizar para automatizar el proceso de actualización de los registros de datos de campo en la tabla de atributos de una clase de entidad desde un archivo CSV. Siga el flujo de trabajo descrito en este artículo para actualizar la tabla de atributos desde un archivo CSV y agregar nuevas filas con un archivo de Python independiente (.py). El archivo de Python también se ejecuta en 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>")
El siguiente bloque de código muestra el script completo.
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. de artículo: 000029321
Obtener ayuda de expertos en ArcGIS
Descargar la aplicación de soporte de Esri