ModelBuilder を使用したツールの作成の概要

下図のモデル シナリオでは、モデル内にて [StudyArea] という変数で表される特定の調査領域用のデータをまとめるため、その調査領域でいくつかのデータセットをクリップする必要があります。クリッピングするデータセットごとに、STATUS という名前のフィールドを追加し、そのフィールドに初期値 1 を設定したいとします。実際には、必要に応じてフィールドをいくつか追加してそれぞれの値を計算できますが、このシナリオでは簡略化を図るために STATUS フィールドだけとします。

下記のモデルに対してクリップ、フィールドの追加、フィールド演算の作業を実行しますが、まとめる必要のあるデータは複数のマップ ドキュメント間およびジオデータベース間にまたがっています。ここで直面するワークフロー上の問題は、モデルを実行するたびに ModelBuilder でモデルを開いて [クリップ] への入力を [土壌] から別のデータセットに変更しなければならないことです。

モデルの例

システム ツールを使用するときのように、データセットを処理するたびに毎回 ModelBuilder を開くことなくモデルをツール ダイアログ ボックスで実行し、ダイアログ ボックスにレイヤまたはデータセットをドラッグして入力データセットの名前を指定できれば便利です。しかし、次の図に示すように、ツール ダイアログ ボックスを開いたときに [このツールにパラメータがありません。] と表示されるので、処理対象データセットを入力することはできません。

モデル ツールのダイアログ

このモデルには、別のモデルでは使用できないという問題もあります。下の図は、新しいモデルにツールを追加する方法を示しています。ここで意図しているのは、モデルの出力を [アイデンティティ(Identity)] ツールに接続することですが、[調査領域にクリッピングしてフィールドを追加(Clip to study area and add field)] ツールには [アイデンティティ(Identity)] ツールに接続するための出力がないため、接続は不可能です。

このモデル ツールは出力パラメータがないため、別のモデルでは使用できません。

解決策 - モデル パラメータの作成

上記の状況は両方とも、モデル パラメータを作成すれば解決できます。モデル パラメータを作成するには、モデル変数を右クリックし、[モデル パラメータ] を選択します。下の図で、[土壌] 変数と [Soils_Clip (3)] 変数は、モデル パラメータに設定されています。変数の横に英字「P」を付記してあるのが、モデル パラメータです。

モデル パラメータ変数を使用したモデル

これでモデル ツールのダイアログ ボックスが開いたので、[土壌] パラメータを別のパラメータ(たとえば、植生データセットやレイヤなど)に変更できます。また、別の出力データセット名を指定することもできます。[OK] をクリックすると、指定されたデータを使用してツールが実行されます。

パラメータが表示されたツール ダイアログ

ここで、モデル変数 [StudyArea] がパラメータとして定義されていないことに注目してください。調査領域は変更不要であるため、パラメータにする必要はありません。

詳細詳細:
このモデルで、[StudyArea] 変数に代入されているのは、レイヤ名ではなくデータセット(「D:\EastValley\Data\collect.gdb\studyarea」)です。StudyArea 変数にレイヤ名が代入されている場合は、ツールがバックグラウンドで実行されないため、フォアグラウンド/バックグラウンド処理の説明に従って、バックグラウンド処理をオフに切り替える必要があります。

パラメータ名の変更

このツール ダイアログ ボックスの唯一の難点は、パラメータ名があまり説明的でないという点です。パラメータ名として望ましいのは [土壌][Soils_Clip (3)] でなく、[入力フィーチャ][出力フィーチャクラス] など具体的な内容を示す名前です。ツール ダイアログ ボックス上のパラメータ名を変更するには、次の図に示すように、ModelBuilder で変数名を変更します。

パラメータ名を変更したモデル

この時点で、ツール ダイアログ ボックスを開くと、パラメータ名が説明的な名前に変更されています。

ツール ダイアログで、パラメータ名を変更

パラメータの空白化

最後に、ツール ダイアログ ボックス内のパラメータに値(この例では「Soils」と「E:\10DocModels\PortlandSmall.gdb\Soils_Clip」)を事前入力します。ArcMap でツールを開いたときに Soils という名前のレイヤが存在しない場合は、レイヤ Soils の未検出に起因するエラー(赤色の X)が、ダイアログ ボックスに表示されます。エラーが表示されてもかまわなければ常に別のレイヤを選択するか、別のデータセットを参照してください。エラー メッセージが煩わしい場合は、モデル内の変数を消去すれば、エラー メッセージを表示しないようにできます(次の図を参照)。その場合、モデルは ModelBuilder では実行されなくなります。実行するには、対象のツール ダイアログ ボックスを使用します。

空の変数を使用したモデル

これで、モデル変数が空になったので、ツール ダイアログ ボックスに値が表示されなくなります。

ツール ダイアログで、パラメータに空の値を使用

別のモデルでのモデル ツールの使用

以上の操作でモデルにパラメータが設定されました。これで、モデルを ModelBuilder に追加し、その出力を [アイデンティティ(Identity)] の入力に接続できます(次の図を参照)。

モデル内にモデルを使用

サマリ

モデルを実用的なツールにするには、モデル パラメータを作成します。モデル パラメータは、ツール ダイアログ ボックスに表示されます。モデル変数の名前は、ツール ダイアログ ボックス内のパラメータ名になります。上の例で、モデル変数を必ずしもすべてモデル パラメータにする必要はありません。StudyArea 変数は変更不要なため、モデル パラメータの対象から外します。

モデル パラメータを作成すると、モデルはツールとして有効になります。そのツールで各種のデータを処理して他のモデルに追加することも、スクリプト内に使用することもできます。便利なツールを長期にわたって蓄積して独自ライブラリとして構築しておくことにより、モデルの初回作成時に期待もかけなかったような状況で活用できるようになります。さらに重要な点は、大型の複雑なモデルを小型で扱いやすいモデルに細分化し、あるツールの出力を別のツールの入力として供給できることです。

モデル ツールの作成の詳細については、ModelBuilder を使用したツールの作成チュートリアルをご参照ください。

関連トピック

5/10/2014