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