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

Benachrichtigungen erhalten und Lösungen für neue oder häufige Probleme finden

Unser neuer KI-Chatbot stellt zusammengefasste Antworten und Videolösungen für Sie bereit.

Esri Support App herunterladen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Esri Support App herunterladen

Zu Download-Optionen wechseln