反復処理におけるイテレータの使用の概要(ループ)

反復処理はループとも呼ばれ、プロセスをある程度の自動化を利用して繰り返すことを意味します。タスクの反復を自動化することで、タスクの実行に必要な時間と作業量が削減されるため、反復処理は非常に重要です。ModelBuilder の反復処理では、反復ごとに異なる設定または異なるデータを使用して、プロセスを繰り返し実行できます。ModelBuilder の反復処理には柔軟性もあり、モデル全体または単一のツールまたはプロセスを繰り返し実行できます。

イテレータ

説明

For

開始値から終了値までの間を、指定した間隔で反復処理します。これは、スクリプトまたはプログラム言語で使用される For と同じ機能を果たし、指定されたアイテム数だけ実行されます。

While

他のスクリプト言語またはプログラミング言語の「while」と同様に機能し、入力または入力セットで条件が true または false の間、反復処理を行います。

フィーチャ選択の反復

フィーチャクラス内のフィーチャを反復処理します。

行選択の反復

テーブルの行を反復処理します。

フィールド値の反復

フィールド内の各値を反復処理します。

複数値の反復

値のリストを反復処理します。

データセットの反復

ワークスペースまたはフィーチャ データセット内のデータセットを反復処理します。

フィーチャクラスの反復

ワークスペースまたはフィーチャ データセット内のフィーチャクラスを反復処理します。

ファイルの反復

フォルダ内のファイルを反復処理します。

ラスタの反復

ワークスペースまたはラスタ カタログ内のラスタを反復処理します。

テーブルの反復

ワークスペース内のテーブルを反復処理します。

ワークスペースの反復

フォルダ内のワークスペースを反復処理します。

イテレータについて

各イテレータが使用するパラメータのセットはそれぞれ異なりますが、すべてのイテレータ ツールの全体的な構造はよく似ています。よく使用されるイテレータとして、[フィーチャクラスの反復(Iterate Feature Classes)] について以下で説明します。

イテレータについて

[フィーチャクラスの反復(Iterate Feature Classes)] には、反復処理するすべてのフィーチャクラスを格納する [入力ワークスペース] が必要です。[ワイルドカード][フィーチャ タイプ] の 2 つの追加パラメータを使用すると、反復処理するワークスペース内のフィーチャクラスが制限されます。

[再帰] パラメータを使用すると、ワークスペース内のサブフォルダにあるフィーチャクラスの反復処理を制御できます。

[フィーチャクラスの反復(Iterate Feature Classes)] には、出力フィーチャクラスとフィーチャクラスの名前の 2 つの出力変数があります。出力フィーチャクラスは、次のツールに接続して処理できます。また、「名前」変数は、インライン変数置換で使用できます。たとえば、[バッファ(Buffer)] ツールをモデルに追加して、「フィーチャクラス」変数をツールに接続した場合は、ワークスペースのすべてのフィーチャクラスがバッファ処理されます。

イテレータの入力と出力

次の表に、イテレータの一覧と、それぞれの入力および出力を示します。ほとんどのイテレータに、2 つ目の出力として「値」または「名前」があります。これは、インライン変数置換で使用できます。

イテレータ

入力

出力 1

出力 2

For

-

While

Boolean 値(True または False)

-

フィーチャ選択の反復

フィーチャ

フィーチャ

行選択の反復

テーブル

レコード

フィールド値の反復

テーブル

フィールド値

-

複数値の反復

-

データセットの反復

ワークスペースまたはフィーチャ データセット

データセット

名前

フィーチャクラスの反復

ワークスペースまたはフィーチャ データセット

フィーチャクラス

名前

ファイルの反復

フォルダ

ファイル

名前

ラスタの反復

ワークスペースまたはラスタ カタログ

ラスタ データセット

名前

テーブルの反復

ワークスペース

テーブル

名前

ワークスペースの反復

フォルダ

ワークスペース

名前

注意注意:

  • 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)] ツールの出力をモデル パラメータにします。

レガシレガシ:

イテレータは、ArcGIS 10 より前のバージョンで提供されていた [モデル プロパティ] 内の一連のオプションに置き換わるものです。

参考情報


7/10/2012