ModelBuilder では、変数の値またはデータセット パスを別の変数で置換することができます。この場合、置換する変数の名前をパーセント記号で囲みます (%VariableName%)。このように変数を置き換える方法を、インライン変数置換と呼びます。
たとえば、変数 名前 の値が Wilson である場合、データセット パスを C:\Data\Output.gdb\Clipped_%Name% と指定すると、パスが C:\Data\Output.gdb\Clipped_Wilson に解決されます。
ModelBuilder は、次の形式のインライン変数の置換をサポートしています。
- モデル変数 - モデル内の任意の変数です。
- システム変数 - 変数 %n% をモデルの反復カウンターとして反復ワークフローで使用できます。変数 %t% は、出力が生成された時刻を YYYYMMDDHHMMSS の形式で示します。
- ワークスペース環境 - モデル データの管理を簡単にするために、ModelBuilder では 4 つのワークスペース環境 (%scratchGDB%、%scratchFolder%、%workspace% および %scratchWorkspace%) を使用できます。
モデル変数の置換
次に示すモデルでは、ワークスペース変数の 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 のパーセルだけが選択されます。
![[属性検索 (Select Layer By Attribute)] ツールでのインライン変数の使用 [属性検索 (Select Layer By Attribute)] ツールでのインライン変数の使用](GUID-68B17172-EE4B-4A16-B5DF-B247812AAB9C-web.png)
メモ:
この例の Parcel ID 変数の値は文字列です。文字列型のインライン変数を式で使用する場合は、変数を引用符で囲む必要があります ('%string variable%')。数値を表すインライン変数は、引用符で囲む必要はありません。2 番目の例では、変数の置換を使って [フィールド演算 (Calculate Field)] ツールのパラメーターに値を渡しています。以下のモデルには Class Field と Value という 2 つの変数があります。Class という値がある Class Field はフィールド名パラメーターとして使用されます。Forest という値がある Value 変数は式パラメーターとして使用されます。[フィールド演算 (Calculate Field)] ツールを実行すると、Class フィールドが値 Forest を取得して Value 変数に保存します。
[値の計算 (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 年間のゴミの総量) が計算されます。
![[値の計算 (Calculate Value)] ツールでのインライン変数の使用 [値の計算 (Calculate Value)] ツールでのインライン変数の使用](GUID-9CB5AC88-E662-4687-AF7C-022CA02C0446-web.png)
ファイル拡張子を使った変数の置換
変数が拡張子付きのファイル (例: elevation.tif) をポイントしており、インライン置換を使用してこの変数を別のツールの出力パスに含める必要がある場合、出力では誤って出力名に *.tif 拡張子が含められます。そのような場合は、[パスの解析 (Parse Path)] ツールを使用してファイル名 elevation だけを取得できます。その後、[パスの解析 (Parse Path)] ツールの出力の [名前] 変数を、次のツールへのインライン置換として使用できます。
システム変数の置換
ModelBuilder には、モデルで使用して現在のモデルの反復 (%n%) と時刻 (%t%) を表すことができるシステム変数が用意されています。
このシステム変数 %n% は、モデルに反復子が含まれている場合に、現在のモデルの反復処理を表します (1 回目の反復処理が 0 になります)。次の例では、[For] 反復子を使用して、モデルを 4 回反復処理しています。[バッファー (Buffer)] ツールの出力は、ツールへのフィードバックとして入力に使用されています。モデルは反復処理を行い、各反復で出力を作成します。%n% を [バッファー (Buffer)] の出力名に使用して、各反復の出力に新しい名前を付けています。
変数 %t% はツールの出力が作成された時刻を示しています。たとえば、データ バックアップのために毎日実行されるようスケジュールが設定されているモデルの場合、変数 %t% を使ってタイム スタンプ付きの出力を作成してバックアップ日を示します。
ワークスペース環境
ModelBuilder の 4 つのワークスペース環境を使って、モデル内のデータ管理を簡略化できます。モデル パラメーターのワークスペース環境を使って、[ジオプロセシング] ウィンドウからモデルを実行できます。
環境 | 使用法 | 位置 | 推奨される使用法 |
---|---|---|---|
%scratchGDB% | Project Folder\scratch.gdb | 中間出力 | |
%scratchFolder% | Project Folder\scratch | ファイルベースの中間出力 | |
%workspace% | [現在のワークスペース] 環境設定 | ジオプロセシング ツールの入力と出力 | |
%scratchWorkspace% | [テンポラリ ワークスペース] 環境設定 | 中間出力 |
たとえば、ツールの出力が %scratchGDB%\CopyToScratchGDB に指定されている場合は scratch.gdb ジオデータベースが作成されます。このジオデータベースが存在していない場合は、テンポラリ GDB 環境ジオデータベースに出力 CopyToScratchGDB が作成されます。
以下の例で、ツールの出力が %workspace%\CopyToWorkspace に指定されている場合、[現在のワークスペース] 環境場所に出力 CopyToWorkspace が作成されます。