モデルでのイテレータの使用例
イテレータの使用法を説明するために、次のモデル例では [フィーチャクラスの反復(Iterate Feature Classes)] イテレータを使用して、ワークスペースの各フィーチャクラスを投影変換し、インライン変数置換を使用して [投影変換(Project)] ツールの各出力に入力名に基づく名前を動的に設定し、各フィーチャクラスに新しいフィールドを追加します。
- 入力ワークスペースが [フィーチャクラスの反復(Iterate Feature Classes)] に指定され、このワークスペースのすべてのフィーチャクラスがループにかけられます。
- ループにかけられるフィーチャクラスは、ワイルドカードとフィーチャ タイプの指定により制限されます(名前が I で始まるポリゴン フィーチャクラスだけがループの対象となります)。
- [フィーチャクラスの反復(Iterate Feature Classes)] からは、ループにかけられたフィーチャクラスとフィーチャクラスの名前の 2 つの出力が生成されます。フィーチャクラスの変数は、[投影変換(Project)] ツールに入力として接続されます。フィーチャクラス名の変数は、インライン変数置換で使用され、[投影変換(Project)] ツールの各出力に入力フィーチャクラスと同じ名前が動的に設定されます。
- [フィールドの追加(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 Values)] ツールに接続します。
- [値の収集(Collect Values)] の出力を右クリックして、[マップへ追加] をオンにします。
- モデル ツール ダイアログ ボックスからモデルを実行する場合は、出力モデル パラメータだけが表示に追加されるため、[値の収集(Collect Value)] ツールの出力をモデル パラメータにします。
関連トピック
5/10/2014