PROCÉDURE

ajouter une nouvelle ligne dans une table attributaire d’entités à partir d’un fichier CSV existant à l’aide de Python dans ArcGIS Pro

Last Published: May 8, 2025

Résumé

Dans ArcGIS Pro, ArcGIS API for Python peut être utilisé pour automatiser le processus de mise à jour des enregistrements de données de champs dans la table attributaire d’une classe d’entités à partir d’un fichier CSV. Suivez le processus décrit dans cet article pour mettre à jour la table attributaire à partir d’un fichier CSV et ajouter de nouvelles lignes à l’aide d’un fichier Python autonome (.py). Le fichier Python s’exécute également dans Jupyter Notebook.

Procédure

  1. Importez le module nécessaire.
import arcpy
  1. Spécifiez les paramètres relatifs à l’emplacement du fichier de classe d’entités et du fichier CSV et les champs concernés.
fc = r"<featureClassPath>"
csv = r"<csvPath>"
copy_fields = ["<fieldName1>", "<fieldName2>", "<fieldName3>"]
  1. Créez un dictionnaire pour stocker les valeurs des champs.
csv_dict = {row[0]: row for row in arcpy.da.SearchCursor(csv, copy_fields)}
  1. Procédez à l’itération au sein des entités à l’aide de la fonction 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. Appliquez la fonction InsertCursor() pour insérer de nouveaux champs dans la classe d’entités.
with arcpy.da.InsertCursor(fc, copy_fields) as cursor:
    for new_row in csv_dict.values():
        cursor.insertRow(new_row)
  1. Appliquez la fonction print() pour afficher un message lorsque la table attributaire est mise à jour.
print("<message>")

Le bloc de code ci-dessous illustre le script opérationnel complet.

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 d’article: 000029321

Recevoir des notifications et trouver des solutions liées à de nouvelles questions ou à des problèmes connus

Recevez des réponses synthétisées et des solutions en vidéo de notre nouvel agent conversationnel (IA).

Télécharger l’application Esri Support

Informations associées

En savoir plus sur ce sujet

Obtenir de l’aide auprès des experts ArcGIS

Contacter le support technique

Télécharger l’application Esri Support

Accéder aux options de téléchargement