CÓMO

Incorporar una nueva fila en una tabla de atributos de entidad desde un archivo CSV existente utilizando Python en ArcGIS Pro

Last Published: May 8, 2025

Resumen

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.

Procedimiento

  1. Importe el módulo necesario.
import arcpy
  1. Especifique los parámetros para la ubicación del archivo de clase de entidad, la ubicación del archivo csv y los campos implicados.
fc = r"<featureClassPath>"
csv = r"<csvPath>"
copy_fields = ["<fieldName1>", "<fieldName2>", "<fieldName3>"]
  1. Cree un diccionario para almacenar los valores de los campos.
csv_dict = {row[0]: row for row in arcpy.da.SearchCursor(csv, copy_fields)}
  1. Recorra en iteración las entidades mediante la función UpdateCursor().
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]
  1. Aplique la función InsertCursor() para insertar cualquier campo nuevo en la clase de entidad.
with arcpy.da.InsertCursor(fc, copy_fields) as cursor:
    for new_row in csv_dict.values():
        cursor.insertRow(new_row)
  1. Aplique la función print() para mostrar un mensaje cuando se actualice la tabla de atributos.
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

Obtenga soporte con IA

Resuelva su problema rápidamente con el chatbot de inteligencia artificial de soporte de Esri.

Empieza a chatear ahora

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Empieza a chatear ahora

Ir a opciones de descarga