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

Recibir notificaciones y encontrar soluciones a problemas nuevos o comunes

Obtenga respuestas resumidas y soluciones de vídeo de nuestro nuevo chatbot de IA.

Descargar la aplicación de soporte de Esri

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Descargar la aplicación de soporte de Esri

Ir a opciones de descarga