スクリプト ツールのパラメータの理解
ほぼすべてのツールにはパラメータがあり、そのパラメータ値はツール ダイアログ ボックスまたはスクリプト内で設定します。ツールを実行すると、パラメータ値がスクリプトに送られます。スクリプトはその値を読み込んで、処理を続けます。
下の図は、スクリプト ツールのダイアログ ボックスと、3 つのパラメータ([入力ワークスペース]、[クリップ フィーチャクラス]、および [出力ワークスペース])を示しています。入力ワークスペース内のすべてのフィーチャクラスは、クリップ フィーチャクラスにクリップされ([クリップ(Clip)] ツールを使用して)、出力ワークスペースに書き込まれます。
上の図では、ツール ダイアログ ボックスにパラメータ値を入力して、[OK] ボタンをクリックすると、スクリプトは以下のようにGetParameterAsText()を使用してパラメータ値を読み込みます。
# Import arcpy site-package # import arcpy from arcpy import env # Read the parameter values: # 1: input workspace # 2: input clip features # 3: output workspace # inWorkspace = arcpy.GetParameterAsText(0) clipFeatures = arcpy.GetParameterAsText(1) outWorkspace = arcpy.GetParameterAsText(2) env.workspace = inWorkspace
パラメータ順序の一致
ツール ダイアログ ボックスに入力するパラメータの順序は、スクリプトに記述するパラメータの順序と一致する必要があります。たとえば、スクリプト ツールで [クリップ フィーチャ] をパラメータ 2 からパラメータ 1 に変更すると、スクリプト ツールのプロパティ内のパラメータの順序も変更する必要があります。
sys.argv および arcpy.GetParameterAsText
パラメータを読み取るには、sys.argv および arcpy 関数 GetParameterAsText() の 2 通りの方法があります。どちらの方法を使用してもかまいません。上の例は、sys.argv を使用するように書き換えることができます。その場合、次のようなコードを使用します。
# Read the parameter values: # 1: input workspace # 2: input clip features # 3: output workspace # inWorkspace = sys.argv[1] clipFeatures = sys.argv[2] outWorkspace = sys.argv[3] env.workspace = inWorkspace
sys.argv では、1 つのパラメータに対して入力できる文字数が最大 1,024 文字までに制限されています。GetParameterAsText() では、文字数制限がありません。その点だけを考えれば、GetParameterAsText を使用することをお勧めします。
sys.argv は 1 ベース(最初のパラメータは 1)であるのに対して、GetParameterAsText() は 0 ベース(最初のパラメータは 0)です。
ArcGIS 9.2 より前は、スタンドアロン スクリプト(オペレーティング システムのプロンプトから実行されるスクリプト)では sys.argv しか使用できず、GetParameterAsText() はスクリプト ツールでしか機能しませんでした。この制限はバージョン 9.2 で排除されました。sys.argv を使用したコード例を目にする場合があります。それらの例は 9.2 より前に作成されたものです。バージョン 9.2 以降では、GetParameterAsText() を sys.argv で置き換えることができます。その際に注意すべき点は、パラメータ インデックスを sys.argv[1] から GetParameterAsText(0) に減分することだけです。
パラメータのデータ タイプ
スクリプト ツール パラメータにはそれぞれ対応するデータ タイプがあります。ジオプロセシングでスクリプト ツールのダイアログ ボックスを開くと、パラメータ値がデータ タイプと照合してチェックされます。たとえば、ワークスペース データ タイプのパラメータに対してフィーチャクラスを入力すると、下図に示すように、ジオプロセシングの(ダイアログ ボックス上に赤色の「X」で示す)エラーが表示されます。
データを参照する際にもデータ タイプが使用され、パラメータ データ タイプと一致するデータだけが参照ダイアログ ボックスに表示されるようになっています。
パラメータとデータ タイプについて念頭におく必要のあるもう 1 つの点は、ジオプロセシングではデータ タイプが一致しない値がスクリプトに送られないようになっていることです。これは、事前にパラメータ値をパラメータのデータ タイプと照合してからスクリプトに送るという仕組みによるものであり、スクリプト ツールを作成するうえで明らかなメリットの 1 つです。