ArcGIS Server 10.1 開発の展望 (2)


※本記事の内容は、現在の ArcGIS Server 10.1 の開発段階における情報で、ArcGIS Server 10.1 のリリースまでに予告なく変更される可能性があることを予めご了承ください。

前回の記事では、ArcGIS Server 10.1 のアーキテクチャの変更点や、シンボルや Web 編集の開発についてご紹介いたしました。今回は、さらにジオプロセシング サービスやジオメトリ サービス等についてご紹介いたします。


ビジネス ロジックの実行

いくつかのGISアプリケーションでは高度な GIS ビジネス ロジックを実行するために、特定のツールを使用します。これらのツールは例えば森林の木材生産量の想定やレストラン開業に最適なロケーションの特定、公害が発生する場所の推測などのビジネス ロジックに使用されます。これまで多くの開発者は、これらのビジネス ロジックを実現するために ArcObjects を使用して開発を行ってきました。

多くの場合、ModelBuilder を用いたジオプロセシング モデルによって処理を作成可能です。これらのジオプロセシング モデルは ArcGIS Server の Web サービス (ジオプロセシング サービス)として公開可能で、Web アプリケーションからも利用することができます。ジオプロセシングのスクリプト作成についての詳細はこちらのリンクをご参照ください。ジオプロセシング サービスの利点は明確で、開発者の開発量を大幅に減らすことができます。また、ArcObjects を使用して開発することが難しかった、非同期ジオプロセシング サービスの実行をより簡単に行うことが可能となります。

003

カスタム ジオプロセシング ツール

Out-of-the-box で利用可能な ModelBuilder の数百のツール以外に、ジオプロセシングはカスタムのツールを開発することが可能です。もっとも簡単な方法は、独自に実行可能な Python スクリプトまたはモデル内でほかのツールと一緒に実行される Python スクリプトを作成する方法です。上述の arcpy.mapping が実装の例となります。一般的な Python スクリプトツールの開発についてはこちらをご参照ください。

より高度なカスタマイズを行う場合は、C# や VB.NET または C++ を使用してカスタムのジオプロセシング ツールを作成することが可能です。この場合はモデル内に ArcObjects を使用するロジックを実装することができます。C# を使用してカスタムのジオプロセシング ツールを作成する方法はこちら(英語)のヘルプをご参照ください。

カスタムのツールは他の out-of-the-box のツールと同様に、 Python または他のプログラミング言語を使用して開発したカスタムのツールのワークフローでも再利用できます。また、非同期で実行可能なジオプロセシング サービスを ArcObjects や Python で実行することができます。

ジオメトリ サービス

ジオプロセシング サービスは非常に便利なサービスですが、ArcObjects の開発と同様にジオプロセシング サービスの利用はよく検討する必要があります。Out-of-the-box のサービスで同様の機能を実現できるのであれば、ジオプロセシング サービスは使用しないほうが良いでしょう。ジオプロセシング サービスを使用する前に、SOAP または REST ベースのジオメトリ サービスで実現可能かご検討ください。ジオメトリ サービスはバッファ、空間的な関係の特定、距離や面積の計測などの基本的なGIS操作を行うことが可能です。ジオメトリ サービスのメソッドの使用とマップ サービスのクエリ機能、クライアント サイドのロジックを組み合わせることにより、ジオプロセシング サービスよりシンプルで高速に処理を行うことが可能です。このホワイト ペーパー(英語)では、距離で単純な選択を行う問題をケースとしたジオメトリ サービスとジオプロセシング サービスの比較を紹介しています。

単純な処理では、ジオプロセシング サービスや ArcObjects の使用は非常に難しい解決方法となります。そのような場合は、マップ サービスのクエリやジオメトリ サービスの使用をご検討ください。

ジオプロセシング サービスは一般的に、長く複雑な処理を行うために最適なサービスです。開発者は、Python やカスタムの ArcObjects のジオプロセシング ツールを使用してサービスを拡張でき、非常に難しい分析や解析処理を行うことができます。次では、短時間で処理が可能な代替案を紹介します。

サーバ オブジェクト エクステンション

複雑なビジネス ロジックを短時間で実行したい場合は、サーバ オブジェクト エクステンション(以下SOE)を使用した開発が可能です。SOE は ArcGIS Server のサービスの基本機能を拡張するための高度な開発オプションです。SOE は以下の 2 つの利点が挙げられます。

(1) SOE は SOAP または REST の Web サービスを公開可能で、ArcGIS Web Mapping を使用して開発されたクライアントから簡単に実行可能です。実際に、SOE は ArcGIS Services Directory から確認可能で、フィーチャ セットなど ArcGIS Web Mapping が理解可能なオブジェクト タイプとして使用できます。
(2) SOE は効率的に ArcObjects をカプセル化し、処理を高速に実行可能な環境を提供します。

例えば SOE を使用しラスタから標高の断面図を作成するなどが実現できます。このケースでは ArcGIS Server の通常のサービスやジオプロセシングでは実現できない機能を SOE が提供します。

004

ここでは ArcGIS API for Flex で開発されたアプリケーションから SOE を使用する例を紹介します。この SOE は ArcGIS Server の 3D Extension のライブラリを使用して、標高の断面図を短時間で作成します。このシナリオでは、断面図を作成するために使用可能なジオプロセシング ツールがありません。この処理は非常に短い処理で非同期の実行が必要ないため SOE を使用しています。

SOE の開発には ArcObjects、.NET の知識と、Web サービスの通信で用いられる REST や SOAP の知識が必要です。 ArcObjects SDK では サンプルがいくつか紹介されています。

新しい SOE の開発を計画している場合、ArcGIS Server 10.1 ではマップ ドキュメントを公開する前にマップ ドキュメントの最適化を行う必要があります。SOE を ArcGIS Server 10.1 で使用する準備を今から行う場合は、ArcGIS Server 10.0 の MSD ベースのサービスを使用してください。大きな変更点としては IMap や ILayer、ページレイアウトに関するクラスなど MXD ベースのマップ サービスのみで使用可能なインターフェースを使用した開発が行えないという点です。この記事では IMapServerDataAccess を使用して MSD ベースのマップサービスのデータソースにアクセスする方法を紹介しています。

ArcGIS Server 10.1 の変更点や開発方法について2 回に渡り、紹介してまいりました。多くの ArcGIS Server 10.1 の新機能は、ArcGIS Server 10.0 では困難な問題を実現することが可能です。本記事で説明してきた内容が、ArcGIS Server 10.1 の開発に向けて開発者の皆様にお役に立てば幸いです。