マップ キャッシュの計画
マップ キャッシュを構築する前に、使用するタイル スキーマとキャッシュを構築するのに必要なリソースについて検討することが重要です。また、場合によっては、マップ ドキュメントがタイル スキーマのどの縮尺レベルでも有効になるように、追加の設計作業を行う必要もあります。
大規模なキャッシュの作成には長い時間と多くのリソースが必要になるので、キャッシュの生成に取りかかる前に、想定どおりの結果が得られるようにしておく必要があります。可能であれば、小さいマップ エリアでキャッシュを試験的に構築するか、最初のいくつかのレベルのキャッシュを作成して、期待どおりの画像が表示されることを確認しておきます。
キャッシュするマップの設計
紙の地図を作成する場合、その縮尺はただ 1 つです。地図の詳細エリアを示すインセットには、さらに 1 つか 2 つの縮尺が使用されることはあります。縮尺の数がたったこれだけであっても、マップの総描(間引き)、シンボル、およびラベリングを正確に調整することは、通常、困難な作業です。キャッシュされ、コンピュータ画面で表示されるマップを作成する際には、マップがすべてのキャッシュ縮尺で判読でき、効果的に使用されるようにする必要もあります。
テンプレートを使用した計画の開始
ArcGIS Resource Center の 「Map Templates」(マップ テンプレート)ページでは、ダウンロード可能な複数縮尺のマップのサンプルが提供されています。これらの「マップ テンプレート」には、サンプルのマップ ドキュメントおよびデータセットが含まれており、これは独自のデータおよび設計ニーズに対応するように変更できます。現時点では、道路、地形、公共インフラストラクチャ、山道、歴史上の出来事、および参照オーバーレイ(画像上に表示)のテンプレートが使用でき、他のテンプレートも追加される予定です。テンプレートを使用しない場合でも、いくつかのテンプレートをダウンロードし、マップのコンテンツ ウィンドウおよびデータセットの構造を検証することで、効果的な複数縮尺のマップを構築する方法を学習できます。
このヘルプ トピックの残りの部分では、テンプレートで適用されているキャッシュ マップの設計原則について説明します。Web アプリケーションで ArcGIS Online、Bing Maps、または Google Maps サービスをオーバーレイするマップを設計する場合は、「ArcGIS Online、Google Maps、または Bing Maps をオーバーレイするマップの設計」をご参照ください。
縮尺の選択と縮尺依存の設定
ラベルとフィーチャに縮尺依存を適用すると、マップが正しく設計されていることを保証できます。下のサンプルのキャッシュ イメージをご覧ください。マップ上でイメージを拡大表示すると、テキストとシンボルが示す情報の量が増えていくことがわかります。道路の線は太くなり、都市はポイントではなくポリゴンによって表されるようになります。同様に、縮小表示のときに使用されるデータセットは拡大表示すると粗くなりすぎるので、マップがより詳細なデータセットに切り替わります。道路とそれらのラベルはマップを煩雑にするので、最大拡大縮尺のときだけ表示されます。このような縮尺に依存した変化は、マップでより多くの情報を系統的に伝えるのに役立ちます。
マップ上のフィーチャまたはラベルを特定の縮尺でのみ表示したり、縮尺に応じて描画方法を切り替えたりすることが可能です。マップのレイヤに設定する縮尺依存とタイル スキーマに対して選択する縮尺レベルは、慎重に組み合わせる必要があります。フィーチャに縮尺依存を適用しても、タイル スキーマにそのフィーチャを表示できる縮尺レベルが含まれていなければ、意味がありません。
たとえば、1:2,000 以上に拡大表示したときにフィーチャが表示されるように縮尺範囲の指定を行っている場合、キャッシュの最大縮尺を 1:2,500 に設定すると、それらのフィーチャは表示されなくなります。タイル スキーマに 1:1250 の縮尺を追加すると、フィーチャが表示されるようになります。さらに縮尺を追加したくない場合は、1:3,000 以上に拡大表示したときにフィーチャが 表示されるように縮尺範囲の指定を変更できます。
変更できないマップについてキャッシュを作成する場合でも、マップの特性を活かすようにタイル スキーマを設計することが可能です。可能であれば、マップを ArcMap で開き、レイヤ プロパティを調べて、縮尺依存のレイヤが存在するかどうかと、それらがどの縮尺でレイヤのオン/オフを切り替えるかを判断します。レイヤに縮尺依存がある場合は、タイル スキーマにレイヤを表示できる縮尺レベルを追加することを検討してください。たとえば、レイヤが 1:150,000 ~ 1:250,000 の縮尺で表示可能に設定されている場合は、タイル スキーマに縮尺として 200,000 を追加すると、キャッシュのレイヤが表示されるようになります。
座標系の選択
キャッシュするデータ フレームでは、どのような座標系でも使用できます。ただし、キャッシュを別のキャッシュでオーバーレイする場合は、両方のキャッシュで同じ座標系を使用する必要があります。これは、オンライン マッピング サービスから取得したタイルにキャッシュをオーバーレイする場合にも当てはまります。ArcGIS Online サービス、Google Maps、および Microsoft Bing Maps はすべて WGS 1984 Web メルカトル(球体補正)投影座標系を使用します。
ArcGIS 10 以前では、ArcGIS Online サービスは WGS 1984 地理座標系を使用していました。これらのサービスは廃止される予定であるため、ArcGIS Online サービスをオーバーレイするために構築する新しいキャッシュは WGS 1984 Web メルカトル(球体補正)を使用する必要があります。
レイヤ表示の計画
キャッシュ ツールはデフォルトでマップの融合キャッシュを作成します。つまり、マップ内のすべてのレイヤが 1 つのイメージでキャッシュされます。このため、融合キャッシュでレイヤのオン/オフを設定することはできません。
融合キャッシュがデフォルトに設定されているのは、それらが高速だからです。サーバにとっては、多くのイメージを取得するよりも、1 つのイメージを取得するほうが高速です。融合キャッシュを作成する代わりに、マルチレイヤ キャッシュを使用することができます。このタイプのキャッシュは、マップ内でまとめてキャッシュするレイヤのグループを選択できます。ただし、クライアントがキャッシュを使用する際には、サーバが複数のイメージを取得し、それらをオーバーレイして、その上にラベルを描画するまで待つ必要があります。クライアントとして ArcMap を使用する場合を除き、マルチレイヤ キャッシュによって得られるパフォーマンス上の利点はそれほどありません。
ここで、融合キャッシュを使用するときにレイヤのオン/オフを設定できるようにする方法について説明します。一般に、クライアント側のオーバーレイは、マルチレイヤ キャッシュに含まれている複数のレイヤよりも、同じ数の融合キャッシュを使用するほうが高速です。このため、解決策の 1 つは、マップ内で関連するレイヤをグループ化し、各グループを別個のマップ ドキュメントに格納することです。マップ サービスを公開し、各マップ ドキュメントから融合キャッシュを作成します。
たとえば、銀行、レストラン、美術館、図書館、ショッピング センター、土地区画、道路、河川、市区町村の境界線、湖、公園、および標高のレイヤが含まれたマップ ドキュメントがあるとします。
ArcMap を使ってドキュメントを表示する場合は、これらのレイヤのオン/オフを自由に設定することができます。ただし、マップ キャッシュを使ってこのマップを Web 上に公開する場合は、レイヤのいくつかを組み合わせることをお勧めします。レイヤ リストを調べて、以下の 3 つのグループに論理的に分類し、それぞれのグループからマップ ドキュメントを個別に作成することができます。
マップ ドキュメント 1(対象ポイント)
- 銀行
- レストラン
- 美術館
- 図書館
- ショッピング センター
マップ ドキュメント 2(文化景観)
- パーセル
- 道路
- 公園
- 市区町村の境界線
マップ ドキュメント 3(物理フィーチャ)
- 河川
- 湖
- Elevation
これらのマップ ドキュメントごとに、融合キャッシュを使ってマップ サービスを作成することができます。どのキャッシュにも必ず同じタイル スキーマを使用してください。そうすれば、3 つのマップ サービスのオーバーレイが可能になります。
物理フィーチャを文化景観と分けて表示する必要がないように思える場合は、マップ ドキュメント 2 および 3 を 1 つのマップ ドキュメントにまとめて、パフォーマンスをさらに向上させることができます。
キャッシュの作成時間の見積り
マップ サービスのキャッシュを作成する際、ArcGIS Server はキャッシュに指定されたエリアの全範囲をカバーするマップ イメージを、指定された縮尺レベルごとにレンダリングする必要があります。マルチレイヤ キャッシュの場合は、このプロセスをレイヤごとに繰り返す必要があります。さらに、キャッシュを保持するために必要なファイルとフォルダ構造も作成する必要があります。
キャッシュを作成するための所要時間は、選択された縮尺レベル、キャッシュの構築に割り当てられたサーバ リソースの量、およびマップ上の情報の密度にも依存します。高性能なサーバを使用したとしても、大きなキャッシュの生成には数日から数週間を要することがあります。多くの場合、キャッシュの作成にかなり時間がかかるとしても、キャッシュを使用することによって得られるパフォーマンス上の利点はそれを上回ります。
注意:キャッシュの生成に時間がかかることがありますが、サービスがタイム アウトすることを心配する必要はありません。キャッシュ ツールは、キャッシュを作成する前に、サービスの最大使用時間を非常に高い値に自動的に調整します。キャッシュの生成が完了すると、キャッシュ ツールは最大使用時間を元の値に戻します。
キャッシュ タイプの選択
融合キャッシュ タイプを使用する場合、すべてのレイヤが 1 つのイメージでキャッシュされるため、キャッシュがよりすばやく生成されます。マルチレイヤ キャッシュを使用する場合、サーバはレイヤごとにキャッシュされたイメージを作成します。このため、各レイヤはキャッシュの範囲にわたってすべての縮尺レベルでレンダリングされる必要があります。指定したレイヤの数が多ければ多いほど、キャッシュの生成に時間がかかります。
縮尺レベルの選択
キャッシュの縮尺レベルを選択する際には、マップを拡大表示すればするほど、マップ範囲をカバーするのに必要なタイルの数が増え、キャッシュの生成に時間がかかることに注意してください。縮尺分母を 2 で割るたびに、マップの矩形エリアをカバーするためのタイルの数が 4 倍になります。たとえば、縮尺が 1:500 の矩形マップに含まれるタイルの数は縮尺が 1:1,000 のマップの 4 倍になり、縮尺が 1:250 の矩形マップに含まれるタイルの数は縮尺が 1:1,000 のマップの 16 倍になります。
キャッシュ内のタイルの数の増え方を把握するには、ArcMap でマップを開きます。幅 256 ピクセル、高さ 256 ピクセルの領域にマップの 1 つのエリアを表示します。(このエリアは表示設定によって異なります。おそらく一辺が 2.5 ~ 3.25 インチ [6.35 ~ 8.26 cm] になるでしょう)。これが、デフォルト設定でキャッシュ タイル 1 枚がカバーするエリアです。次に、現在の縮尺の分母を 2 で割ります(たとえば最初に 1:40,000 の縮尺でマップを表示していた場合は、1:20,000 まで拡大表示します)。この縮尺では、同じエリアをカバーするのに 4 つのタイルが必要になります。縮尺分母を再び 2 で割ると、エリアをカバーするのに必要なタイルは 16 個になります。次の表は、元の矩形エリアをカバーするのに必要なタイルの数が、縮尺分母を 2 で割るたびに増えていく様子を示しています。最初の 1:32,000,000 の縮尺では、一辺が 256 ピクセルのタイル 1 つで米国西部のサイズのエリアをカバーできます。
第 1 レベル |
1:32,000,000 |
1 タイル |
第 2 レベル |
1:16,000,000 |
4 タイル |
第 3 レベル |
1:8,000,000 |
16 タイル |
第 4 レベル |
1:4,000,000 |
64 タイル |
第 5 レベル |
1:2,000,000 |
256 タイル |
第 6 レベル |
1:1,000,000 |
1,024 タイル |
第 7 レベル |
1:500,000 |
4,096 タイル |
第 8 レベル |
1:250,000 |
16,384 タイル |
第 9 レベル |
1:125,000 |
65,536 タイル |
第 10 レベル |
1:62,500 |
262,144 タイル |
第 11 レベル | 1:31,250 | 1,048,576 タイル |
サーバ リソース
キャッシュを操作するために割り当てられているサービス インスタンスの数が多ければ多いほど、キャッシュの生成時間は短縮されます。一般に、キャッシュに割り当てられた CPU につき約 3 つのインスタンスを処理できますが、より多くのインスタンスを処理できる CPU もあります。キャッシュに割り当てるインスタンスの数については、「マップ キャッシュを作成するためのサーバ リソースの割り当て」をご参照ください。
マップ上の情報の密度
キャッシュのサイズとキャッシュを作成するのに必要な時間は、どちらもマップ内の情報の密度に左右されます。色の変化やパターンの数が多いエリアでは、均一的なエリアよりもファイル サイズの大きいキャッシュ タイルが生成されます。たとえば、高解像度のラスタ イメージが使用されているマップでは、通常、タイルのファイル サイズが大きくなります。これは、ディスク上の元の画像サイズが原因ではなく、イメージ ピクセル間の色やパターンの変化が原因です。
同様に、レイヤの数が多く、ArcMap でのレンダリングにかなり時間のかかるマップの場合、一般に、キャッシュの作成にも時間がかかります。これは、サーバがタイルを作成するときに、縮尺レベルごとにマップの適切なレイヤを繰り返しレンダリングする必要があるためです。
マップ サービス描画エンジン
ArcGIS Server 9.3.1 より、マップ サービス定義(*.msd)ファイルを使用する高速描画エンジンが導入されました。ArcMap で [マップ サービス公開] ツールバーを使用してマップを公開するとき、*.msd ファイルが作成され、高速描画エンジンが使用されます。マップ ドキュメント(*.mxd)ファイルをソースとして使用して従来の方法でマップを公開する場合、高速描画エンジンは使用されません。
MSD ベースのサービスは、MXD ベースのサービスよりも速くタイルを作成する傾向があります。処理時間の差は、使用されているシンボルと、マップのサイズおよび縮尺に左右されます。
キャッシュの作成状況の監視
[マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)] ツールには、キャッシュの完了率を示すプログレス バーが含まれています。Windows エクスプローラを開き、キャッシュ ディレクトリに作成されているファイルおよびフォルダの数をチェックすることで、キャッシュの進行状況を確認することもできます。キャッシュの縮尺が大きければ大きいほど、描画にかかる時間が長くなります。キャッシュに選択された縮尺によっては、最後のレイヤだけで、他のすべてのレイヤの処理にかかった時間の合計よりも長くかかる可能性があります。
ハードウェアの準備
キャッシュは、GIS または Web サーバ層のコンピュータ、あるいは個別の SAN(ストレージ エリア ネットワーク)デバイスまたは NAS(ネットワーク接続ストレージ)デバイスに格納できます。リソースに余裕がある場合は、配置されている 1 つ以上のコンピュータをキャッシュの構築および格納のためだけに使用することも検討してください。
デフォルトでは、Windows がファイルを格納できる最小ディスク領域(クラスタ サイズ)は 4KB です。キャッシュにサイズが 4KB 未満のタイルが多数含まれている場合、キャッシュがディスクで使用するサイズは実際のファイルのサイズよりもはるかに大きいことに注意してください。この無駄に使用されるディスク領域を最小限にするには、ArcGIS Server 10 で導入されたコンパクト形式でキャッシュを格納するか、1KB や 512 バイトなどのより小さいクラスタ サイズでフォーマットされたディスクまたはパーティションにタイルを格納します。
タイルの多くがクラスタ サイズよりも小さくなるかどうかを判断する最も効率的な方法は、マップの代表的なエリアのテスト キャッシュを作成して、タイルのサイズがどれぐらいになるかを確認することです。ファイル サイズが小さくなる傾向があり、より小さいクラスタ サイズで格納するほうが適切なキャッシュのタイプは、次のとおりです。
- PNG 8 のキャッシュ。
- ベースマップをオーバーレイするために設計されたフィーチャが散在しているキャッシュ。
- タイルの寸法が比較的小さいキャッシュ(256 x 256 以下)。これには、Google Maps または Bing Maps をオーバーレイするキャッシュが含まれます。
- 縮尺が大きい、エリアが不毛地域である、データが不足しているなどの理由で空のタイルが多数あるキャッシュ。
上記の小さいファイル サイズに関する説明は、格納形式が [エクスプロード] である場合にのみ該当します。それに対し、連続するインデックス化されたデータのストリームでタイルを格納することにより無駄に使用されるディスク領域を最小限にするために [コンパクト] 格納形式が設計され、導入されました。詳細については、「使用可能なマップ キャッシュ プロパティ」をご参照ください。