ジオプロセシング フレームワーク
ジオプロセシング フレームワークとは、ツールを管理および実行するために使用する一連のウィンドウおよびダイアログ ボックスのことです。ここでは、このフレームワークの使用方法ではなく、その高度な概念および目的を中心に説明します。
ジオプロセシングの主な目的は、すばやく簡単に発想を実行、管理、変更、文書化、および ArcGIS ユーザ コミュニティとの共有が可能な新しいソフトウェアとして実現できるようにすることです。この場合、ソフトウェアとは、ArcGIS に必要な処理を実行するように指示するものです。たとえば、ジオプロセシング モデルは、ユーザによって ModelBuilder と呼ばれる操作性の高いビジュアル プログラミング言語で構築される新しいソフトウェアです。
このセクションの主題は、ジオプロセシングはユーザにとって新しい効果的なソフトウェアを作成するための 1 つの方法であるということです。これを説明することで、ユーザはジオプロセシングを使用する方法と目的をより広く、深く理解することができます。
任意の種類の新しいソフトウェアを作成するには、2 つの基本エレメントが必要です。
- システム内でキャプチャされたデータを操作する形式言語。
- この言語に基づいてソフトウェアを作成、管理、および実行するためのフレームワーク(エディタ、ブラウザ、文書化ツールなど)。
ジオプロセシングの言語は、そのツールのコレクションです。ジオプロセシング フレームワークは、既存のツールを整理および管理するため、および新しいツールを作成するための組み込みユーザ インタフェースの小さいコレクションです。フレームワークの基本的な構成要素は、次のとおりです(「ジオプロセシングの概要」を参照)。
- ツールを検索して実行するための検索ウィンドウと、ツールボックスを参照してそのツールを管理または実行するためのカタログ ウィンドウ
- 対話形式でツールのパラメータを設定してツールを実行するためのツールのダイアログ ボックス
- ツールのパラメータを入力することでツールを実行するための Python ウィンドウ
- 一連のツールを連結するための ModelBuilder ウィンドウ
- スクリプトを作成してツールボックスに追加するための方法
ジオプロセシング モデルと ModelBuilder
ツールのダイアログ ボックスでは、1 つのツールを実行できます。これは 1 つのプログラミング言語で 1 つの命令を実行することと考えることができます。1 つのツールを実行することは確かに実用的ではありますが、プログラミング言語とまったく同じように複数のツールを連結して 1 つのツールの出力を別のツールに渡すことができなければ、システムはさほど役に立ちません。
ジオプロセシング フレームワークでは、ModelBuilder ウィンドウを使用して、ジオプロセシング言語のエレメント(ツール)を連結してシーケンスにすることで、すばやく簡単に発想をソフトウェアとして実現できます。モデルは、コンピュータに特定の処理を実行するように命令するため、ソフトウェアであると理解しておくことが大切です。ModelBuilder に表示されるプログラミング言語は、従来のプログラミング言語のようなテキストベースではなく、ビジュアルな言語です。
ここで最も重要なのは、モデルはツールであるということです。モデルの振舞いはシステムの他のツールとまったく同じであり、ダイアログ ボックス ウィンドウや Python ウィンドウで実行することができます。モデルはツールなので、モデルをモデルに埋め込むことが可能です。実際、ArcGIS で提供されているシステム ツールのいくつかはモデルです。
モデルには非常に複雑なものもあります。モデル内のどのシステム ツールまたはカスタム ツールも使用することができ、モデルは単なるツールであるため、ユーザが作成した他のモデルも使用できます。モデルの論理フローを制御するためにループおよび条件文を使用することもできます。
きわめて単純なモデルであっても、十分に効果的である場合があります。含んでいるツールは 1 つであっても、そのパラメータのいくつかが埋め込まれているモデルを作成することができます。たとえば、[バッファ(Buffer)] ツールでは 6 つのパラメータが使用されますが、現在処理している一連のタスクでは、これらのパラメータのうち、3 つのパラメータが常に同じであるとします。[バッファ(Buffer)] ツールを実行するたびにこれらのパラメータを設定するかわりに、モデルをすばやく作成してこれら 3 つのパラメータを設定し、MyBuffer ツールとして保存して、[バッファ(Buffer)] ダイアログ ボックスではなく MyBuffer ツールのダイアログ ボックスを使用することができます。MyBuffer に保存したモデルは数回使用しただけで削除するかもしれませんが、モデル自体はすばやく簡単に作成できるため、無駄な作業ではなく結果的に生産的といえます。
スクリプト
スクリプト言語を使用して、新しい便利なソフトウェアを作成することもできます。スクリプト言語を使用するプログラムはスクリプトと呼ばれます。ソフトウェア プログラミングでは、言語はシステム言語とスクリプト言語の 2 つの基本的なカテゴリに分けられます。システム言語は、C++ や .NET などの単純なプリミティブとコンピュータの基本的なリソースを使用してアプリケーションを一から作成するために使用される言語です。Python や Perl などのスクリプト言語は、コンピュータに組み込まれている高レベル機能を使用して既存アプリケーションを結合するために使用されます。システム言語のプログラミングに見られるような低レベル部品を扱う必要はありません。システム言語と比較して、スクリプト言語は、より習得しやすく使いやすい言語です。プログラミングを基本的に理解していれば、生産性を向上させるのに十分です。
ジオプロセシング フレームワークでは、新しいツールを作成するために使用できる点で、スクリプトはモデルに似ています。モデルはビジュアル プログラミング言語(ModelBuilder)で作成され、スクリプトはテキストベースの言語とテキスト エディタで作成されます。
モデルと同様に、スクリプトはツールです。スクリプトはウィザードを使ってカスタム ツールボックスに追加することができ、モデルや別のスクリプトで使用できるツールの 1 つになります。システム ツールの一部はスクリプトです。技術的には、スクリプトを作成しても、ツールボックスに持ち込まないようにできます。この場合、それはツールではなく、単なるディスク上のスタンドアロン スクリプトになります。
スクリプトを使用する理由にはいくつかあります。
- 状況に応じて、条件付きの実行や高度なエラー処理などのより高度なプログラミング ロジック、ディクショナリやリストなどのより高度なデータ構造、または文字列、数学、およびファイル操作機能などのより高度な機能が必要になるときがあります。多くのスクリプト言語が、高度な数学および統計、Web 自動化、データベース クエリ、高度なシステム ユーティリティなどに対応するためにサードパーティ ライブラリで拡張されています。
- スクリプトのみで使用できる単純なジオプロセシング機能がいくつかあります。たとえば、カーソルを使用すると、テーブルのレコードをループ処理して、行を読み書きしたり新しい行を挿入したりできます。ArcGIS データのプロパティ(フィーチャクラスの範囲やテーブルの個々のフィールドの各種フィールドなど)にアクセスするための機能があります。
- スクリプトは、他のソフトウェアをラップしてアプリケーションを結合するために非常に適しています。たとえば、土地利用規制条例の変更により影響を受ける土地区画の所有者および住所を含んでいる単純なテキスト ファイルを出力するモデルがあり、このテキスト ファイルを読み取り、影響を受ける区画の所有者に送付する正式通知書を生成する別のプログラムを起動するとします。スクリプトを使用してこの書状生成プログラムをラップし、このスクリプトをツールボックスに追加して、モデルで直接使用することができます。
- スクリプトは ArcGIS の外側で実行できます。つまり、スクリプトはオペレーティング システムのプロンプトから直接実行できます(ジオプロセシング ツールにアクセスする必要があるため、コンピュータに ArcPy サイト パッケージをインストールする必要はあります)。
ソフトウェアを作成および管理するためのフレームワーク
ジオプロセシング フレームワークは、すばやく簡単に発想をシステムによる管理とユーザ間の共有が可能な新しいソフトウェアとして実現できるようにするために開発されました。
ジオプロセシングは演算子(ツール)で構成される言語であり、ArcGIS 内のデータ(テーブル、フィーチャクラス、ラスタ、TIN など)を操作し、広範な分野にわたる地理情報を操作および解析するために必要なタスクを実行します。
モデルおよびスクリプトの形式で新しいソフトウェアをすばやく簡単に作成できます。これらの新しいツールは、標準の ArcGIS パッケージに含まれていないタスクを実行します。たとえば、ArcGIS には、「ジオプロセシングとは」で示されている単純な [投影変換(Project)] と [クリップ(Clip)] のモデルを実行するためのメニューもボタンもなく、またプログラミング オブジェクトもありません。
ツールはジオプロセシング フレームワークによって管理されるため、ユーザが管理する必要はありません。これは、すぐには実感できないかもしれませんが、重要なポイントです。
- システム ツールであるかカスタム(ユーザが作成した)ツールであるかに関係なく、ツールはすべてそのツールボックスからアクセスできます。モデル、スクリプト、システム ツール、およびカスタム ツールにそれぞれ異なるインタフェースおよび方法でアクセスする必要があるとすると、その使用と管理はきわめて複雑で困難になります。ジオプロセシングでは、すべてのツールを、コンポーネント ツール、モデル ツール、またはスクリプト ツールであるかどうかに関係なく、同じ方法で作成および管理できます。
- ツールはすべて同じ方法で文書化されます。ツールを作成したら、それをシステムが分類および検索できるようにカタログ ウィンドウで文書化できます。他の手法では、ユーザがドキュメントの標準の管理を行う必要があります。
- ツールには同じユーザ インタフェース、つまりダイアログ ボックスが使用されます。これらのダイアログ ボックスは、ツールのパラメータに基づいて自動的に作成されます。ユーザ インタフェースのプログラミングを行う必要はありません。他の手法では、ツール作成者がユーザ インタフェースの設計とプログラミングを行う必要があります。
ツールは簡単に共有できます。すべてのツールおよびツールセットを含んでいるツールボックスは、「.tbx」という拡張子を持つディスク上のファイル内またはジオデータベース内のどちらかに格納されます。このファイルまたはジオデータベースにアクセスできるすべてのユーザがそのツールを実行できます。
要点は、ツールが、ドキュメント、ユーザ インタフェース、アクセス方法、および共有方法が同じであるジオプロセシング フレームワークの正規メンバになることです。
ジオプロセシングと ArcObjects
ArcObjects は、ArcGIS ソフトウェア開発キット(SDK)の一部として提供される単純なプログラミング オブジェクトの大規模なライブラリです。開発者は、ArcObjects を使用して新しいアプリケーションを構築したり、ArcGIS アプリケーションの既存の機能を拡張したりします(ほとんどのシステム ツールとジオプロセシング フレームワーク全体も ArcObjects を使用して構築されています)。ジオプロセシングと同様に、ArcObjects SDK を使用して新しいソフトウェアを作成できます。
ArcObjects SDK とジオプロセシングは相補的な関係にあります。一般に、ArcObjects は ArcGIS を新しい振舞いで拡張するために使用され、ジオプロセシングはタスクを自動化するために使用されます。ArcObjects は、新しいユーザ インタフェースの追加、フィーチャクラスへのカスタム ロジックの追加、特殊なカートグラフィック レンダラの作成などに使用します。ジオプロセシングは、適切に動作するフレームワークの範囲内でタスクを自動化するソフトウェア(モデルおよびスクリプト)を作成するために使用します。
ArcObjects は、プログラマが複雑なロジックおよびアルゴリズムを実装するために単純なプリミティブにアクセスする必要があるシステム プログラミング言語とともに使用されることを前提としています。このため、ArcObjects には何千もの異なるオブジェクトおよびリクエストが含まれており、これによりプログラマは作業を詳細に制御できます。ArcObjects はシステム プログラミング言語とともに使用されるため、ジオプロセシングよりも、そのモデルおよびスクリプトのプログラミングに関する豊富な知識を必要とします。
一方、ジオプロセシングは、すべての GIS ユーザが作業の自動化、反復可能な明確に定義されているメソッドおよびプロシージャの構築、および重要な地理プロセスのモデリングを行うために使用できる普遍的な機能です。