ジオプロセシング サービスの重要な概念
ジオプロセシング サービスには、Web 対応のクライアントからアクセス可能なジオプロセシング タスクが含まれています。タスクはジオプロセシング モデルとスクリプト ツールを公開することにより作成されます。
ArcGIS Desktop でジオプロセシング サービスを作成する方法には、次の 2 種類があります。
- ジオプロセシング ツールボックスを公開します。ツールボックス内の各ツールはジオプロセシング サービス内のタスクになります。
- ジオプロセシング ツール レイヤを含む ArcMap ドキュメントを公開します。ツールボックス内の各ツールはジオプロセシング サービス内のタスクになります。
ジオプロセシング サービスとそれらのタスクには、インターネットおよび非公開のイントラネットを通じてアクセスします。ジオプロセシング サービスとそれらのタスクは、ArcGIS Desktop、ArcGIS Explorer、および ArcGIS Server Manager を使用して構築された Web サイトなどの Web アプリケーションで使用できます。ArcGIS Desktop では、ジオプロセシング サービスをツールボックスとして ArcToolbox ウィンドウに追加することができ、タスクはツールボックス内のツールになります。
このトピックの残り部分では、ジオプロセシング サービスとタスクに関する重要な設計概念、ルール、ガイドラインについて説明します。
ジオプロセシング サービスの作成
Web クライアントは軽量アプリケーションであり、テキスト、数字、単純なジオグラフィック フィーチャなどの単純なデータ パケットをサーバに送信する方法しか知りません。ジオプロセシング サービスは、この単純なデータを取得して処理し、有効で役立つ出力を返します。たとえば、有害化学物質流出時の避難候補地域、次第に激しさを増す台風の予想暴風域と勢力、ユーザが定義した分水界内の土地被覆のマップ、土地区画マップと所有権の詳細、都市部のパレード ルートの許可など。これらのサービスの可能性は無限にあります。
ジオプロセシングは、入力データを処理するサービスを作成するための、高性能なツールの基本要素を提供します。現在ジオプロセシングを使用している場合は、モデルとスクリプトを使ってツールを作成する方法をすでに理解しているかもしれませんが、できるだけ多くのクライアント ユーザを獲得するために、最も単純な入力データを使用するためのツールの作成方法を習得する必要があるでしょう。
たとえば、一連のポイントから上流の分水界を計算し、計算された分水界内のポリゴンを抽出するモデルがあるとします。このモデルの入力パラメータは以下のとおりです。
- ラスタ デジタル標高モデル(DEM)
- ポイント フィーチャクラス
- ポリゴン フィーチャクラス
このモデルは ArcGIS Desktop に適していますが、ジオプロセシング サービスには適していません。次のように変更する必要があるでしょう。
- ユーザによって定義された調査領域で作業を行うのではなく、特定の調査領域で作業を行います。モデルは既知の調査領域を持ち、特定の DEM で作業を行うため、DEM はもはや入力パラメータでありません。
- ジオプロセシング サービスとして、クライアントがフィーチャクラスをアップロードすることはできません。代わりに、ユーザがクライアント アプリケーション内で分水点を表すポイントをデジタイズします。サービスは、DEM の解像度に適した計算済みのスナップ距離を使用して、これらのポイントをスナップします。
- モデルは、入力フィーチャクラスからポリゴンを抽出する代わりに、土地被覆ポリゴンといった既知のデータで作業を行います。出力は、計算された分水界内の土地被覆ポリゴンになります。入力ポリゴンはもはや必要ありません。
修正後のモデルは、単純な入力を取得し、「調査領域で、このポイントによって定義された分水界内の土地被覆とは」という空間検索に答えます。モデルはジオプロセシング サービスとして公開され、この調査領域の土地管理者を対象とした Web サイトで使用されることになります。
だからといって、ArcGIS Server を使って汎用サービスを構築できないわけではありません。「GP サービス: バッファ ポイント」サンプルは、一連のポイント フィーチャをバッファリングする完全に汎用的なサービスです。ArcGIS Server は柔軟であり、高度な手法またはカスタム プログラミングを使用して、ユーザによって送信された大きなデータセットを処理する汎用サービスを構築することができます。しかし、サービスの多くは特定の地理領域に焦点を合わせており、特定の空間検索に答え、軽量クライアントに対応します。ArcGIS Server のジオプロセシング サービスの設計は、このように焦点を絞ったサービスを構築し、提供することに主眼を置いています。
ジオプロセシング サービスの構成
ジオプロセシング サービスを作成するには、ジオプロセシング ツールボックスまたは ツール レイヤが含まれた ArcMap ドキュメント(*.mxd)という 2 種類の ArcGIS Desktop リソースを公開します。
- ツールボックスを公開すると、ツールボックス内のツールはすべてジオプロセシング サービス内のジオプロセシング タスクになります。
- ArcMap ドキュメントを公開すると、そのマップ ドキュメント内のツール レイヤはすべてジオプロセシング サービス内のジオプロセシング タスクになります。(ツール レイヤは ArcMap のコンテンツ ウィンドウにドラッグ&ドロップすることにより作成されます)。
- ツール レイヤが含まれた ArcMap ドキュメントを公開する際には、タスクの出力を描画するために使用されるマップ サービスとして、ArcMap ドキュメントを指定することもできます。タスクの出力を描画するマップ サービスを結果マップ サービスと呼びます。
以下の図は、この 3 つの構成を示しています。
ツールボックスからのジオプロセシング サービス
ツールボックスを公開すると、ツールボックス内のツールはすべてジオプロセシング タスクになります。タスクによるデータ出力はクライアントに返送されます。
ソース マップ ドキュメントに基づくジオプロセシング サービス
ArcMap セッションでジオプロセシング ツールを使用したことがあれば、そのツールで ArcMap のコンテンツ ウィンドウに含まれているレイヤやディスク上のデータを使用できることはもう知っているはずです。
同様に、ジオプロセシング タスクはソース マップ ドキュメント内のレイヤを使用することができます。この場合のソース マップ ドキュメントはレイヤのコンテナとしての役割を果たします。ソース マップ ドキュメント内のレイヤをタスクの入力パラメータとして使用することができます。次の図で Data to extract 変数は入力パラメータであり、ユーザはソース マップ ドキュメント内のレイヤを選択することができます。
ジオプロセシング タスクがアクセスできるのはソース マップ ドキュメント内のレイヤだけです。他のマップ サービスまたはクライアント アプリケーション内のレイヤにはアクセスできません。
モデルまたはスクリプト プロセスでソース マップ ドキュメント内のレイヤを使用することには、パフォーマンス上のメリットがあります。次の図は、ネットワーク データセット(StreetsNetwork)を使ってルート解析レイヤを作成するモデルを示しています。StreetsNetwork 変数は、(この場合のように)レイヤまたはディスク上のデータセットを参照することができます。ネットワーク データセットには高度なデータ構造とテーブルが含まれており、それらを読み取ってキャッシュしなければならないことから、ネットワーク データセットを開くと他の種類のデータセットよりもコストがかかります。データセットの代わりにレイヤを使用すると、ArcMap がデータセットを 1 回開いて、データセットの基本プロパティをキャッシュし、データセットを開いたままにするので、パフォーマンス上の利点があります。モデルを実行するときには、データセットはソース マップ ドキュメントによってすでに開かれているので、再び開く必要はありません。これにより、パフォーマンスが向上します。逆に、StreetNetwork 変数がデータセットを直接参照した場合は、モデルを実行するたびにデータセットが開かれます。これにより、パフォーマンスが低下します。
ネットワーク解析の場合は、ソース マップ ドキュメント内のレイヤとして常にネットワーク データセットが必要であり、そのレイヤをモデル変数で使用します。フィーチャやラスタといった他の種類のデータセットに関しては、ソース マップ ドキュメント内のレイヤを使用することによるパフォーマンス上のメリットはほんのわずかです。
結果マップ サービスに基づくジオプロセシング サービス
ジオプロセシング サービスは、タスク結果のデジタル マップ イメージの作成に結果マップ サービスを利用することができます。デジタル マップには、情報を伝達する地理データセットのビジュアル表現が含まれます。デジタル マップは画像(*.jpg など)として Web 経由で転送されます。マップ イメージには、フィーチャクラス内のフィーチャよりもユーザにとってはるかに理解しやすい情報がバイト単位で含まれています。マップ イメージには管理しやすいという特徴があります。それらを圧縮したり扱いやすいサイズにタイル分割するのは簡単であり、Web 経由で転送して表示するための方法も確立されています。
マップ イメージは、ArcMap ドキュメント(*.mxd)を公開した結果であり、ArcGIS Server マップ サービスによって作成されます。マップ イメージの特徴を考えると、結果として得られる 1 つ以上のデータセットを転送するよりも、ジオプロセシング タスクの結果に対するイメージを作成し、Web 経由で転送するほうが効果的です。ジオプロセシング サービスには、出力データのマップ イメージを作成するために ArcGIS Server によって使用される結果マップ サービスを追加することができます。
結果マップ サービスは、次の状況で使用されます。
- タスクの結果が大きなデータセットである(可能性がある)。
- ArcGIS Explorer のラスタなど、出力のデータ タイプがクライアントによってサポートされない。この場合は、結果マップ サービスを使って出力を表示します。
- タスクの結果を保護するために、マップとして表示することだけを許可し、データセットとしてダウンロードできないようにしたい。
- クライアントではなく結果マップ サービスによって描画しなければならない複雑なカートグラフィがある。
結果マップ サービスを使用する際には、ジオプロセシング サービスと結果マップ サービスの 2 つのサービスがあることに注意してください。これら 2 つのサービスは、互いに依存しない状態で実行されます。タスクを実行すると、ArcGIS Server はジオプロセシング タスクを最初に実行し、次に結果マップ サービスを実行して、ジオプロセシング サービスの出力を描画します。この実行順序により、結果マップ サービスはジオプロセシング サービスによってディスク上に作成されるデータセットを必要とします。つまり、ジオプロセシング サービス内のタスクの結果は、レイヤまたはメモリ内データセットではなく、ディスク上のデータセットでなければなりません。
ジオプロセシング サービスのためのベースマップ
ほとんどのジオプロセシング タスクでは、ユーザは何らかのベースマップを地理参照として使用する必要があります。ベースマップとしては、道路のベースマップ、設定された地名、対象地域、その他のフィーチャなどが考えられます。
ジオプロセシング サービスは、地名の入力時にユーザをガイドするために、おそらく特定のベースマップに依存します。たとえば、ユーザが特定の都市の土地区画境界内のポイントを入力しなければならない場合は、ベースマップにその都市の土地区画境界が示されている必要があります。さらに、グローバルに動作するサービスとは対照的に、サービスが特定の調査地域でのみ作業を行うことがあります。サービスは調査地域内のデータのみを認識するので、調査地域をジオプロセシング範囲として考えることができます。
結果マップ サービスを使ってジオプロセシング サービスのベースマップを表示するのはよくある間違いです。たとえば、ユーザがポイント&クリックによって土地区画を識別し、土地区画の属性によってシンボル表示される特定の土地区画をタスクが描画するとしたら、最初は、入力土地区画データ(ベースマップ)と識別された土地区画の表示に結果マップ サービスを使用することを考えるでしょう。結果マップ サービスをベースマップとして使用すべきでない理由は 2 つあります。
- 結果マップ サービスがアプリケーションに追加されると、マップ サービス内のすべてのレイヤを表示できるようになります。これらのレイヤには、出力を描画するために使用されるジオプロセシング ツール レイヤ、機密データを含んでいるかもしれないレイヤ、あるいはジオプロセシング サービスによって使用されるが、ユーザにとっては意味のない(ツール レイヤなど)レイヤが含まれています。
- ベースマップはマルチスケールかつマルチ解像度です。拡大/縮小するとベースマップが変化し、大きな縮尺では詳細を表示し、小さい縮尺では詳細を汎化します(たとえば、小さな縮尺ではライン フィーチャで表される河川が、大きな縮尺ではポリゴン フィーチャに変化します)。すばやく描画できるマルチスケール、マルチ解像度ベースマップの構築は、結果マップ サービスで処理しなければならないことではありません。結果マップ サービスの目的は出力を描画することです。ベースマップ マップ サービスの設計および実装は、結果マップ サービスの設計および実装とは分けて考える必要があります。
土地区画のポイント&クリックに戻りましょう。土地区画データ(ベースマップ)を表示するためにマップ サービスが必要であり、結果マップ サービスを使用して、属性ごとに色分けされた土地区画を表示用に返すとします。どちらのマップ サービスも同じ土地区画データセットを使用し(これについては問題ありません)、参照ベースマップは結果の表示作業から分離されます。
マップ サービスの設計においてもう 1 つ注意しなければならないのは、クライアントの性質です。Web アプリケーションの場合は、アプリケーションで利用できるマップおよびジオプロセシング タスクを完全に制御することができます。結果マップ サービスが Web アプリケーションのコンテンツ ウィンドウにマップ レイヤとして表示される必要はありません。ArcMap クライアントと ArcGIS Explorer クライアントはもう少しやっかいです。ユーザがどのマップまたはジオプロセシング サービスを選択するかわからないので、ベースマップ範囲とジオプロセシング範囲にずれが生じるからです。サービスを公開する際に、「このジオプロセシングサービスを追加するときに他のマップ サービスも追加する」ことを指定できるオプションはありません。ただし、正しいサービスが含まれた ArcMap ドキュメント(*.mxd)または ArcGIS Explorer ドキュメント(*.nmf)を配布することは可能です。ジオプロセシング サービスおよびタスク用に、必要なマップ サービスの詳細を説明した組み込みタスク ドキュメントを提供することもできます。タスク ドキュメントにはすべてのクライアントがアクセスできます。
データ タイプとクライアントの機能
ArcGIS Explorer は軽量のクライアント アプリケーションなので、ArcGIS Desktop とは異なり、ディスク スペースをあまり消費しません。Web アプリケーションは、インターネット ブラウザからアクセスする Web サイトです。ブラウザは非常に軽量な(シン)クライアントです。これらのクライアントは軽量なので、ArcGIS Desktop で使用される入出力データ タイプをこれらのクライアントで完全に利用することはできません(そうでなければ、クライアントは ArcGIS Desktop のようにディスク スペースを消費するでしょう)。たとえば、軽量クライアントはジオプロセシング タスクの入力としてラスタをサポートしません。
次の表に、3 つのクライアントの重要な入力パラメータ データ タイプをまとめます。
入力パラメータ データ タイプ |
ArcGIS Desktop クライアントでサポートされる |
ArcGIS Explorer クライアントでサポートされる |
Web アプリケーション クライアントでサポートされる |
---|---|---|---|
はい |
はい |
はい |
|
はい |
はい |
はい |
|
フィーチャクラス |
いいえ(ただしフィーチャクラス入力はフィーチャ セット データ タイプで間接的にサポートされる) |
いいえ |
いいえ |
テーブル |
いいえ(ただしテーブル入力はレコード セット データ タイプで間接的にサポートされる) |
いいえ |
いいえ |
ラスタ |
はい |
いいえ |
いいえ |
標準タイプ(Long、Double、Boolean、Date、String など)と距離単位("1000 meters" など) |
はい |
はい |
はい |
ファイル(*.zip または *.xml ファイルなど) |
はい |
はい |
はい |
レイヤ(たとえばフィーチャ レイヤ、ラスタ レイヤ、ネットワーク解析レイヤなど、あらゆるレイヤ タイプ) |
結果マップ サービスまたはソース マップ ドキュメントに含まれるレイヤのみ |
結果マップ サービスまたはソース マップ ドキュメントに含まれるレイヤのみ |
結果マップ サービスまたはソース マップ ドキュメントに含まれるレイヤのみ |
この表に含まれていないデータ タイプは、文字列データ タイプに変換されるか、または使用できません。ジオプロセシング サービスのデータ タイプの詳細については、「入力データ タイプと出力データ タイプ」をご参照ください。
フィーチャクラスとテーブルは、ジオプロセシングで使用される最も一般的なデータセット タイプなので、これらを入力として取得するモデルやスクリプトが存在する可能性は高いと言えるでしょう。つまり、既存のモデルやスクリプトをジオプロセシング タスクとして公開する前に、それらを変更する必要があります。モデルまたはスクリプトが入力としてフィーチャクラスを取得する場合は、入力をフィーチャ セットに変更できます。モデルが入力としてテーブルを受け取る場合は、モデルの入力をレコード セットに変更できます。
次の表に、3 つのクライアントの重要な出力パラメータ データ タイプをまとめます。
出力パラメータ データ タイプ |
ArcGIS Desktop クライアントでサポートされる |
ArcGIS Explorer クライアントでサポートされる |
Web アプリケーション クライアントでサポートされる |
---|---|---|---|
フィーチャクラス |
はい |
はい |
はい |
ラスタ |
はい |
いいえ(結果マップ サービスを使ってマップに表示できるだけである) |
いいえ(結果マップ サービスを使ってマップに表示できるだけである) |
テーブル |
はい |
いいえ(テーブル データ タイプを出力パラメータに持つサービスは利用可能なタスクのリストに表示されない) |
はい |
標準タイプ(Long、Double、Boolean、Date、String など)と距離単位("1000 meters" など) |
はい([ArcToolbox] ウィンドウの [結果] タブにサービスの結果として表示される) |
はい(タスク結果に表示される) |
はい |
ファイル |
はい |
はい |
はい |
データの同時使用 - %scratchworkspace%
ジオプロセシング タスクは複数のユーザによる同時使用が可能です。モデルまたはスクリプトによって読み取られるデータについては、同時性の問題はありません。複数のユーザが同じデータを読み取ることができます。ただし、サービスによって作成または更新されるデータについては、同時書き込みに関する問題を理解しておく必要があります。
新しいデータの作成
ジオプロセシング タスクでは、通常、中間データと出力データが作成されます。ArcGIS Server は、中間データと出力データで同時性の問題がないことを保証するメカニズムを提供します。タスクが実行されると、ArcGIS Server はジョブ ディレクトリに一意なジョブ フォルダを作成します。このジョブ フォルダには「scratch」という名前のフォルダが含まれており、scratch フォルダには「scratch」という名前のファイル ジオデータベースが含まれています。このフォルダ構造を作成した後、ArcGIS Server はジオプロセシング テンポラリ ワークスペース環境変数を(scratch ジオデータベースではなく)scratch フォルダに設定します。環境変数名をパーセント記号で囲むことにより(%scratchworkspace%)、モデルとスクリプトがこのテンポラリ ワークスペースを発見し、使用するのが容易になります。中間データと出力データは、テンポラリ(scratch)フォルダまたはテンポラリ ジオデータベースに書き込む必要があります。
データが scratch フォルダまたはジオデータベースに書き込まれるようにするための方法は、次の 2 つです。
- ModelBuilder で中間データ変数を右クリックして [出力先を固定] を選択します。注意:
出力変数は [出力先を固定] に設定しないでください。中間変数だけを設定してください。
- パスを変数(%scratchworkspace%)で置換します。次に例を示します。
%scratchworkspace%/templines.shp %scratchworkspace%/scratch.gdb/outWatershed
また、中間データはメモリにも書き込むことができます。データをメモリに書き込むほうが、ディスクに書き込むよりも高速です。中間データをメモリに書き込む場合は、タスクを実行した後にデータが削除されるので、モデル変数を [中間] または [出力先を固定] にする必要はありません。
既存データの更新
既存のデータを更新するタスクは特に重要です。たとえば、サービス内のタスクが、[アペンド(Append)] ツールなどを使用して新しい行またはフィーチャを追加するか、[フィールド演算(Calculate Field)] ツールなどを使用して既存の属性を更新することで既存のテーブルまたはフィーチャクラスを更新する場合があります。ジオプロセシング サービスが複数の同時インスタンス(ユーザ)に対応するように構成されていて、かつ複数のインスタンスが実行されている場合、複数のインスタンスが同じデータセットを更新しようとして競合が発生するかもしれません。このような場合は、サービスの構成時にインスタンスの数を 1 に制限しなければなりません。ArcGIS Server はこのようにして、リクエストをキューで待機させ、一度に 1 つのインスタンスだけがデータにアクセスするようにします。もう 1 つの問題はロックです。データセットを更新していて、データセットがマップ サービス内のレイヤでもある場合、マップ サービスがデータをロックするので更新は失敗します。別のサービスによって更新されるデータを表示するマップ サービスは作成しないでください。
データのシンボル表示
タスクの出力データを描画するには、次の 2 つの方法があります。
- クライアントがデータを描画する。
- 結果マップ サービスがデータを描画する。
クライアントが出力データを描画する際には、その出力データとレイヤの描画の説明の 2 つの情報がクライアントに送信されます。レイヤの描画の説明は、レイヤの [プロパティ] ダイアログ ボックスの [シンボル] タブで指定した情報で構成されます。この情報には、データをグループ化する方法(レイヤ シンボル)と使用するシンボル(シンボル タイプ)が含まれます。特定のレイヤ シンボルとシンボル タイプだけがクライアントによってサポートされます。
結果マップ サービスがデータを描画する際には、対応するツール レイヤで検出されたレイヤ シンボルとシンボル タイプが使用されます。結果マップ サービスを使用すると、(サーバ上で実行する)ArcMap がデータを描画し、完成したマップのイメージをクライアントに返送するので、任意のレイヤ シンボルとシンボル タイプを使用することができます。クライアントの機能は ArcMap による結果の描画方法に影響を与えません。
整合チェック
ArcGIS Desktop のジオプロセシング ツールを使用した経験があれば、これまでにジオプロセシング ツールによる入力の整合チェックを見たことがあるはずです。整合チェックの例として、入力テーブルが変化したときにフィールドのリストを変更することが挙げられます。
整合チェックのその他の例には、入力データに基づいてデフォルト値を変更し、パラメータを有効/無効にする警告()とエラー()があります。
ジオプロセシング タスクでは、整合チェックは実行されません。たとえば、入力レイヤ パラメータと入力フィールド パラメータを持つモデルを作成しているとしましょう。フィールド パラメータに表示されるフィールドのリストは、レイヤ パラメータの値に依存します。ArcGIS Desktop では、レイヤを変更すると、フィールドのリストが変化します。タスクでは、このようなことはありません。
- フィールドのリストには、公開した時点でのリストが含まれます。
- タスクのユーザが別のレイヤを選択しても、フィールドのリストは更新されません。
セキュリティ
GIS サーバは、保護したい作業内容やリソースを表します。ArcGIS Server には、権限のないユーザがサービスやアプリケーションにアクセスするのを防ぐためのセキュリティ メカニズムが含まれています。ArcGIS Server を使用して、組織内のさまざまなグループに対してアクセス層を構成することもできます。
ジオプロセシング サービスには、セキュリティを提供するプロパティが 2 つあります。
- サービスによって返されるフィーチャまたはレコードの数を制限することができます。ユーザがフィーチャまたはレコードをダウンロードするのを防ぐために、この制限を 0 に設定することができます。
- ジオプロセシング サービスを実行すると、ユーザに表示できるメッセージが書き出されます。これらのメッセージにはデータへのパスが含まれていることがあり、ユーザにこれらのパスを表示したくないことがあります。その場合は、ジオプロセシング サービスに対してメッセージ機能を無効にすることができます。