ModelBuilder では、変数の値またはデータセット パスを別の変数で置換することができます。この場合、置換する変数の名前をパーセント記号で囲みます (%VariableName%)。このように変数を置き換える方法を、インライン変数置換と呼びます。
たとえば、変数 名前 の値が Wilson である場合、データセット パスを C:\Data\Output.gdb\Clipped_%Name% と指定すると、パスが C:\Data\Output.gdb\Clipped_Wilson に解決されます。
任意のモデル変数またはシステム変数を使用して、インライン変数置換を実行できます。
- モデル変数 - モデル内の任意の変数です。
- システム変数 - ModelBuilder には、反復処理のワークフローで使用できる組み込みのシステム変数 n が用意されています。%n% は、モデル内の反復回数を表します。
モデル変数の置換
次に示すモデルでは、ワークスペース変数の Data Workspace に C:\Data.gdb という値が設定されています。[投影変換 (Project)] ツールのパラメーターで、変数名をパーセント記号で囲むことにより、このワークスペースの場所がインライン変数として置換されます。実行時に、%Data Workspace% が実際の変数値の C:\Data.gdb で置換されます。
反復子での使用
モデル変数の置換は、ModelBuilder の反復子を使用する際に特に重要です。反復子の [フィーチャクラスの反復] を実行すると、ワークスペース内の各フィーチャクラスのパスと名前を表す出力変数が作成されます。Name 変数の値を使用して、出力の Projected Feature Class のパスを作成できます。ツールを実行すると、%Name% がフィーチャクラスの名前で置換されます。
モデル ツールへのユーザー入力
モデル変数の置換は、ユーザーが入力した値を直接モデル内部のツールに渡す際に役立ちます。たとえば、次に示すモデルの Parcel ID は、モデル ツールを [ジオプロセシング] ウィンドウから実行するときに指定するモデル パラメーターです。この変数は、[属性検索 (Select Layer By Attribute)] ツールの [式] パラメーターで、"Parcel" = '%Parcel ID%' として使用されています。ツールを実行すると、式の %Parcel ID% が指定したパーセル ID (この例では 9) で置換され、ID が 9 のパーセルだけが選択されます。
メモ:
この例の「パーセル ID」変数は、文字列です。式の中では文字列のインライン変数を引用符で囲む必要があります (「'%string variable%'」)。インライン変数が数値の場合、引用符は必要ありません。値の計算 (Calculate Value) ツールでの使用
[値の計算 (Calculate Value)] は強力な ModelBuilder ユーティリティで、Python 式に基づいて値を計算し、その値をモデルで使用できます。モデル変数の置換を使用して、モデル変数の値を [値の計算 (Calculate Value)] の Python 式に渡すか、モデル内の他のツールの計算値を格納している出力変数の名前を使用します。
次のモデルでは、2 つの数値変数 (住人の数を表す Number of Residents と、1 人当たりの年間のゴミの量を表す Waste Per Person Per Year) が使用されています。これらの変数をパーセント記号で囲んで、[値の計算 (Calculate Value)] ツールの式で使用します。[値の計算 (Calculate Value)] ツールを実行すると、変数名がそれぞれの値で置換され、乗算により Total Waste Per Year (1 年間のゴミの総量) が計算されます。
ファイル拡張子付きの値の置換
変数が拡張子付きのファイル (例: elevation.tif) をポイントしており、インライン置換を使用してこの変数を別のツールの出力パスに含める必要がある場合、出力では誤って出力名に .tif 拡張子が含められます。そのような場合は、[パスの解析 (Parse Path)] ツールを使用してファイル名 elevation だけを取得できます。その後、[パスの解析 (Parse Path)] ツールの出力の [名前] 変数を、次のツールへのインライン置換として使用できます。
システム変数の置換
ModelBuilder には、反復処理のワークフローで使用できる組み込みのシステム変数が用意されています。このシステム変数 %n% は、モデルに反復子が含まれている場合に、現在のモデルの反復処理を表します (1 回目の反復処理が 0 になります)。
次の例では、[For] 反復子を使用して、モデルを 4 回反復処理しています。[バッファー (Buffer)] ツールの出力は、ツールへのフィードバックとして入力に使用されています。モデルは反復処理を行い、各反復で新しい出力を作成します。%n% を [バッファー (Buffer)] の出力名に使用して、各反復の出力に新しい名前を付けています。