<\/HEAD>
これはArcGISでジオプロセシングモデルを作成する3部構成シリーズの第3回目です。<\/EM><\/P><\/P>このシリーズの前回の記事を読んでいれば、モデリングの基本は理解できており、簡単に再利用やシナリオテストをサポートするためにモデルパラメーターを追加する方法も知っています。この投稿では、より少ない労力でより多くのことを行うためのいくつかのテクニックを学びます。 <\/P><\/P>リスト変数<\/STRONG><\/P><\/P>前回の記事<\/A>では、ツールパラメーターを変数にし、変数をモデルパラメーターに変える方法を学びました。デフォルトでは、変数は単一の値を格納します。しかし、変数に複数の値を格納することも可能です。その場合、その変数はリスト変数と呼ばれます。<\/P><\/P>
リスト変数がジオプロセシングツールに接続されている場合、そのツールとすべての下流プロセス(ツールの出力に依存するすべてのプロセス)は、リスト内の各値ごとに自動的に1回ずつ実行されます。そうです:リスト変数を定義すると、モデルツールは自動的に各リスト項目を処理することを認識します。<\/P>
<\/P>
リスト変数を使用することは、バッチモードでジオプロセシングツールを実行するようなものですが、大きな利点は複数ツール処理を達成するために値のリストを一度だけ入力すればよいという点です。<\/P>
<\/P>
以下のモデルをご覧ください。これは典型的なデータ管理ワークフローを自動化しています。<\/P>
<\/P>
<\/A><\/P>
このモデルはファイルジオデータベースを作成し、シェープファイルをジオデータベースフィーチャクラスに変換し、重複フィーチャを削除し、フィーチャクラスの座標系を定義し、選択されたフィーチャでレイヤーを出力します。モデルには2つのパラメーターもあります。単一のシェープファイルを処理する場合には非常に有効な完全なワークフローです。<\/P>
<\/P>
しかし、複数のシェープファイルを処理する必要がある場合には不十分です。すべてのシェープファイルを処理するためにはモデルを手動で何度も実行しなければなりません。1回モデルを実行してすべての作業が完了したほうが良いと思いませんか?<\/P>
<\/P>
リスト変数を作成すればこれが可能になります。この例でリスト変数を作成するには:<\/P>
<\/P>
<\/P>
- Feature Class to Feature Class ツールの入力変数を右クリックして[Properties] をクリックし、「A list of values」を選択してOK をクリックします。
- 変数をダブルクリックして開き、それぞれの値を入力します。<\/LI><\/OL><\/DIV>
リスト変数について詳しくはこちら<\/A><\/P>
インライン変数置換<\/STRONG><\/P><\/P>リスト変数では、ツールは各入力ごとに複数回実行されます。しかしデフォルトではツール出力名は同じになるため、最後以外のリスト項目の出力は上書きされてしまいます。これを回避するには
インライン変数置換 を使用します。<\/P><\/P>置換可能な変数にはモデル変数とシステム変数があります。インライン変数置換でモデル変数を使うには、単にパーセント記号で囲まれた変数名を入力します。
システム変数 %i% は出力名の末尾にユニークな連番番号を追加するためによく使われます。リスト項目番号は0から始まり(最初の項目出力名には0が付加されます)。
この例ではFeature Class to Feature Class ツールで出力フィーチャクラス名(この場合ASAM)の末尾に小文字のi をパーセント記号で囲んだものを追加します。<\/P>
システム変数を使うことでモデルは必要な3つの出力それぞれについて正しく処理・作成できます。ただし出力名は説明的ではありません。後で名前変更もできますが、その作業も今自動化してしまいましょう。
モデル専用ツール
ModelBuilder には ModelBuilder 内部で実行されるモデル専用(つまりモデルがツールとして実行された場合は機能しない)ツール群があります。 Parse Path ツール は入力パスから構成要素部分へ分解し、それら部分への参照が下流プロセスで可能になります。
この例では Parse Path ツールはシステム変数より優れた代替手段です。入力シェープファイル名が暗号化された数字ではなく出力名に使えます。
注意: 中間データ生成プロセスの場合、一意な名前が必要だが混乱させる名前でなくてもよいならシステム変数使用が良い解決策です。
Parse Path ツール追加手順: 
- [Insert] メニュー > [Model Only Tools] > [Parse Path] をクリック。
- モデルウィンドウから Parse Path ツール開き、「Input Data Element」で「Input Shapefile」を選択。
- [Parse Type] で「Name」を選択しOK。
- Parse Path の出力 (Value) を Feature Class to Feature Class ツールの Output Feature Class に接続。

Feature Class to Feature Class 出力要素にマウスオーバーすると3つの出力が入力シェープファイル名に対応した名前になっていることがわかります。これによりデータ操作担当者がモデル出力内容を即座に理解できます。
事前条件 (Preconditions)
Input Shapefile 要素が現在2つのツール(Parse Path と Feature Class to Feature Class)につながっていて Parse Path がメインワークフローに含まれていないことに気づきましたか? モデル内で別々だが関連したプロセスがある場合、それらプロセス実行順序は予測不可能です。処理順序は事前条件設定によって制御できます。
例では Feature Class to Feature Class プロセスが Parse Path プロセスより先に実行される可能性があります…つまり各リスト項目処理時にモデル出力が上書きされてしまいます。

Parse Path ツールが常に Feature Class to Feature Class より先に実行されるよう Value 要素を Feature Class to Feature Class ツールへの事前条件として設定します。
事前条件設定手順:
- Feature Class to Feature Class ツール右クリックして[Properties] をクリック。
- ダイアログボックスで[Preconditions] タブ開き Value にチェック入れてOK。
任意のモデル要素はモデルツールへの事前条件として設定でき、ツールは複数事前条件も持てます。
さあ、モデリングしましょう
ワークフロー、時間のかかるタスクの自動化、迅速な「what if」シナリオテストのサポートにおいて、モデルはGIS専門家がより効率的かつ協力的に作業するための貴重なツールです。モデリングの基本をしっかり理解し、いくつかの高度なテクニックを身につけていれば、ArcGISでモデルを構築する機会に飛びつく自分に気づくかもしれません。なぜなら、モデルはジオプロセシングのワークホースであるだけでなく、楽しいものだからです。<\/P>
<\/P>
関連記事:<\/STRONG><\/P>ModelBuilder 101<\/A><\/LI>ModelBuilder 220: 柔軟性を追加<\/A><\/LI><\/UL>
ModelBuilderの実践練習には、この
e-learningコース<\/A>がおすすめです。<\/P><\/BODY><\/HTML>