反復処理でのフィードバックの使用

ModelBuilder では、プロセスの出力を前のプロセスの入力として使用することができます。出力が前のプロセスの入力として戻されるため、これはフィードバックと呼ばれます。

フィードバック ループは、次のいずれかを使用して設定できます。

  1. 変数のプロパティによる設定
  2. 接続ツールを使用した設定

次の例では、モデルの各反復処理で、[バッファ(Buffer)] の出力が [バッファ(Buffer)] の入力としてフィードバックされています。

フィードバック ループの設定

変数のプロパティによる設定

手順:
  1. 入力変数を選択して右クリックします。
  2. [一般] タブで、[フィードバック変数] ドロップダウン リストからフィードバックとして使用する変数を選択します。

    出力変数から入力変数に、青色の点線でフィードバック コネクタ ラインが作成されます。ツールの各反復処理で、出力変数が次の反復処理の入力として使用されます。

接続ツールを使用した設定

手順:
  1. ModelBuilder で、[接続] ツール コネクションの追加 をクリックします。
  2. フィードバックとして使用する出力をクリックし、次に入力をクリックします。

    モデルは出力が入力として接続されていることを認識して、青色の点線のフィードバック コネクタ ラインを自動的に作成します。ツールの各反復処理で、出力変数が次の反復処理の入力として使用されます。

  3. モデルは反復ごとに出力データセットを 1 つ生成するため、前の反復処理の出力が上書きされないように、各反復の出力名を一意にすることが重要です。以下の例のように、インライン変数置換を使用して出力パスを付加すると、各反復の出力に一意の名前を割り当てることができます。

モデルの反復回数の制限

モデルには反復回数を設定する必要があります。回数を設定しない場合は、モデルのフィードバック ループが永久に続きます。次の例をご参照ください。

手順:
  1. モデルの反復処理を制限するには、[For] 反復子を使用します。
  2. フィードバック ループを指定した回数だけ実行するには、適切な [開始値][終了値]、および [増分値] を入力します。たとえば、モデルを 4 回反復処理する場合は、[開始値] を「1」、[終了値] を「4」、[増分値] を「1」に設定します。
  3. [For] ツールの出力を、次のツールの前提条件にします。これにより、次のツールを実行する前に反復回数を使用できるようになります。前提条件の設定の詳細
  4. [For] の出力を他のツールの前提条件として設定した場合、[開始値] は 0 より大きい値の必要があります。デフォルト値の 0 が使用される場合、最初の反復処理の後、[For] の出力は 0 に設定され、下流のツールは「前提条件が間違っていたため、処理は実行されません」というエラー メッセージを出力して失敗します。これは、0 という値が、モデル内で前提条件が間違っていると解釈されるためです。
  5. 各反復の出力を上書きしないようにするには、出力名に %Value% インライン変数を付加します。モデルを実行すると、%Value% は、[For] 反復子の出力パラメータ Value から取得される 1、2、3、4 という数値に置換されます。
  6. 次の例のように、ツールの出力をフィードバックとして入力に接続します。[Buffer(バッファ)] の出力は、フィードバックとして Input 変数に接続されます。
  7. また、ツールの出力(この例では Output)を [値の収集(Collect Values)] ツールに接続します。
  8. ツール ダイアログ ボックスからフィードバック ループとインライン変数置換を使用してモデルを実行する場合、モデルの最終出力を [値の収集(Collect Values)] モデル専用ツールに接続し、[値の収集(Collect Values)] ツールの出力をモデル パラメータにします。[値の収集(Collect Values)] ツールは、新しい出力は作成しません。このツールは、入力を出力として渡します。そのため、モデル パラメータとして公開されたときに、ツール ダイアログ ボックスに出力は表示されません。これをモデル パラメータにすると、ArcMap の [ジオプロセシング] [ジオプロセシング オプション] のドロップダウン メニューから [ジオプロセシング処理結果をマップに追加] オプションがオンの場合に、結果が ArcMap での表示に追加されます。
  9. モデルを実行します。
フィードバック ループの使用
5/10/2014