Présentation des types de messages et de leur gravité
Pendant l'exécution d'un outil, des messages sont écrits qui peuvent être extraits à l'aide des fonctions de géotraitement telles que 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ésultats, 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é | |
---|---|
Message d'information (gravité = 0) |
Un message d'information donne simplement des informations concernant l'exécution. 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 la fenêtre 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()
# The returned messages would look similar to the following:
# Executing: GetCount c:/base/data.gdb/roads
# Start Time: Wed Apr 07 11:28:21 2010
# Row Count = 373
# Succeeded at Wed April 07 11:28:21 2010 (Elapsed Time: 0.00 seconds)
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é, ainsi que 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 - tool executed
#
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.
Properties and methods |
Explanation |
---|---|
inputCount | Returns the number of inputs. |
outputCount |
Returns the number of outputs. |
messageCount |
Returns the number of messages. |
maxSeverity |
Returns the maximum severity. The returned severity can be 0 (no errors/warnings raised), 1 (warnings raised), or 2 (errors raised). |
resultID |
Returns the unique result ID. If the tool is not a geoprocessing service, the resultID will be "". |
status |
Returns the status of the job on the server.
|
cancel() |
Cancels the job on the server. |
getInput(index) |
Returns a given input. If a record set or raster data object, a RecordSet or RasterData object is returned. |
getMapImageURL(ParameterList, Height, Width, Resolution) |
Get map service image for a given output. |
getMessage(index) |
Returns a specific message. |
getMessages(severity) |
The type of messages to be returned: 0=message, 1=warning, 2=error. Not specifying a value returns all message types. |
getOutput(index) |
Returns a given output. If a record set or raster data object, a RecordSet or RasterData object is returned. |
getSeverity(index) |
Returns the severity of a specific message. |
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 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()