チュートリアル: キャッシュされたマップ サービスの作成

難易度: 中級 データ要件 独自のデータを使用

高速なマップ サービスを作成するための最も効果的な方法は、それらをキャッシュすることです。マップ サービスをキャッシュするとき、サーバは定義した一連の縮尺レベルでマップを描画し、イメージを保存します。サーバがマップへのリクエストを受け取ったときにマップを再び描画するよりも、キャッシュされたイメージの 1 つを返すほうがはるかに高速です。

キャッシュは、ベースマップと頻繁に変更しないマップに適しています。たまにしか変更しないマップのために、キャッシュを更新するためのツールが用意されています。パフォーマンスを最適化するためには、できるだけ多くのレイヤをキャッシュする必要があります。マップを 2 つ作成して、キャッシュに適したレイヤとキャッシュに適さないレイヤを分離すると効率的である場合があります。たとえば、キャッシュされたマップ サービスをベースマップ レイヤから作成し、キャッシュされないマップ サービスを、リアルタイムに更新されるレイヤ、または解析やモデリングにより変化するレイヤから作成することができます。

効果的なマップ キャッシュを作成するためには、キャッシュを構築する前に入念な設計と作成作業を行う必要があります。このチュートリアルでは、キャッシュされるマップの計画と作成の手順について説明します。続いて、マップ サービスを作成してキャッシュします。最後に、さまざまなクライアント アプリケーションでキャッシュをテストします。

このチュートリアルに取り組む際は、市区町村など、かなり狭い範囲のシンプルなデータセットを選択してください。このチュートリアルは、組織内のキャッシュ作成作業に合わせて準備を整えるための練習用として用意されています。説明と手順に細心の注意を払う必要はありますが、最初から完璧にできなくても心配はいりません。適切なキャッシュを設計するには練習が必要です。

このチュートリアルは、次の 4 つのセクションで構成されています。

マップの作成

マップをキャッシュするとき、サーバは指定した一連の縮尺でマップを描画します。マップを一度描画したら、キャッシュを再作成するか更新しない限り、その表示方法を変更することはできません。これには 2 つの重要な意味があります。

キャッシュ時に使用するタイル スキーマはすでに組織で決定されているかもしれません。タイル スキーマは、作成時の縮尺レベルなど、キャッシュの特定のプロパティを決定します。

縮尺の選択

このチュートリアルでは、独自のタイル スキーマを作成するため、縮尺をいくつか選択する必要があることを前提とします。マップの適切な縮尺を判断するには、次の手順に従います。

手順:
  1. マップ ドキュメントを開き、データセットを追加します。マップが見栄え良く表示されるように初期状態のシンボル表示をいくつか変更しますが、この時点ではあまり詳細にこだわらないようにし、マップを保存します。
  2. しばらくデータを操作してみます。ユーザが最もよく表示するエリアで画面移動やズームを実行します。データを操作しながら、表示している縮尺を覚えておきます。
  3. ユーザがこのマップを表示するために必要だと思われる最大縮尺に拡大表示します。端数を少し切り捨てて、この縮尺を書き留めておきます。
  4. 現在表示している縮尺を 2 で割ります(縮尺は実際は分数なので、2 で割ると分母が 2 倍になります)。たとえば、1:40,000 で表示している場合は、1:80,000 にズームします。これを行う最も簡単な方法は、[縮尺] ドロップダウン リストに縮尺を直接入力することです。新しい縮尺を書き留め、マップを少し調べます。
  5. ユーザがそれ以上縮小する必要がない段階に達するまで、縮尺を 2 で割り、結果を書き留める作業を続けます。これで、縮尺のリストは完成です。

注意: 縮尺は必ずしも 2 で割る必要はなく、他の数字を使用することもできます。しかし、ほとんどの場合は、2 で割ると適度にズームします。

ArcMap での縮尺の設定

縮尺をいくつか決めた後は、各縮尺でマップが適切に表示されるようにします。マップを作成するとき、場合によっては、これらの縮尺間での切り替えを頻繁に行う必要があります。この切り替えを容易にするために、ArcMap のドロップダウン リストに縮尺を入力することができます。

手順:
  1. ArcMap で [縮尺] ドロップダウン リストをクリックします。
  2. [<このリストをカスタマイズ...>] をクリックします。
    縮尺リスト
  3. 指定した縮尺だけをリストに表示したい場合は、[すべて削除] をクリックします。
  4. 表示する縮尺の 1 つをボックスに入力し、[追加] をクリックします。この操作を繰り返して、表示する縮尺をすべて追加したら、[OK] をクリックします。
    [縮尺設定] ダイアログ ボックス

マップの作成

ここからが本当のマップ設計作業です。マップをキャッシュする利点の 1 つは、設計段階において、パフォーマンスへの影響を心配せずに、すべてのカートグラフィック ツールを自由に使用できることです。キャッシュを一度作成したら、キャッシュを再作成または更新しない限りは変更することができなくなるため、時間をかけて、適切に表示されるマップを設計するようにしてください。キャッシュのユーザも、サーバ上に格納されたマップの既存のイメージを表示しているだけなので、シンボルを変更することができません。

キャッシュするように決めた各縮尺でマップを設計すると効果的です。これは、ラスタ データの場合は簡単です。縮尺を変更すると ArcMap がデータのリサンプリングを行うからです。これに対し、ベクタ データは各縮尺で同じサイズのポイントとラインでシンボル表示されるため、マップが煩雑になりすぎたり、まばらになりすぎたりしないよう、もう少し作業を行う必要があります。次に、マップにベクタ データが含まれている場合に使用できる設計手順を示します。

手順:
  1. ArcMap でマップを開き、最小縮尺まで縮小します。
  2. この縮尺に合わせてレイヤのシンボルとラベルを設定します。

    ヒント: この縮尺で表示されるフィーチャを少なくするために、フィルタ設定を定義することを検討してください。たとえば、市区町村レイヤがある場合は、人口が 30 万人以上の市区町村だけを表示するフィルタを設定できます。

    [レイヤ プロパティ] ダイアログ ボックスの [フィルタ設定] タブの下にある [検索条件設定] ダイアログ ボックス
  3. 次に大きい縮尺に拡大表示します。
  4. この縮尺に合わせてレイヤのシンボルとラベルを設定します。

    ヒント: 別の縮尺ですでにシンボル表示したレイヤのシンボル、ラベル、またはフィルタ設定を変更したい場合は、マップにレイヤのコピーをもう 1 つ追加します。そのためには、ArcMap のコンテンツ ウィンドウでレイヤを右クリックし、[コピー] をクリックします。次に、データ フレーム名を右クリックし、[レイヤの貼り付け] をクリックします。

    レイヤのコピーの数が増えた場合は、グループ レイヤを使ってコピーを管理できます。縮尺ごとにグループ レイヤを 1 つ作成するのが最も簡単です。そうすると、個々のレイヤではなくグループに縮尺依存を設定するだけで済みます。縮尺を名前に含めることもできます。たとえば、次の図のようなグループ レイヤ階層になります。

    コンテンツ ウィンドウのグループ レイヤ階層

    各レイヤの縮尺範囲を設定して、キャッシュされた縮尺ごとに 1 つだけ表示されるようにする必要があります。キャッシュ縮尺ごとの許容値で縮尺範囲を設定します。たとえば、1:1,500,000 でキャッシュされる上の図の Roads レイヤを使用して、1:1,000,000 よりも縮小したり、1:2,000,000 よりも拡大したりした場合にのみレイヤが表示されるように設定できます。

  5. リスト内のすべての縮尺が処理されるまで、次の縮尺にズームして適切にシンボル表示する作業を続けます。
  6. マップを保存して、ArcMap を閉じます。これでマップを公開する準備が整いました。

マップ サービスの公開

キャッシュを作成するには、まずマップをサービスとして公開する必要があります。これを行うには、ArcGIS Server Manager またはカタログ ウィンドウを使用できます。キャッシュの作成にはカタログ ウィンドウを使用するので、以下の手順でもカタログ ウィンドウを使用することにします。また、キャッシュ ツールを起動する機能は、ArcGIS Desktop でのみ使用できます。

Manager と ArcCatalog には、サービスを作成する方法が 2 つあります。[GIS リソースの公開] ウィザードでは、サービスを稼動させるために入力する必要のある情報は最小限です。このウィザードは、他のすべてのサービス プロパティに対してデフォルト値を設定します。これに対し、[新規サービスの追加] ウィザードでは、サービスを公開する前に高度なプロパティを設定できます。以下の手順では、実行インスタンスのデフォルト数を増やせるように、[新規サービスの追加] ウィザードを使用する方法を示します。インスタンスの数が増えると、キャッシュを作成するときに、より多くのプロセッサ リソースを使用できるようになります。

手順:
  1. ArcCatalog を開いて、GIS サーバへの管理者接続を作成します。このステップについて不明な点がある場合は、「ArcCatalog での ArcGIS Server への管理者接続の作成」をご参照ください。
  2. 接続を右クリックし、[新規サービスの追加] をクリックします。
  3. [名前] にサービスの名前を入力し、[次へ] をクリックします。
  4. 作成したマップ ドキュメントを参照して、[マップ ドキュメント] テキスト ボックスの値を設定します。ArcGIS SOC(Server Object Container)アカウントには、このドキュメントとそれが参照するデータを読み取る権限が必要です。
  5. [サーバ キャッシュ ディレクトリ] ドロップダウン リストを使用して、キャッシュを作成するディレクトリを選択します。このリストが空の場合は、作業を進める前にサーバ キャッシュ ディレクトリを追加する必要があります。詳細については、「サーバ ディレクトリの作成」をご参照ください。
  6. サーバ キャッシュ ディレクトリを選択したら、[次へ] をクリックします。再び [次へ] をクリックして、サービスのデフォルトのケーパビリティを選択します。
  7. ウィザードのこのページでは、サービスのプール モデルとインスタンス数を選択できます。キャッシュされたサービスの場合は、常にデフォルトの [プールする] を選択してください。インスタンスの最大数を 2 以外に変更することは可能です。

    ほとんどの場合、CPU はキャッシュ時に少なくとも 3 つのインスタンスを処理できます。より高性能なコンピュータ、または複数の SOC コンピュータ構成では、さらに多くのインスタンスに対処できます。キャッシュの作成にサーバ リソースをすべて使用したい場合、または ArcGIS Server システムの規模が非常に大きい場合は、インスタンスの最大数のデフォルト値を引き上げてください。

    [新規サービスの追加] ウィザードの [プール] タブ

    キャッシュの作成には時間がかかる可能性があるため、デフォルトのタイムアウト値を引き上げる必要があるように思えますが、実際には、キャッシュ ツールはタイルの作成を開始する前にタイムアウト値を非常に大きな値にリセットするため、ここでデフォルトのタイムアウト値を変更する必要はありません。

  8. インスタンスの最大数を変更したら、[次へ] をクリックし、再び [次へ] をクリックして、ウィザードのすべてのデフォルト値をそのまま使用します。最後のページで [はい、すぐに起動します] を選択し、[完了] をクリックしてサービスを作成します。
  9. ArcCatalog の [プレビュー] タブを使用して、サービスが正常に表示されることを確認します。

キャッシュの作成

これでマップ サービスが実行されるようになったので、キャッシュを作成することができます。キャッシュを開始するには、次の手順に従います。

手順:
  1. ArcCatalog または ArcMap のカタログ ウィンドウのカタログ ツリーでサービスを見つけます。サービスを右クリックし、[サービス プロパティ] をクリックします。
  2. [キャッシュ] タブをクリックします。ここで、キャッシュ プロパティのいくつかにアクセスできます。このタブを使用して、キャッシュ タイルの作成を開始する前にタイル スキーマを構成します。
  3. [以下で定義したキャッシュのタイルを使用して描画] でマップ サービスを描画することを選択します。
  4. [縮尺] テキスト ボックスに縮尺の 1 つを入力し、[追加] をクリックします。リストにその縮尺が表示されます。
  5. 縮尺を入力して [追加] をクリックする作業をリストの最後に達するまで続けます。
  6. [タイル フォーマット] でキャッシュ タイルの形式を [JPEG] に変更します。この形式では小さいタイルが作成されるので、キャッシュを格納するために必要なディスク領域が少なくなります。また、クライアントがより短時間でタイルを読み込むことができます。
    [マップ サービス プロパティ] ダイアログ ボックスの [キャッシュ] タブ

    注意: このステップでは、このキャッシュを別のサービスの上に重ねないことを前提とします。道路ネットワークや境界ネットワークなどのオーバーレイ サービスの場合は、[PNG8] または [PNG32] を選択してください。オーバーレイ サービスが 256 色より多い場合は、[PNG32] を使用してください。

  7. これで、タイル スキーマの構成が完了しました(他のプロパティにはデフォルト値を使用します)。タイルの作成を開始します。[タイルの作成] をクリックします。
  8. 必須情報の多くがすでに入力された状態で [マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)] ツールが表示されます。このツールを使ってタイルを作成します。ツールのパラメータを確認します。
  9. [更新方法] 設定を [Recreate All Tiles](すべてのタイルを再作成)に変更します。これはキャッシュの作成と更新に最もよく使用される設定です。
  10. 必要に応じて、[マップ サービスのインスタンス数] 設定を変更します。この数字が、キャッシュの作成に割り当てるサーバ リソースの目安となります。
    [マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)] ツール内の [更新モード] 設定

    この設定の詳細については、「キャッシュを作成するためのサーバ リソースの割り当て」をご参照ください。

  11. ツールの必須プロパティの入力が完了したので、[OK] をクリックしてキャッシュの生成を開始します。

最大縮尺やデータの範囲などの要因によっては、キャッシュの生成にしばらくかかることがあります。このチュートリアル用に地理範囲の狭いシンプルなデータセットを選択すれば、キャッシュは 1 時間以内に完成するはずです。ジオプロセシング ステータス ウィンドウにキャッシュが完了した割合を示すプログレス バーが表示されます。

キャッシュのテスト

キャッシュが完成したら、Web マッピング アプリケーションでキャッシュをテストし、マップが正常に表示され、機能することを確認できます。これは、タイルがアプリケーションによって認識され、正しく使用されることを確認する効果的な方法でもあります。

テストに使用する Web アプリケーションは単純なものでかまいません。テスト アプリケーションを作成する最適な方法は、ArcGIS Server Manager を使用することです。

手順:
  1. Manager の [ホーム] タブをクリックし、[Web アプリケーションの作成] をクリックします。
  2. [名前] に Web アプリケーションの名前を入力し、必要に応じて [説明] に説明を入力します。[次へ] をクリックします。
  3. このページでは、[マップ リソースの追加] をクリックします。次に、キャッシュされたマップ サービスを選択し、マップに追加します。このステップについて不明な点がある場合は、「」と「Manager の Web アプリケーションへのマップ リソースの追加」をご参照ください。
  4. これで、ウィザードの最も重要な部分が完了しました。[完了] をクリックし、アプリケーションの他の設定にはデフォルト値をそのまま使用します。
  5. 完成した Web アプリケーションが新しいウィンドウで表示されます。ズーム レベル スライダのレベルはキャッシュ内の縮尺に対応します。
    ズーム レベル スライダ
  6. マップ上で画面移動を行い、別のレベルにズームします。マップを画面移動したりズームしたりすると、マップ タイルが非常にすばやく表示されることがわかります。

トラブルシューティング

アプリケーションがキャッシュを使用していないようであれば、次の点を確認してください。

  • サービス パックのレベルが一致している(サービス パックを適用している場合)。
  • マルチレイヤ キャッシュの代わりに、融合キャッシュを作成している。デフォルトは融合キャッシュであり、これらの手順を正しく実行すれば、融合キャッシュが作成されます。
  • SOC アカウントに、サーバ キャッシュ ディレクトリの読み取り書き込みの権限が与えられている。

Mozilla Firefox を使って Web アプリケーションを表示する場合は、キャッシュ タイルが使用されているかどうかを簡単に確認できます。

手順:
  1. [ツール] をクリックし、[ページの情報] をクリックします。
  2. [メディア] タブをクリックします。
  3. リストに表示されたイメージを確認します。サーバ キャッシュ ディレクトリ(またはそれに関連付けられている仮想ディレクトリ)からのイメージが表示されている場合は、キャッシュが使用されていることがわかります。
    Mozilla Firefox の [ページの情報] ダイアログ ボックスにある [メディア] タブ

参考トピック


3/6/2012