Suite

Boucle dans les colonnes Python arcpy.ListFields


J'essaie d'exécuter un script Python qui parcourt tous les champs de ma table attributaire d'entités en entrée. J'ai fait de nombreuses recherches et essayé d'utiliser arcpy.ListField pour fonctionner, mais il semble que tout le monde soit bloqué sur le même problème : nous ne pouvons pas obtenir les colonnes que nous essayons de boucler pour fonctionner comme champ de saisie.

Voici mon script :

import arcpy arcpy.env.workspace = "C:UsersjacobyanDesktopJACOB" fieldList = arcpy.ListFields("BG_SAR1.shp") try: #Appelez tous les champs de la liste pour le champ dans fieldList : outputname = str( field.name) + ".shp" print outputname arcpy.ClustersOutliers_stats("BG_SAR1.shp", "field", outputname, "GET_SPATIAL_WEIGHTS_FROM_FILE","EUCLIDEAN_DISTANCE", "ROW", "#", "SpatialWeights.swm"," NO_FDR") sauf : print arcpy.GetMessages()

Le résultat que j'ai obtenu est :

FID.shp Exécution : Champs ClustersOutliers C:UsersjacobyanDesktopJACOBBG_SAR1.shp C:UsersjacobyanDesktopJACOBFID.shp GET_SPATIAL_WEIGHTS_FROM_FILE EUCLIDEAN_DISTANCE ROWjacobyanUsersDesk SpatialWeights.swm NO_FDR Heure de début : Mer 29 juillet 14:45:56 2015 Échec de l'exécution. Les paramètres ne sont pas valides. ERREUR 000728 : Le champ de champ n'existe pas dans la table Échec de l'exécution (ClustersOutliers). Échec le mercredi 29 juillet 14:45:56 2015 (Temps écoulé : 0,03 seconde)

J'ajuste "field" à "field.name" et essaie de le remplacer par FieldList[count], mais aucun de ceux-ci n'a fonctionné.

Voici deux articles connexes que j'ai consultés : Itérer dans les colonnes d'un tableau à l'aide de ModelBuilder ?

https://geonet.esri.com/thread/56324


Comment vous l'avez maintenant, vous allez exécuter l'outil en utilisant les champs FID et SHAPE. Vous devez limiter vos champs à ceux que vous souhaitez réellement utiliser comme entrée. Aussi, lorsque vous utilisezdomaineen tant qu'entrée dans l'outil, il s'agit en fait de l'objet champ. Vous devez utilisernom de domaineau lieu.

import arcpy #devrait utiliser deux barres obliques inverses dans le chemin du fichier arcpy.env.workspace = "C:UsersjacobyanDesktopJACOB" fieldList = arcpy.ListFields("BG_SAR1.shp") pour le champ dans fieldList : essayez : #cela supprimera FID et SHAPE sinon field.required : field_name = str(field.name) output_name = field_name + ".shp" arcpy.ClustersOutliers_stats("BG_SAR1.shp", field_name, output_name, "GET_SPATIAL_WEIGHTS_FROM_FILE","EUCLIDEAN_DISTANCE ", "ROW", "#", "SpatialWeights.swm","NO_FDR") sauf : print arcpy.GetMessages()

Une autre méthode consiste simplement à remplacer :

fieldList = arcpy.ListFields("BG_SAR1.shp")

avec:

fieldList = ["VotreChamp1", "VotreChamp2", "VotreChamp3"]

et remplacez "YourField" par les champs que vous souhaitez utiliser comme entrée.


Voir la vidéo: 1 - Intro - ArcGIS Pro Scripting with Python and Arcpy (Octobre 2021).