Présentation des types de messages et de leur gravité

Pendant l'exécution d'un outil, des messages sont écrits qui peuvent être récupérés grâce à des fonctions de géotraitement, par exemple GetMessages. Ces messages comprennent les types d'information suivants :

  • le début et la fin de l'opération,
  • les valeurs de paramètre utilisées,
  • des informations générales sur la progression de l'opération (message d'information),
  • des avertissements relatifs à des problèmes potentiels (message d'avertissement),
  • des erreurs qui provoquent l'arrêt de l'exécution par l'outil (message d'erreur).

Toute la communication entre les outils et les utilisateurs s'effectue à l'aide de messages. Selon l'environnement d'exécution des outils, les messages apparaissent dans la fenêtre Résultat, la fenêtre Python et la boîte de dialogue de progression. A partir de Python, vous pouvez récupérer ces messages dans votre script, les interroger, les imprimer ou les écrire dans un fichier. Tous les messages possèdent une propriété de gravité, qui peut fournir une information, un avertissement ou signaler une erreur. La gravité est un nombre entier, avec 0 = information, 1 = avertissement et 2 = erreur.

GravitéDescription

Message d'information (gravité = 0)

Un message d'information donne des informations concernant l'exécution d'un outil. Il ne permet jamais d'indiquer des problèmes. Les messages d'information signalent uniquement des informations générales, telles que la progression d'un outil, l'heure de début ou de fin de l'exécution d'un outil, les caractéristiques des données en sortie ou les résultats de l'outil.

Message d'avertissement (gravité = 1)

Les messages d'avertissement sont générés lorsqu'un outil rencontre un problème d'exécution potentiel ou lorsque le résultat n'est pas conforme à ce que vous attendez. Par exemple, la définition d'un système de coordonnées pour un jeu de données comportant déjà un système de coordonnées défini génère un avertissement. Vous pouvez déclencher une action lorsqu'un avertissement est renvoyé, par exemple l'annulation de l'exécution de l'outil ou la sélection d'un autre paramètre.

Message d'erreur (gravité = 2)

Des messages d'erreur indiquent les éventuels événements critiques qui ont empêché l'exécution d'un outil. Des erreurs sont générées lorsqu'un ou plusieurs paramètres affichent des valeurs incorrectes, ou lorsqu'un processus d'exécution critique ou une routine a échoué.

Les messages d'avertissement et d'erreur sont accompagnés d'un code d'identification à six chiffres. Ces codes d'identification sont documentés pour fournir des informations supplémentaires sur leurs causes et la manière dont ils peuvent être gérés. Lorsque des codes d'erreur ou d'avertissement sont affichés dans la boîte de dialogue de l'outil ou de la progression, la fenêtre Python ou Résultat, ils contiennent un lien permettant d'accéder directement à une aide supplémentaire pour ce message.

Affichage de messages

Les messages du dernier outil exécuté sont conservés par ArcPy et peuvent être récupérés à l'aide de la fonction GetMessages. Cette méthode renvoie une chaîne unique contenant tous les messages du dernier outil exécuté. Les messages retournés peuvent être filtrés à l'aide de l'option de gravité pour isoler les messages ayant une certaine gravité. Lors de l'utilisation d'ArcPy, le premier message indique l'outil exécuté et le dernier message indique l'heure de fin et la durée d'exécution de l'outil. Le second et le dernier message d'un outil déterminent toujours respectivement l'heure de début et de fin de l'exécution de l'outil.

Obtention de messages de géotraitement
import arcpy
# Execute the GetCount tool
arcpy.GetCount_management("c:/base/data.gdb/roads") 
# Get the resulting messages and print them
print(arcpy.GetMessages())

Les messages individuels peuvent être récupérés à l'aide de la fonction GetMessage. Cette fonction dispose d'un paramètre correspondant à la position d'index du message. La fonction GetMessageCount retourne le nombre de messages du dernier outil exécuté. L'exemple ci-dessous indique comment afficher des informations sur l'outil exécuté, avec l'heure de fin et la durée d'exécution de l'outil.

import arcpy
arcpy.env.workspace = "D:/base/data.gdb"
arcpy.Clip_analysis("roads", "urban_area", "urban_roads")
# Print the first message
print(arcpy.GetMessage(0))
# Print the last message - ending and elapsed times for tool
print(arcpy.GetMessage(arcpy.GetMessageCount - 1))

Obtention de messages à partir d'un objet Result

Vous pouvez également accéder aux messages à partir d'un outil en utilisant un objet Result. Contrairement à l'obtention de messages à partir d'ArcPy, les messages sur un objet Result peuvent être conservés même après l'exécution de plusieurs outils. L'objet Result prend en charge les mêmes propriétés et méthodes utilisées pour obtenir et interpréter des messages issus d'un outil de géotraitement.

Propriétés et méthodes Result

Propriétés et méthodesExplication

inputCount

Retourne le nombre d'entrées.

outputCount

Retourne le nombre de sorties.

messageCount

Retourne le nombre de messages.

maxSeverity

Retourne la gravité maximale. La gravité retournée peut être 0 (pas d'erreur ni d'avertissement généré), 1 (avertissements générés) ou 2 (erreurs générées).

resultID

Retourne l'ID de résultat unique. Si l'outil n'est pas un service de géotraitement, resultID a la valeur "".

status

Retourne l'état de la tâche sur le serveur.

  • 0 - Nouvelle
  • 1 - Soumise
  • 2 - En attente
  • 3 - Exécution
  • 4 - Réussie
  • 5 - Echouée
  • 6 - Expirée
  • 7 - Annulation
  • 8 - Annulée
  • 9 - Suppression
  • 10 - Supprimée

cancel()

Annule la tâche sur le serveur.

getInput(index)

Renvoie une entrée donnée. S'il s'agit d'un objet de jeu d'enregistrements ou de données raster, un objet RecordSet ou RasterData est renvoyé.

getMapImageURL(ParameterList, Height, Width, Resolution)

Permet de recevoir l'image de service de carte pour une sortie donnée.

getMessage(index)

Retourne un message spécifique.

getMessages(severity)

Type de messages renvoyés : 0=message, 1=avertissement, 2=erreur. Si aucune valeur n'est spécifiée, tous les types de messages sont renvoyés.

getOutput(index)

Renvoie une sortie donnée. S'il s'agit d'un objet de jeu d'enregistrements ou de données raster, un objet RecordSet ou RasterData est renvoyé.

getSeverity(index)

Retourne la gravité d'un message spécifique.

Propriétés et méthodes Result

L'exemple suivant exécute deux outils de géotraitement mais attend l'exécution des outils avant d'examiner les messages.

import arcpy
arcpy.env.workspace = "D:/base/data.gdb"
# Execute the Clip and GetCount tools
clipResult = arcpy.Clip_analysis("roads", "urban_area", "urban_roads")
countResult = arcpy.GetCount_management("urban_roads")
# Get the resulting messages and print them
print(clipResult.getMessages())
print(countResult.getMessages())

Comme avec les outils de géotraitement, les messages des outils de serveur sont classés comme messages d'information, d'avertissement ou d'erreur. Un type de message est signalé par sa propriété de gravité, représentée par une valeur numérique. L'échantillon suivant indique comment obtenir les messages à partir d'un outil serveur une fois son exécution terminée.

import arcpy
import time
# Add the server toolbox
arcpy.ImportToolbox("http://lab13/arcgis/services;BufferByVal", "mytools")
featset = arcpy.FeatureSet()
featset.load("//flames/gpqa/coredata/global/redlands/control.shp")
# Run a server tool named BufferPoints
result = arcpy.BufferPoints_mytools(featset, "1000 feet")
# Wait until the tool completes
while result.status < 4:
    time.sleep(0.2)
# Print all messages from the result object
print(result.getMessages())