Suite

Comment le SIG détecte-t-il le champ à l'origine de l'erreur dans « ExecuteError : ERROR 001156 »

Comment le SIG détecte-t-il le champ à l'origine de l'erreur dans « ExecuteError : ERROR 001156 »


Je reçois toujours tous les types d'erreurs et j'aimerais savoir si je peux utiliser les informations contenues dans ces messages d'erreur générés par arcpy pour résoudre le problème et répéter l'étape où il s'est produit.

par exemple dans la fusion par lots :

layerList[shp1,shp2,shp3,shp4] arcpy.Merge_management(layerList,"C:Data	itle.shp")

et j'obtiens l'erreur suivante :

ExecuteError : ERREUR 001156 : Échec de l'OID d'entrée 0, impossible d'écrire la valeur « Kanata » dans le champ de sortie ErrorCuasingField Échec de l'exécution (Fusion).

Comment puis-je obtenir le ErrorCausingField dans mon script, afin que je puisse peut-être le supprimer avant de répéter le processus de fusion.

J'ai également une autre question portant spécifiquement sur ce problème : (Mapping de champs de fusion par lots).


J'ai ajouté un appel pour obtenir l'objet de traçabilité dans votre script précédent (mappage des champs de fusion par lots). J'ai ajouté un fichier de formes avec un champ "Acres" d'un caractère de large et j'ai obtenu ce message de traçabilité : ERREUR 001156 : Échec à l'entrée OID 0, impossible d'écrire la valeur "340.417" dans le champ de sortie Acres

Ma version de travail de votre script, configurée pour s'exécuter en veille, est ci-dessous.

importer arcpy, sys, os, traceback dataPath=r"C:workspaceweld countyparcels" try: DataTypeL=[("Polygon","mergedTOTPoly.shp"),("Polyline","mergedTOTLines.shp") ,("Point","MergedTOTPoint.shp")] pour dType dans DataTypeL : (Typei,Title)=dType matches = [] counter=0 pour dirpath, dirnames, filenames in arcpy.da.Walk(dataPath,datatype=" FeatureClass",type=Typei) : pour le nom de fichier dans les noms de fichiers : print filename match = ( os.path.join(dirpath, filename)) #arcpy.AddMessage(m) matches.append (match) counter = counter + 1 arcpy.Merge_management (correspond à, dataPath+"utilities"+Title) print counter print Typei #arcpy.AddMessage(counter+" "+Typei+" les calques ont été fusionnés dans "+ filename) sauf arcpy.ExecuteError: # Obtenez les messages d'erreur de l'outil # msgs = arcpy .GetMessages(2) # Renvoie les messages d'erreur de l'outil à utiliser avec un outil de script # arcpy.AddError(msgs) # Affiche les messages d'erreur de l'outil à utiliser dans Python/PythonWin # imprime les msgs sauf : # Obtenez l'objet de trace # tb = sys.exc_info ()[2] tbinfo = traceback.format_tb(tb)[0] # Concaténer les informations concernant l'erreur dans une chaîne de message # pymsg = "PYTHON ERRORS:
Traceback info:
" + tbinfo + "
Error Info:
" + str(sys.exc_info()[1]) msgs = "ArcPy ERRORS:
" + arcpy.GetMessages(2) + "
" # Renvoie les messages d'erreur python à utiliser dans l'outil de script ou la fenêtre Python # arcpy.AddError(pymsg) arcpy.AddError(msgs) # Affiche les messages d'erreur Python à utiliser dans Python / Python Window # print pymsg + "
" print msgs