メッセージのタイプおよび重要度の概要

ツールの実行中にはメッセージが書き込まれ、これらのメッセージは 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 オブジェクトは、ジオプロセシング ツールのメッセージの取得と解釈に使用されるものと同じ関数をいくつかサポートします。

結果のプロパティとメソッド

プロパティとメソッド

説明

inputCount

入力の数を返します。

outputCount

出力数を返します。

messageCount

メッセージ数を返します。

maxSeverity

最大の重要度を返します。返される重要度は、0(エラー/警告なし)、1(警告が発生)、または 2(エラーが発生)です。

resultID

一意の結果 ID を返します。ツールがジオプロセシング サービスでない場合、resultID は "" になります。

status

サーバ上のジョブのステータスを返します。

  • 0: 新規
  • 1: 送信済み
  • 2: 待ち状態
  • 3: 実行中
  • 4: 完了
  • 5: 失敗
  • 6: タイムアウト
  • 7: キャンセル中
  • 8: キャンセル済み
  • 9: 削除中
  • 10: 削除済み

cancel()

サーバ上のジョブをキャンセルします。

getInput(index)

指定された入力を返します。レコード セットまたはラスタ データ オブジェクトの場合、RecordSet または RasterData オブジェクトが返されます。

getMapImageURL(ParameterList, Height, Width, Resolution)

指定された出力に対するマップ サービス イメージを取得します。

getMessage(index)

特定のメッセージを返します。

getMessages(severity)

返されるメッセージのタイプ。0 はメッセージ、1 は警告、2 はエラーです。値を指定しない場合は、すべてのメッセージ タイプが返されます。

getOutput(index)

指定された出力を返します。レコード セットまたはラスタ データ オブジェクトの場合、RecordSet または RasterData オブジェクトが返されます。

getSeverity(index)

特定のメッセージの重要度を返します。

結果のプロパティとメソッド

次のサンプルでは、ジオプロセシング ツールを 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()

関連トピック

9/14/2013