反復処理は、ループ処理やバッチ処理とも呼ばれ、一定の自動化により処理を繰り返すことを意味します。 タスクの反復を自動化することで、タスクの実行に必要な時間と作業量が削減されるため、反復処理は重要です。 ModelBuilder の反復処理では、反復ごとに異なる設定または異なるデータを使用して、プロセスを繰り返し実行できます。 ModelBuilder の反復処理には柔軟性もあり、モデル全体や単一のツールまたはプロセスを繰り返し実行できます。
- ビデオの長さ: 2:02
- このビデオは ArcGIS Pro 3.0 を使用して作成されています。
注意:
- 1 つのモデルで使用できる反復子は 1 つだけです。 モデルに反復子が存在している場合、別の反復子を追加するオプションは無効になります。
- 反復子をモデルに追加すると、モデル内のすべてのツールが反復子の各値に対して反復処理されます。 反復値ごとにモデル内の各ツールを実行したくない場合は、反復子だけを含むサブモデル、モデル内のモデル、またはネストされたモデルを作成し、メイン モデルにモデル ツールとして追加します。
- 反復子に接続されているツールの出力に一意の名前を付けるには、インライン変数置換を使用します。
ModelBuilder には多くの反復子があり、これらを使用して複数の値、データセット、およびワークスペースを反復処理できます。
反復子 | 説明 |
---|---|
開始値から終了値までの間を、指定した間隔で反復処理します。 | |
ワークスペース内にあるさまざまなタイプのデータセットを反復処理します。 | |
ワークスペースまたはフィーチャ データセット内のフィーチャクラスを反復処理します。 | |
フィーチャクラス内のフィーチャを反復処理します。 | |
フィールド内の各値を反復処理します。 | |
テーブルのフィールドを反復処理します。 | |
フォルダー内のファイルを反復処理します。 | |
マップ内のレイヤーの反復処理 | |
値のリストを反復処理します。 | |
ワークスペース内のラスターを反復処理します。 | |
テーブルの行を反復処理します。 | |
ワークスペース内のテーブルを反復処理します。 | |
フィールド内の時間にわたって反復処理します。 | |
フォルダー内のワークスペースを反復処理します。 | |
条件が True または False になるまで反復処理を行います。 |
反復子の追加と使用
反復子をモデルに追加するには、[ModelBuilder] > [挿入] > [反復子] の順にクリックし、リストから反復子を選択します。
反復子の設定を表示および変更するには、反復子のエレメントをダブルクリックします。 よく使用される反復子として、[フィーチャクラスの反復 (Iterate Feature Classes)] について以下で説明します。
エレメント | 説明 |
---|---|
ワークスペース | 入力ワークスペース (ジオデータベースなど) またはフィーチャ データセット。 |
ワイルドカード | 結果を制限するために使用する、* (アスタリスク) と文字の組み合わせ。 たとえば、A* と指定すると、A で始まるフィーチャクラスのみが含まれます。 これはオプションです。 |
フィーチャ タイプ | 結果を制限するのに役立つフィーチャ タイプ フィルター。 よく使用されるのは、Point、Line、および Polygon です。 これはオプションです。 |
再帰 | 反復子をワークスペース内のサブフォルダーに配置するかどうかを決定します。 これはオプションです。 |
出力フィーチャクラス | フィーチャクラスのパスを含む出力変数。 この変数は、フィーチャ レイヤーまたはフィーチャクラスを受け取るすべてのジオプロセシング ツールで、入力として使用できます。 |
Name | フィーチャクラスの名前を含む出力変数。 これは文字列です。 |
[フィーチャクラスの反復 (Iterate Feature Classes)] ツールでは、反復処理を行うすべてのフィーチャクラスが格納された [入力ワークスペース] の値を指定する必要があります (上のグラフィックスでは、Workspace という名前の変数)。 [ワイルドカード]、[フィーチャ タイプ]、および [再帰] の 3 つの追加設定を使用して、ワークスペース内で反復処理するフィーチャクラスを制限し、ワークスペースのサブフォルダーに対して反復処理を行うかどうか制御します。
[フィーチャクラスの反復 (Iterate Feature Classes)] ツールには、フィーチャクラスとフィーチャクラスの名前の 2 つの出力変数があります。 フィーチャクラス変数は、次のツールに接続して処理できます。また、名前変数はインライン変数置換で使用できます。