モデルへのモデルの統合

モデル ツールはジオプロセシング フレームワークに完全に統合され、すべてのシステム ツールまたはスクリプト ツールと同様に使用できます。他のすべてのジオプロセシング ツールと同様に、モデル ツールはダイアログ ボックスや Python スクリプトから実行することができ、別のモデルに追加して実行することもできます。

モデル ツールを別のモデルに追加して実行するという考え方は、サブモデル、ネストされたモデル、またはモデル内のモデルと呼ばれます。このようなモデル階層を使用する主な理由は、大規模で複雑なモデルを単純にすること、およびモデル イテレータをより高度に利用することの 2 つです。

大規模で複雑なモデルの単純化

モデル ツールを別のモデルに埋め込むことで、大規模で複雑なプロセスを、管理しやすく、別のモデルまたはスクリプトで再利用しやすい、小さなモデル単位に分割することができます。プロセス全体を再実行することなく、これらのサブモデルだけを変更および再実行できます。たとえば、あるサブモデルでエラーが発生した場合は、エラーが発生したモデルだけを修正し、プロセス全体をもう一度実行する代わりに、そのモデルだけを再実行します。

大きなモデルから小さいサブモデルへの分割
1 つの大きなモデルを 4 つのサブモデルと 1 つのメイン モデルに分割可能

上の図に示すモデルは、4 つのサブモデルと 1 つのメイン モデルに分割できます。小さいサブモデルをメイン モデルに追加して、最終プロセスに接続できます。サブモデルを別のモデルに追加すると、サブモデルの最終出力が出力変数として追加されます。

メイン モデルへのサブモデルの追加

モデル イテレータの高度な使用

モデル ツールを別のモデルに埋め込む場合は、モデル イテレータのより高度な利用も可能です。ワークフローでモデルの反復処理が必要な場合、2 回以上の実行が必要なツールまたはプロセスは、各ワークフローで一度しか実行する必要がないツールまたはプロセスと分離する必要があります。この場合、複数回の実行が必要なすべてのツールをモデル イテレータとともに 1 つのモデル内に配置して、サブモデルとして使用します。1 度しか実行する必要がないツールはメイン モデルに配置して、反復処理を行うサブモデルをメイン モデルから呼び出します。

次の例は、ジオデータベースからの入力セットをマージする自動化されたワークフローです。[マージ(Merge)] ツールは、複数のフィーチャクラスをマージ対象の入力として受け取りますが、特定のワークスペースにあるすべてのフィーチャクラスを自動的に追加する手段はありません。この場合は、[フィーチャクラスの反復(Iterate Feature Classes)] モデル イテレータと [値の収集(Collect Values)] ツールを組み合わせて、ワークスペースにあるすべてのフィーチャクラスを読み取り、これらを 1 つの変数に収集することができます。これらの 2 つのプロセスは、複数回実行する(反復処理を行う)必要があるためサブモデルに追加します。[マージ(Merge)] ツールは、1 度しか実行する必要がないためメイン モデルに追加して、[フィーチャクラスの反復(Iterate Feature Classes)] と [値の収集(Collect Values)] を追加したサブモデルの出力に接続します。

メイン モデルとサブモデル

次に、上のワークフロー全体を作成する方法を、手順ごとに説明します。使用されている用語と手法については、「ModelBuilder の基本用語」をご参照ください。

手順:
  1. メイン モデルとサブモデルの 2 つのモデルを作成します。サブモデルはメイン モデル内にネストします。メイン モデルに [マージ(Merge)] ツールを追加し、サブモデルに [フィーチャクラスの反復(Iterate Feature Classes)] イテレータと [値の収集(Collect Values)] ツールを追加します。
  2. サブモデルで、マージ対象のフィーチャクラスを含むワークスペースを [フィーチャクラスの反復(Iterate Feature Classes)] イテレータの入力として設定します。ポイント フィーチャクラスだけを反復処理する場合は、[フィーチャクラスの反復(Iterate Feature Classes)][フィーチャ タイプ] パラメータを [POINT] に設定します。
    イテレータの設定
  3. [フィーチャクラスの反復(Iterate Feature Classes)] の出力変数「出力フィーチャクラス」を [値の収集(Collect Values)] ツールに接続して、ワークスペース内の各ポイント フィーチャクラスのパスを反復処理して収集します。
  4. 入力ワークスペース変数と [値の収集(Collect Values)] ツールの出力を、モデル パラメータとして設定します。入力ワークスペース変数の「入力データセット」の名前を、変数の内容を表す、わかりやすい名前に変更します。
    サブモデルの設定
  5. サブモデルを保存して閉じ、メイン モデルにプロセスとして追加します。
  6. サブモデルをメイン モデルに追加すると、サブモデルのパラメータが変数として自動的にメイン モデルに追加されます。
    サブモデルの追加
  7. サブモデルの出力変数を、[マージ(Merge)] ツールの [入力データセット] として設定します。[マージ(Merge)] ツールの出力に、有効なパスが設定されていることを確認します。
  8. サブモデルの入力変数の名前を「入力データセット」に変更し、[マージ(Merge)] ツールの出力変数を「マージ出力」に変更します。「入力データセット」変数と「マージ出力」変数の両方を、モデル パラメータとして設定します。
    ネストされたモデル

7/10/2012