モデルでのイテレータの使用例

イテレータの使用法を説明するために、次のモデル例では [フィーチャクラスの反復(Iterate Feature Classes)] イテレータを使用して、ワークスペースの各フィーチャクラスを投影変換し、インライン変数置換を使用して [投影変換(Project)] ツールの各出力に入力名に基づく名前を動的に設定し、各フィーチャクラスに新しいフィールドを追加します。

  1. 入力ワークスペースが [フィーチャクラスの反復(Iterate Feature Classes)] に指定され、このワークスペースのすべてのフィーチャクラスがループにかけられます。
  2. ループにかけられるフィーチャクラスは、ワイルドカードとフィーチャ タイプの指定により制限されます(名前が I で始まるポリゴン フィーチャクラスだけがループの対象となります)。
  3. [フィーチャクラスの反復(Iterate Feature Classes)] からは、ループにかけられたフィーチャクラスとフィーチャクラスの名前の 2 つの出力が生成されます。フィーチャクラスの変数は、[投影変換(Project)] ツールに入力として接続されます。フィーチャクラス名の変数は、インライン変数置換で使用され、[投影変換(Project)] ツールの各出力に入力フィーチャクラスと同じ名前が動的に設定されます。
  4. [フィールドの追加(Add Field)] ツールの接続により、各フィーチャクラスに新しいフィールドが追加されます。
イテレータの例
注意注意:

  • 1 つのモデルに対して、イテレータを 1 つだけ使用できます。モデルにイテレータが存在している場合、別のイテレータを追加するオプションは無効になります。
  • イテレータをモデルに追加すると、モデル内のすべてのツールがイテレータの各値に対して反復処理されます。各反復値に対してモデル内の各ツールを実行したくない場合は、イテレータだけを含むサブモデル(モデル内のモデル、またはネストされたモデル)を作成し、メイン モデルにモデル ツールとして追加します。
  • イテレータを含むモデルを Python スクリプトにエクスポートすると、スクリプトには反復処理の論理が含まれなくなります。Python のリストの論理をスクリプトに追加して、同様の処理を実行できます。
  • イテレータを使用すると、[モデル プロパティ] の [反復処理] にデフォルト値の -1 が設定されます。これは、回数を制限せずにモデルを実行するか、設定された回数ではなくイテレータの入力の数に基づいてモデルを実行することを意味します。
  • イテレータに接続されたツールの出力には、次の方法で反復処理ごとに一意の名前を付け、上書きされるのを避けることができます。
    • システム変数 %n% を使用します(たとえば、「C:\Sctatch\scratch.gdb\output_%n%」)。
    • モデルで使用されているイテレータの [名前] または [値] の出力をインライン変数として使用します(たとえば、「C:\Sctatch\scratch.gdb\output_%Name%」や「C:\Sctatch\scratch.gdb\output_%Value%」)。
    • モデル内のその他の変数をインライン変数として使用します(たとえば、XYZ という変数がある場合は、出力の名前を「C:\Scratch\scratch.gdb\output_%XYZ%」のように使用できます)。この変数では、定数値を使用しないでください。
  • [マップへ追加] オプションをオンにした場合、ツールの出力は変数名を使用して ArcMap の表示に追加されます。すべての反復処理の出力を、変数名の代わりに一意の出力名を使用して ArcMap の表示に追加する場合は、表示する出力を [値の収集(Collect Value)] ツールに接続し、[値の収集(Collect Value)] を右クリックして [マップへ追加] オプションをオンにします。モデル ツールのダイアログ ボックスからモデルを実行する場合は、出力モデル パラメータだけが表示に追加されるため、[値の収集(Collect Value)] ツールの出力をモデル パラメータにします。

関連項目


7/10/2012