メッセージのタイプおよび重要度の概要
ツールの実行中にはメッセージが書き込まれ、これらのメッセージは GetMessages() などのジオプロセシング関数を使用して取得できます。これらのメッセージには、次のような情報が含まれています。
- 操作の開始時刻と終了時刻
- 使用されたパラメータ値
- 操作の進行状況に関する一般情報(情報メッセージ)
- 潜在的な問題に関する警告(警告メッセージ)
- ツールの実行を停止させるエラー(エラー メッセージ)
ツールとユーザの間でのやり取りは、すべてメッセージによって行われます。ツールを実行している環境に応じて、メッセージは [結果] ウィンドウ、Python ウィンドウ、および進行状況ダイアログ ボックスに表示されます。Python では、これらのメッセージをスクリプトに取り込んだり、照会を行ったり、出力したり、ファイルに書き込んだりすることができます。すべてのメッセージに重要度のプロパティがあり、これは情報、警告、またはエラーのいずれかです。重要度は整数であり、0 = 情報、1 = 警告、2 = エラーです。
重要度 | |
---|---|
情報メッセージ(重要度 = 0) |
情報メッセージは、その名のとおり、実行に関する情報です。問題を示すために使用されることはありません。ツールの進行状況、ツールが開始または完了した時刻、出力データの特性、ツールの結果など、一般的な情報のみが情報メッセージには示されます。 |
警告メッセージ(重要度 = 1) |
警告メッセージは、ツールの実行中に問題につながりかねない状況が発生した場合、または結果がユーザの期待するものとは異なる可能性がある場合に生成されます。たとえば、警告が生成されるのは、すでに座標系が定義されているデータセットで座標系を定義しようとした場合です。警告が返された場合、ツールの実行をキャンセルする、別のパラメータを指定するといったアクションを選択することができます。 |
エラー メッセージ(重要度 = 2) |
エラー メッセージは、ツールの実行を妨げた重大なイベントを示します。1 つ以上のパラメータの値が無効であったり、重要な実行プロセスまたはルーチンが失敗した場合にエラーが発生します。 |
警告メッセージとエラー メッセージの両方に、6 桁の ID コードが付いています。これらの ID コードは文書化されており、その原因と対処法についての追加情報が提供されます。エラーまたは警告のコードが、ツールまたは進行状況のダイアログ ボックス、Python ウィンドウ、または [結果] ウィンドウに表示されているときに、これらのコードのリンクをクリックすると、そのメッセージの詳細なヘルプに直接進むことができます。
メッセージの取得
最後に実行されたツールからのメッセージは ArcPy によって保持されており、GetMessages 関数を使用して取得できます。この関数は、最後に実行されたツールからのメッセージをすべて含む単一の文字列を返します。重要度オプションを使用して、返されたメッセージをフィルタに掛けることにより、指定した重要度のメッセージだけを取得することができます。ArcPy の使用時には、最初のメッセージは実行されたツールを示し、最後のメッセージはツールの実行の終了時刻と経過時間を示します。ツールの 2 番目のメッセージと最後のメッセージは常に、ツールの実行の開始時刻と終了時刻をそれぞれ示します。
ジオプロセシング メッセージの取得
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)
個々のメッセージは、GetMessage 関数を使用して取得できます。この関数のパラメータは 1 つで、メッセージのインデックス位置を指定します。GetMessageCount 関数は、最後に実行されたツールからのメッセージの数を返します。次の例では、実行されたツールに関する情報と、ツールの終了時刻および経過時間を出力する方法を示します。
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)
Result オブジェクトからのメッセージの取得
Result オブジェクトを使用して、ツールからメッセージにアクセスすることもできます。ArcPy からメッセージを取得する場合とは異なり、Result オブジェクトに格納されたメッセージは複数のツールを実行した後でも維持できます。Result オブジェクトは、ジオプロセシング ツールのメッセージの取得と解釈に使用されるものと同じ関数をいくつかサポートします。
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. |
次のサンプルでは、ジオプロセシング ツールを 2 つ実行しますが、メッセージを評価する前にツールが実行されるまで待ちます。
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()
ジオプロセシング ツールの場合と同様に、サーバ ツール メッセージは情報、警告、またはエラーに分類されます。メッセージの種類は、数値で表される重要度プロパティによって示されます。次のサンプルでは、サーバ ツールの完了後にそのツールからのメッセージを取得する方法を示します。
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()