ModelBuilder への外部プログラムの統合
スクリプトをスクリプト ツールとして設定し、スクリプト ツールをモデルに追加することで、Python スクリプトや他の言語によるスクリプトをモデルに統合することができます。モデルを拡張したり、ArcGIS から外部のパッケージやプログラムにアクセスするために、Python またはその他のスクリプト言語のロジックを使用する必要がある場合は、この方法を使用できます。
このセクションでは、外部統計パッケージの R を、ModelBuilder 環境に統合する方法を説明します。以下の例では、R の機能を実行するために 2 つのスクリプトが必要です。1 つは R のソース コードを呼び出す Python スクリプトで、もう 1 つは実際の R のソース コードです。Python スクリプトは、ModelBuilder から呼び出されてパイプとして機能し、ModelBuilder から R へ引数を整理して引き渡します。
例では、ArcGIS 環境における 2 つのスクリプトの動作と、これらがモデルを通してやり取りする仕組みを説明します。以下に示す手順はチュートリアルとして利用できます。また、内容を理解して各自のプロジェクトに適用できます。
- データのダウンロードと抽出
- システムへの R のインストール
- 新しいモデルの作成とモデルへのスクリプト ツールの追加
- スクリプト ツールのパラメータの設定
- モデルの実行
1 - データのダウンロードと抽出
サンプル スクリプトの「Using R in ArcGIS 10」は、「ジオプロセシング Resource Center - モデルとスクリプト ツールのギャラリー」でダウンロードできます。展開したフォルダには、4 つのサブフォルダと [Point Clustering(R Version)] スクリプト ツールが含まれます。
2 - R のインストール
スクリプト ツールを実行する前に、R パッケージをシステムにインストールする必要があります。このセクションをチュートリアルとして実行している場合、またはこのスクリプトの動作を後で試す場合は、ダウンロードした Resource Center スクリプトの [Doc] サブフォルダにある Readme.pdf の指示に慎重に従ってください。R パッケージは、この例で使用することを意図して作成されています。他の外部プログラムで使用する場合は、ソフトウェアのインストールについて十分に理解しておいてください。
3 - 新しいモデルの作成とモデルへのスクリプト ツールの追加
ダウンロードしたフォルダには、R Tools のツールボックスと、ツールボックスで使用するスクリプト ツールが含まれます。[新規] → [モデル] の順にクリックして、新しいモデルをツールボックスに追加します。この操作で空のモデルが開かれます。他のジオプロセシング ツールと同様に、[カタログ] ウィンドウから [Point Clustering(R Version)] スクリプト ツールをドラッグして、モデルに追加します。出力データ変数が作成され、スクリプト ツールに接続されます。
Python スクリプトの作成とスクリプト ツールの作成については、このセクションでは説明しません。スクリプトの概要と作成方法については、Python スクリプトの作成に関する詳しい説明があります。スクリプト ツールの作成方法については、「モデルへのスクリプトの統合」をご参照ください。
サンプルの Python スクリプトについて
モデルに追加したスクリプト ツールは、スクリプト ツールを右クリックして [編集] をクリックすることで編集できます。PointCluster.py スクリプトは、次のような内容です。
スクリプトのコードは、ArcGIS でツールの入力パラメータを呼び出し、これらのパラメータを R スクリプトを通して R 統計パッケージに渡します。パラメータが ArcGIS から R に渡されると、R プログラムが実行され、ModelBuilder で Python スクリプトを通して収集された入力に対するクラスタが計算されます。続いて、結果が返されて、ArcMap のマップに描画されます。
R スクリプトについて
R スクリプトは、ModelBuilder または [カタログ] ウィンドウには表示できません。スクリプトはダウンロードしたファイルの [Scripts] サブフォルダに格納されています。PointCluster.r スクリプトは、この例のために作成されたスクリプトで、ModelBuilder では外部 R 関数と呼ばれます。他のプログラムを使用している場合は、作成が必要な関連ファイルに注意する必要があります。必要なファイルを作成した後、これらの(任意のプログラム用に作成された)スクリプトを Python スクリプトから呼び出して、ModelBuilder で実行できます。
PointCluster.r スクリプトを次に示します。R ファイルは、ModelBuilder で使用された Python ベースのスクリプト ツールから入力引数を取得し、入力パラメータを収集します。指定された入力に基づいて、R ファイルはクラスタ解析を実行します。解析の結果は、Python スクリプトを通して ModelBuilder または ArcGIS アプリケーションに返され、ArcMap に描画されます。
4 - スクリプト ツールのパラメータの設定
サンプル スクリプトは、クラスタ化の方法とポイントの属性値に基づいて、入力ポイント フィーチャクラスのクラスタ解析を実行します。この例では、緊急通報(911)の発生を示すポイント フィーチャクラスを入力として使用します。このデータは、Resource Center からダウンロードした [ToolData] フォルダに格納されています。元のデータは、この例で使用するために変更されています。各ポイントには、そのポイントから一定の範囲内で発生した通報の回数を示す値が含まれています。クラスタ化に KMEANS_HARTIGAN の方法を使用して、回数のフィールドから 5 つのクラスタが計算されます。
これらの入力パラメータは、Python スクリプトを通して定義されます。Python スクリプト ツールは、ArcGIS 内で入力パラメータを指定できるダイアログ ボックスを備えます。
5 - モデルの実行
R スクリプト ツールを含むモデルを実行すると、コマンド ラインの実行ウィンドウが表示され、R パッケージ プログラムが実行準備中であることを示すメッセージが表示されます。
続いて、スクリプトが R 統計パッケージを起動し、clusTool ライブラリのデフォルト ウィンドウが表示されます。
R パッケージは、Python スクリプト ツールから受け取った入力に基づいて、クラスタを計算します。結果が ArcMap に戻され、マップに描画されます。