Instrução

Anexar uma nova linha em uma tabela de atributos de feição a partir de um arquivo CSV existente utilizando Python no ArcGIS Pro

Last Published: May 8, 2025

Resumo

No ArcGIS Pro, o ArcGIS API for Python pode ser utilizado para automatizar o processo de atualização dos registros de dados de campo na tabela de atributos de uma classe de feição a partir de um arquivo CSV. Siga o fluxo de trabalho descrito neste artigo para atualizar a tabela de atributos de um arquivo CSV e adicionar novas linhas usando um arquivo Python independente (.py). O arquivo Python também é executado no Jupyter Notebook.

Procedimento

  1. Importe o módulo necessário.
import arcpy
  1. Especifique os parâmetros para o local do arquivo de classe de feição, o local do arquivo csv e os campos envolvidos.
fc = r"<featureClassPath>"
csv = r"<csvPath>"
copy_fields = ["<fieldName1>", "<fieldName2>", "<fieldName3>"]
  1. Crie um dicionário para armazenar os valores dos campos.
csv_dict = {row[0]: row for row in arcpy.da.SearchCursor(csv, copy_fields)}
  1. Itere pelas feições usando a função 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 a função InsertCursor() para inserir novos campos na classe de feição.
with arcpy.da.InsertCursor(fc, copy_fields) as cursor:
    for new_row in csv_dict.values():
        cursor.insertRow(new_row)
  1. Aplique a função print() para mostrar uma mensagem quando a tabela de atributos for atualizada.
print("<message>")

O bloco de código abaixo demonstra o funcionamento completo do script.

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 do Artigo: 000029321

Receba notificações e encontre soluções para problemas novos ou comuns

Obtenha respostas resumidas e soluções de vídeo do nosso novo chatbot de IA.

Baixe o Aplicativo de Suporte da Esri

Informações Relacionadas

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Baixe o Aplicativo de Suporte da Esri

Ir para as opções de download