HOW TO

Anhängen einer neuen Zeile an eine Feature-Attribut-Tabelle aus einer vorhandenen CSV-Datei mit Python in ArcGIS Pro

Last Published: May 8, 2025

Zusammenfassung

In ArcGIS Pro kann ArcGIS API for Python zum Automatisieren der Aktualisierung von Felddatensätzen in der Attributtabelle einer Feature-Class aus einer CSV-Datei verwendet werden. Führen Sie den in diesem Artikel beschriebenen Workflow aus, um die Attributtabelle aus einer CSV-Datei zu aktualisieren und neue Zeilen mithilfe einer eigenständigen Python-Datei (.py) hinzuzufügen. Die Python-Datei kann auch in Jupyter Notebook ausgeführt werden.

Vorgehensweise

  1. Importieren Sie das erforderliche Modul.
import arcpy
  1. Geben Sie die Parameter für den Speicherort der Feature-Class-Datei, den Speicherort der CSV-Datei und die beteiligten Felder an.
fc = r"<featureClassPath>"
csv = r"<csvPath>"
copy_fields = ["<fieldName1>", "<fieldName2>", "<fieldName3>"]
  1. Erstellen Sie ein Wörterbuch, um die Werte für die Felder zu speichern.
csv_dict = {row[0]: row for row in arcpy.da.SearchCursor(csv, copy_fields)}
  1. Durchlaufen Sie die Features mit der Funktion 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. Wenden Sie die Funktion "InsertCursor()" an, um neue Felder in die Feature-Class einzufügen.
with arcpy.da.InsertCursor(fc, copy_fields) as cursor:
    for new_row in csv_dict.values():
        cursor.insertRow(new_row)
  1. Wenden Sie die Funktion "print()" an, um eine Meldung anzuzeigen, wenn die Attributtabelle aktualisiert wurde.
print("<message>")

Mit dem folgenden Code-Block wird das voll funktionsfähige Skript demonstriert.

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")

Artikel-ID: 000029321

Holen Sie sich Unterstützung mit KI

Lösen Sie Ihr Problem schnell mit dem Esri Support AI Chatbot.

Beginnen Sie jetzt mit dem Chatten

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Beginnen Sie jetzt mit dem Chatten

Zu Download-Optionen wechseln