スクリプトをスクリプト ツールとして設定し、スクリプト ツールをモデルに追加することで、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」は、Esri の R-toolbox-py github リポジトリからダウンロードできます。展開したフォルダーには、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 パッケージ プログラムが実行準備中であることを示すメッセージが表示されます。
![[コマンド ライン] ウィンドウ [コマンド ライン] ウィンドウ](GUID-92F6430D-51FB-4975-AC75-7F34B47F038E-web.png)
続いて、スクリプトが R 統計パッケージを起動し、clusTool ライブラリのデフォルト ウィンドウが表示されます。

R パッケージは、Python スクリプト ツールから受け取った入力に基づいて、クラスターを計算します。結果が ArcMap に戻され、マップに描画されます。
