クライアントによるマップ キャッシュの使用

このトピックは 3 つの部分で構成されています。最初のセクションでは、ArcGIS アプリケーションがマップ キャッシュ内のタイルにアクセスし、それらを使用する方法を紹介します。次のセクションでは、これらのアプリケーションがタイルを後から使用できるように格納する方法について説明します。最後のセクションでは、ArcGIS アプリケーションでマップ キャッシュをオーバーレイするための手順を示します。

アプリケーションによるキャッシュへのアクセスと使用

マップ キャッシュの生成が完了すると、マップ サービスが自動的に再起動され、直ちにキャッシュの使用を開始します。マップ サービスを表示できる ArcGIS アプリケーションはすべてキャッシュを使用しますが、タイルを取得して使用する方法はアプリケーションによって異なります。

Web アプリケーション

ArcGIS APIs for JavaScript、Flex、および Silverlight を使って開発する際、タイル(キャッシュ)マップ サービスへ接続していることを示す特定のクラスを使用します。たとえば、JavaScript API の場合は、ArcGISTiledMapServiceLayer を使用してキャッシュ サービスに接続します。キャッシュ サービスを使用すると、タイルは REST コールによってキャッシュ ディレクトリからマップ サービスへ取得されます。タイル リクエストは「http://<マップ サービス URL>/tile/<レベル>/<行>/<列>」形式で入力します。

Web ADF(Application Developer Framework)を使用する場合、キャッシュ マップ サービスは、他のマップ サービスを追加するのと同じ方法でアプリケーションに追加することができます。Map コントロールは、サービスがキャッシュされているかどうかを認識し、キャッシュ タイルが利用できる場合はそれらを取得するためにサービスを操作します。キャッシュをオーバーレイしており、Web ADF がサービスの 1 つからタイルを取得できない場合は、動的なサービスとして処理します。

Web ADF は、GIS サーバに最初に接続した後、仮想キャッシュ ディレクトリからタイルを直接取得します。これは、アプリケーションがタイルを取得する方法としては最も高速です。エクスプロード形式で格納されたキャッシュの場合、タイルはこの方法でのみ取得できます。

仮想キャッシュ ディレクトリが利用できない場合や、キャッシュがコンパクト形式で格納されている場合でも、Web ADF アプリケーションはファイル システム上のキャッシュ ディレクトリからタイルを取得しようとします。仮想キャッシュ ディレクトリからではすぐに利用できないタイルを Web ADF アプリケーションで取得する方法については、「マップ コントロールの説明」をご参照ください。

Web アプリケーションでキャッシュ サービスを 1 つ表示していて、タイルが存在しない場所に画面移動した場合、アプリケーションは動的なイメージを表示しないので、何も表示されなくなります。キャッシュされていないエリアに画面移動したときにマップが表示されるようにする方法の 1 つは、オンデマンド キャッシュを有効にすることです。

ヒントヒント:

マップの表示が予想よりも遅い場合、マップ イメージの URL を調べて、アプリケーションがタイルを取得していることを確認してください。これを実行する 1 つの方法として、Mozilla Firefox でアプリケーションを開き、[ツール][ページの情報][メディア] をクリックします。

  • 次のような URL が表示された場合、アプリケーションは REST リクエストからタイルを取得しています。
    http://myServer/ArcGIS/rest/services/myService/MapServer/tile/10/1723/3495.jpg
  • 次のような URL が表示された場合、アプリケーションは仮想キャッシュ ディレクトリからタイルを取得しています。
    http://myServer/arcgiscache/myService/Layers/_alllayers/L00/R00001019/C00000c55.png
  • 次のような URL が表示された場合、アプリケーションは仮想キャッシュ ディレクトリからタイルを取得できませんが、サーバのファイル システムからタイルを正常に取得しています。
    http://myServer/arcgis/services/myService/MapServer?mapname=Electric%20Solutions&level=14&column=2851&row=6544&format=PNG24&time=1191520207507
  • マップ イメージに別の URL が表示された場合、アプリケーションが効率の悪い方法でタイルを取得しているか、キャッシュが使用されていません。

マルチレイヤ キャッシュを Web アプリケーションに使用することは推奨できません。レイヤのオン/オフを設定する必要がある場合は、マルチレイヤ キャッシュと同じ表示効果を得るために、複数の融合キャッシュをオーバーレイすることができます。これには、次のワークフローを使用します。

  1. マルチレイヤ キャッシュに含まれているレイヤの各グループを、それぞれ別のマップ ドキュメントに追加します。マップ ドキュメントの範囲全体が同じになるようにしてください。
  2. 各マップ ドキュメントをマップ サービスとして公開します。
  3. 同じタイル スキーマを使用して、各マップ サービスの融合キャッシュを作成します(イメージ形式が一致している必要はありません)。
  4. レイヤの順序と透過表示を適切に設定した後、サービスをマップに追加します。マップのユーザがサービスのオン/オフを設定できるようになります。

ArcMap

[データの追加] ボタンを使用して、他のマップ サービスを追加するのと同じ方法でキャッシュ マップ サービスを ArcMap に追加します。ArcMap でキャッシュを表示するための方法には、次の 2 つがあります。

  • マップ サービスを通してキャッシュにアクセスする。この方法でキャッシュを表示するには、キャッシュの作成に使用された GIS サーバとマップ サービスを参照します。この方法では、ArcMap は最初に GIS サーバに接続して、サービスにキャッシュがあるかどうかを確認します。次に、ArcMap は、サーバのファイル システムにあるキャッシュ ディレクトリからタイルを取得します。
  • ラスタ データセットとしてキャッシュにアクセスする。この方法でキャッシュを表示するには、キャッシュ タイルが含まれているディレクトリを参照して、データセットを ArcMap へ追加することを選択します。キャッシュには、[データの追加] ボタンを使ってその他すべてのラスタを追加する際に使用するアイコンと同じものが表示されます。ラスタとしてアクセスされるキャッシュは表示専用で、検索することはできません。このタイプのキャッシュを使用する利点は、これがマップ サービスと結び付けられておらず、キャッシュ ディレクトリにアクセス可能であれば、サーバから切断しているときに表示できる点です。

キャッシュの縮尺レベルと完全に一致する縮尺でタイルがリクエストされた場合、マップ サービスは直接タイルを返します。ほとんどの場合、リクエストがキャッシュ内の縮尺レベルと正確に一致することはありません。この場合は、通常、ArcMap は次に近い縮尺レベルのタイルをリクエストし、リクエストされた縮尺に合わせてそれをリサンプリングします。このリサンプリングは、タイルを動的に生成するよりもはるかに高速ですが、元のタイルと表示が異なるイメージが作成されてしまいます。このリサンプリングにより、キャッシュされているマップ ラベルを ArcMap が特定の縮尺で読み取ることが難しい場合があります。最もよい結果を得るために、キャッシュが作成された縮尺か、それに近い縮尺でマップを表示してください。

ArcMap はマルチレイヤ キャッシュを使用するための最も現実的なクライアントです。これは、(Web ADF アプリケーションとは異なり)ArcMap がマルチレイヤ キャッシュ タイルをクライアント側でブレンドし、ラベリングする機能を持つためです。

ArcGlobe と ArcGIS Explorer

ArcGlobe および ArcGIS Explorer は 2D キャッシュを読み取り、グローブ サーフェス上にドレープすることができます。ArcGIS Online、Google Maps、および Bing Maps に使用される組み込みタイル スキーマの 1 つを使ってキャッシュを構築すると、最適なパフォーマンスが得られます。これらのタイル スキーマの 1 つを使用できない場合は、ArcGIS Server グローブ サービスを使って最適なパフォーマンスを得るようにします。

マップ サービスを ArcGlobe に追加するシナリオの 1 つは、2D マップ キャッシュがすでに作成されていて、2D キャッシュから同一の 3D グローブ キャッシュを作成したい場合です。このシナリオでは、キャッシュの生成にのみ触れ、グローブのナビゲートは行いません。

クライアント側でのレイヤのローカル キャッシュ

ArcMap、ArcGIS Explorer、ArcGlobe は、アクセス済みのタイルをローカル キャッシュですべて保持します。これらのエリアに再びズームまたは画面移動すると、アプリケーションはローカル キャッシュを使用し、サーバから再びタイルを取得しません。

それ以降のセッションで使用するために、または現在のセッションでのみローカル キャッシュを使用するために、ディスク上にローカル キャッシュを保存するかどうかを選択できます。

また、タイルをローカルにキャッシュしないことも選択できます。これにより、ローカル キャッシュのパフォーマンス上の利点は失われますが、サーバから常に最新のタイルを確実に取得することができます。

サーバ管理者がレイヤのローカル キャッシュを無効にしている可能性もあり、その場合は、常に最新のタイルを取得することになります。この場合、キャッシュをローカルで保存するための他のオプションは利用できません。

サーバ キャッシュの表示済みのエリアをサーバ管理者が更新する場合、変更内容を表示するためにはローカル キャッシュを削除する必要があります。ArcMap、ArcGIS Explorer、ArcGlobe は、キャッシュが更新されているかどうかを検出することができません。サーバ管理者は、更新されたデータが利用できる際に、キャッシュの削除をユーザに通知する必要があります。

キャッシュのオーバーレイ

他のマップ キャッシュとオーバーレイされるマップ キャッシュを設計する際には、キャッシュの表示に使用するアプリケーションに応じて、キャッシュの設計時に検討しなければならない重要なポイントがいくつかあります。

Web アプリケーションでのマップ キャッシュのオーバーレイ

ArcGIS APIs for JavaScript を使って構築された Web アプリケーションなどは、キャッシュをオーバーレイする際に座標系とタイル サイズを一致させる必要があります。できるだけ多くの縮尺を一致させることもお勧めします。

このための最も簡単な方法は、両方のキャッシュでタイル スキーマを一致させてから、各キャッシュに適切な縮尺でタイルを作成するだけです。この方法により、座標系とタイル サイズを一致させ、2 つのキャッシュに同じ縮尺があることをソフトウェアに認識させることができます。

Web ADF アプリケーションにおいて他のマップ キャッシュをオーバーレイするマップ キャッシュを設計する際には、キャッシュのオーバーレイが正常に実施されるよう、いくつかのルールに従う必要があります。これらの条件の詳細については、「.NET Web ADF でのマップ キャッシュのオーバーレイ」をご参照ください。

ArcMap でのマップ キャッシュのオーバーレイ

ArcMap では、任意の数のマップ キャッシュをオーバーレイできます。キャッシュのタイル スキーマまたは投影法は同じでなくてもかまいません。ただし、その場合は ArcMap がリサンプリングと再投影を実行するため、同等のタイル スキーマと投影法を使用するほうが、マップのパフォーマンスと見た目の品質が向上するかもしれません。


3/6/2012