反復処理はループ処理またはバッチ処理とも呼ばれ、プロセスをある程度の自動化を利用して繰り返すことを意味します。タスクの反復を自動化することで、タスクの実行に必要な時間と作業量が削減されるため、反復処理は非常に重要です。ModelBuilder の反復処理では、反復ごとに異なる設定または異なるデータを使用して、プロセスを繰り返し実行できます。ModelBuilder の反復処理には柔軟性もあり、モデル全体や単一のツールまたはプロセスを繰り返し実行できます。
メモ:
- 1 つのモデルに対して、反復子を 1 つだけ使用できます。モデルに反復子が存在している場合、別の反復子を追加するボタンは無効になります。
- 反復子をモデルに追加すると、モデル内のすべてのツールが反復子の各値に対して反復処理されます。反復値のそれぞれに対してモデル内の各ツールを実行する必要がない場合は、別のモデルを作成し、反復子と複数回の実行が必要なプロセスだけを追加して保存し、これをメイン モデルにモデル ツールとして追加します。モデルへのサブモデルの追加の詳細。
- 反復子に接続されているツールの出力に一意の名前を付けるには、インライン変数置換を使用します。
ModelBuilder には多くの反復子があり、これらを使用して複数の値、データセット、およびワークスペースを反復処理できます。
反復子 | 説明 |
---|---|
For | 指定した回数の反復処理を行います。 |
While | 特定の変数または条件が True または False になるまで反復処理を行います。 |
フィーチャー選択の反復 | フィーチャクラスの各フィーチャまたは共通の属性を持つフィーチャのグループを反復処理します。 |
行選択の反復 | テーブル内の各レコードまたは共通の属性を持つレコードのグループを反復処理します。 |
フィールド値の反復 | フィールドの各値を反復処理します。 |
複数値の反復 | 入力値のリストの各値を反復処理します。 |
データセットの反復 | ワークスペース内の各データセットを反復処理します。 |
フィーチャクラスの反復 | ワークスペース内の各フィーチャクラスを反復処理します。 |
ファイルの反復 | フォルダー内の各ファイルを反復処理します。 |
ラスターの反復 | ワークスペース内の各ラスターを反復処理します。 |
テーブルの反復 | ワークスペース内の各テーブルを反復処理します。 |
ワークスペースの反復 | フォルダー内の各ワークスペース (ジオデータベースなど) を反復処理します。 |
反復子の追加と使用
反復子をモデルに追加するには、[ModelBuilder] > [挿入] > [反復子] の順にクリックし、リストから反復子を選択します。1 つのモデルに対して、反復子を 1 つだけ使用できます。モデルに反復子が存在している場合、別の反復子を追加するオプションは無効になります。
反復子の設定を表示および変更するには、反復子のエレメントをダブルクリックします。各反復子は似ていますが、それぞれの反復子には他と異なる独自の設定があります。よく使用される反復子として、[フィーチャクラスの反復] について以下で説明します。
要素 | 説明 |
---|---|
ワークスペース | 入力ワークスペース (ジオデータベースなど) またはフィーチャ データセット。 |
ワイルドカード | 結果を制限するために使用する、* (アスタリスク) と文字の組み合わせ。たとえば、A* と指定すると、A で始まるフィーチャクラスのみが含まれます。これはオプションです。 |
フィーチャ タイプ | 結果を制限するのに役立つフィーチャ タイプ フィルター。よく使用されるのは、Point、Line、および Polygon です。これはオプションです。 |
再帰 | 反復子でワークスペース内のサブフォルダーを処理するかどうかを決定します。これはオプションです。 |
出力フィーチャクラス | フィーチャクラスのパスを含む出力変数。この変数は、フィーチャ レイヤーまたはフィーチャクラスを受け取るすべてのジオプロセシング ツールで、入力として使用できます。 |
名前 | フィーチャクラスの名前を含む出力変数。これは文字列です。 |
[フィーチャクラスの反復] では、反復処理を行うすべてのフィーチャクラスが格納された [入力ワークスペース] を指定する必要があります (上のグラフィックスでは、Input Feature Classes という名前の変数)。[ワイルドカード]、[フィーチャ タイプ]、および [再帰] の 3 つの追加設定を使用して、ワークスペース内で反復処理するフィーチャクラスを制限し、ワークスペースのサブフォルダーに対して反復処理を行うかどうか制御します。
[フィーチャクラスの反復] には、フィーチャクラスとフィーチャクラスの名前の 2 つの出力変数があります。フィーチャクラス変数は、次のツールに接続して処理できます。また、名前変数はインライン変数置換で使用できます。
例
次の例では、[フィーチャクラスの反復] 反復子を使用して、ワークスペース内の各フィーチャクラスを新しいマップに投影しています。[投影変換 (Project)] ツールで作成される新しいフィーチャクラスには、インライン変数置換を使用して、それぞれの入力の名前に基づく名前が付けられます。また、各出力フィーチャクラスには新しいフィールドが追加されます。[フィーチャクラスの反復] 反復子を ModelBuilder に追加した後、次の一般的な手順に従います。
- 入力ワークスペース (ジオデータベースなど) を指定して、ワークスペース内の各フィーチャクラスを反復処理します。
- ワイルドカードとフィーチャ タイプを指定します (この例では、名前が I で始まるポリゴン フィーチャクラスのみが含まれます)。
- [フィーチャクラスの反復] からは、フィーチャクラス (出力フィーチャクラス) とフィーチャクラスの名前 (名前) の 2 つの出力が生成されます。出力フィーチャクラス変数を [投影変換 (Project)] ツールに接続して、入力として使用します。また、名前変数とインライン変数置換を使用して、[投影変換 (Project)] ツールからの各出力に入力フィーチャクラスと同じ名前を付けます。[投影変換 (Project)] ツールの出力は、別のジオデータベースに書き込まれます。
- [投影変換 (Project)] ツールの出力を [フィールドの追加 (Add Field)] ツールに接続して、新しいフィールドを追加します。