Skip To Content

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

このトピックの内容
複雑度: 中級データ要件: 独自データの使用目的: クライアント アプリケーションで利用できるキャッシュされたマップ サービスを作成します。

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

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

効果的なマップ キャッシュを作成するためには、キャッシュを構築する前に入念な設計と作成作業を行う必要があります。このチュートリアルでは、ArcGIS Online / Bing Maps / Google マップ タイル スキーマを使用してキャッシュされるマップを計画および作成する手順について説明します。続いてマップ サービスを公開し、公開と同時にキャッシュを作成するように指定します。最後に、クライアント アプリケーションでキャッシュをテストします。

このチュートリアルは、組織内のキャッシュ作成作業に合わせて準備を整えるための練習用として用意されています。主に次の 3 つのセクションで構成されています。

チュートリアルを始める前に

現在 ArcGIS Server をインストールしただけの状態であれば、ArcMap でサーバーに接続してサービスを公開する前に、いくつかの準備作業が必要です。

マップの作成

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

  • キャッシュするマップは各縮尺レベルで適切に表示される必要がある。 紙の地図は 1 つの縮尺で適切に表示されるように設計されていますが、キャッシュされたマップはキャッシュするすべての縮尺に対応するように設計されている必要があります。
  • 縮尺レベルの選択は非常に重要である。 選択した縮尺が少なすぎると、情報が抜けているか、地図が適切に表示されていないとユーザーが感じる可能性があります。選択した縮尺が多すぎたり、不要な縮尺を選択したりすると、キャッシュの作成に時間がかかり、より多くの格納領域が必要になります。逆に、キャッシュ時に使用するタイル スキーマがすでに組織で決定されている場合もあります。タイル スキーマは、作成時の縮尺レベルなど、キャッシュの特定のプロパティを決定します。

このチュートリアルでは、組織で ArcGIS Online / Bing Maps / Google マップ タイル スキーマが使用されていると想定します。次の手順に従って作業を開始します。

座標系の指定

このマップを設計する際には、ArcGIS Online、Google マップ、および Bing Maps と同じ WGS 1984 Web メルカトル (球体補正) 座標系を使用するためのデータ フレームを設定します。

  1. ArcMap を起動して、新しい空のマップ ドキュメントを開きます。
  2. ArcMap の [コンテンツ] ウィンドウで、データ フレーム名 (デフォルトは [レイヤー]) を右クリックし、[プロパティ] を選択します。
  3. [座標系] タブをクリックします。
  4. [投影座標系][世界範囲の座標系 (WGS 1984)][WGS 1984 Web メルカトル (球体補正)] の順にクリックします。
  5. [OK] をクリックします。
注意:

上記の手順は実際には不要です。ユーザーが ArcGIS Online、Bing Maps、または Google マップのタイル スキーマでマップ キャッシュを作成しようとしていることが ArcGIS で検出されると、データはリアルタイムで WGS 1984 Web メルカトル (球体補正) に再投影されるからです。ここでは、この座標系を念頭においてマップを設計できるように、便宜上手順を説明しています。

ArcGIS Online、Bing Maps、および Google マップと同じ縮尺を使用するための ArcMap の設定

組織で使用するタイル スキーマは、ArcGIS Online、Google マップ、および Bing Maps と同じであるため、マップの設計はこれらの縮尺でのみ行います。次のようにすると、縮尺を ArcMap の縮尺のドロップダウン リストに読み込むことができます。

  1. [標準] ツールバーで、縮尺のドロップダウン リストをクリックして [このリストをカスタマイズ] を選択します。
  2. [縮尺設定] ウィンドウで、[読み込み] をクリックして、[ArcGIS Online / Bing Maps / Google マップ] を選択します。
  3. [ズーム時にこれらの縮尺のみ表示] チェックボックスをオンにします。これにより、レイヤーとフィーチャクラスは、ArcGIS Online、Bing Maps、および Google マップの縮尺間隔でのみ表示できるようになります。このオプションは、これらの縮尺でキャッシュされるマップを作成するときに特に有効です。
  4. [OK] をクリックして、変更内容を適用します。これで、これらの一般的な Web マッピング サービスによって使用される縮尺セットを表示し、ドロップダウン リストを使ってそれらを簡単に切り替えることができます。

マップの設計

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

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

  1. ArcMap で、データセットを追加して最小の縮尺まで縮小します。必要に応じて、投影の問題を修正します。正しくキャッシュするためには、すべてのデータセットで WGS 1984 Web メルカトル (球体補正) 投影を使用する必要があります。
  2. この縮尺に合わせてレイヤーのシンボルとラベルを設定します。
    ヒント:

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

  3. 1 段階上の縮尺に拡大し、この縮尺に合わせてレイヤーのシンボルとラベルを設定します。
    ヒント:

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

  4. グループ レイヤーを作成して、レイヤーのコピーを管理します。縮尺ごとにグループ レイヤーを 1 つ作成するのが最も簡単です。そうすると、個々のレイヤーではなくグループに縮尺依存を設定するだけで済みます。縮尺を名前に含めることもできます。
  5. グループ レイヤーごとに縮尺範囲を設定して、キャッシュされた縮尺ごとに 1 つだけ表示されるようにします。キャッシュ縮尺ごとの許容値で縮尺範囲を設定します。たとえば、グループ レイヤーの 1 つが 1:577,791 でキャッシュされる場合、1:866,686 よりも縮小したり、1:433,343 よりも拡大したりした場合にのみレイヤーが表示されるように設定できます。
  6. 縮尺リスト内のすべての縮尺が処理されるまで、次の縮尺にズームして適切にシンボル表示する作業を続けます。
  7. マップを保存します。これでマップを公開する準備が整いました。

マップ サービスの公開

続いて、ArcMap を使用してマップ ドキュメントを ArcGIS Server に公開する手順について説明します。この処理を実行する間に、マップ キャッシュのスキーマを定義し、マップ ドキュメントのパフォーマンスを解析します。公開の際にキャッシュを作成するように指定します。次の手順に従って作業を開始します。

  1. ArcMap でマップ ドキュメントを開き、メイン メニューで [ファイル] > [共有] > [サービス] の順に選択します。
  2. [サービスとして共有] ウィンドウで、[サービスを公開] を選択します。[次へ] をクリックします。
  3. [サービスを公開] ダイアログ ボックスで、[ArcGIS Server に接続] ArcGIS Server の追加 をクリックして、サーバーへの接続を新規に作成します。
  4. [ArcGIS Server サーバーの追加] ウィンドウで、[GIS サービスを公開する] を選択します。[次へ] をクリックします。
  5. [サーバーの URL] に、接続する ArcGIS Server サイトの URL を入力します。URL の例は http://gisserver.domain.com:6080/arcgis です。
  6. [サーバー タイプ] ドロップダウン リストから、[ArcGIS Server] を選択します。
  7. 公開プロセス中に、サービス定義ファイルが作成されローカルのディスクに一時的に保存されます。公開プロセスが完了すると、サービス定義がサーバーにアップロードされ、ローカル ファイルは削除されます。このチュートリアルでは、デフォルトのステージング フォルダーをそのまま使用します。
  8. ArcGIS Server で公開者以上の権限を持つ [ユーザー名][パスワード] を入力します。セキュリティのためにユーザーとロールを設定していない場合は、1 つの選択肢として、サイトの作成時に定義したプライマリ サイト管理者のアカウントを使用します。入力したユーザー名とパスワードを保存するには、チェックボックスをオンのままにします。その後 [完了] をクリックします。
  9. 必要に応じて、[サービスを公開] ウィンドウでサービスの新しい名前を入力します。[次へ] をクリックします。
  10. デフォルトでは、ArcGIS Server のルート フォルダー (root) にサービスが公開されます。サービスはルート フォルダー以下のサブディレクトリに整理することができます。サービスを公開するフォルダーを選択するか、サービスを格納する新しいフォルダーを作成します。[続行] をクリックします。
  11. [サービス エディター] が表示されます。[サービス エディター] を使用して、キャッシュされたマップ サービスでユーザーが実行できる操作の選択、キャッシュ スキーマの定義、およびサーバーがサービスを公開する方法の調整を行います。[キャッシュ] タブをクリックします。
  12. [キャッシュ] タブで [キャッシュのタイルを使用] を選択し、キャッシュを使用してマップ サービスを描画するように設定します。
  13. [タイル スキーマ] ドロップダウン リストで、[ArcGIS Online / Bing Maps / Google マップ] を選択します。
  14. [推定キャッシュ サイズ] を調べます。次に、[推定キャッシュ サイズ] が 50 MB 未満になるまで [詳細レベル] バーの [最大縮尺レベル] スライダーを低く (左に移動) します。これにより、このチュートリアルに適切なテスト用のキャッシュ サイズになります。
  15. このチュートリアルでは、他のすべてのデフォルト設定をそのまま使用します。使用するデフォルトの 1 つが、サービスの公開時にキャッシュを自動的に作成することであることに注意してください。これよりも大きなキャッシュについては、別の機会 (夜間や週末など) に手動で作成することをお勧めします。
    ヒント:

    運用キャッシュの作成時には、この他にも調べてチューニングする必要のあるキャッシュ設定が数多くあります。[サービス エディター] を使用してマップ キャッシュ プロパティを選択する方法については、「使用可能なマップ キャッシュ プロパティ」をご参照ください。

  16. [統計情報の更新] 統計情報の更新 をクリックします。マップ ドキュメントをサーバーに公開できるかどうかが検証されます。
    ヒント:

    マップ サービスを構成する際に表示領域を広くするには、[サービス エディター] の上部にある [折りたたみ] 折りたたみ ボタンをクリックします。

  17. [準備] ウィンドウで [エラー] エラー を修正します。エラーの修正は、マップをサービスとして公開する前に行う必要があります。さらに必要であれば、警告メッセージと情報メッセージに従って問題を修正し、サービスのパフォーマンスと外観を改善します。これらの問題の解決方法の詳細については、「GIS リソースの分析」をご参照ください。
    注意:

    サーバーが確実にデータを認識して使用できるように、フォルダーとジオデータベースを ArcGIS Server サイトに登録することができます。以下の手順を続ける場合、未登録のフォルダーまたはジオデータベースからマップ ドキュメントが参照するデータはすべて、公開時にサーバーにコピーされます。これは、サーバーがサービスで使用されているすべてのデータにアクセスできることを保証するための予防的な処置です。フォルダーまたはジオデータベースを ArcGIS Server サイトに登録する手順の詳細は、「ArcGIS for Desktop を使用したデータの ArcGIS Server への登録」をご参照ください。

  18. 必要に応じて、[サービス エディター][プレビュー] プレビュー をクリックします。Web 上でマップがどのように表示されるかを確認することができます。詳細については、「マップのプレビュー」をご参照ください。
  19. マップ ドキュメント内のエラーを修正したら、[公開] 公開 をクリックします。

マップ サービスの公開がすぐに開始されます。公開の完了後、サーバーではキャッシュ タイルの作成が開始され、キャッシュが作成されるまで続行されます。

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

キャッシュのテスト

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

テストに使用する Web アプリケーションは単純なものでかまいません。マップ キャッシュのテストには、ArcGIS Server Services Directory を通して利用できる JavaScript ビューアー アプリケーションを使用する方法が適しています。

  1. Web ブラウザーで Services Directory に移動します。URL の例は http://gisserver.domain.com:6080/arcgis/rest/services です。
  2. サービス リストで、マップ サービスをクリックします。マップ サービスには「(MapServer)」が付加されます。サービスがフォルダーに存在する場合は、そのフォルダーに移動してサービスを選択します。
  3. サービスの名前、サービスの説明、およびレイヤーのリストを示すページが表示されます。[View In: ArcGIS JavaScript]をクリックします。ウィンドウにシンプルな JavaScript Web アプリケーションが表示されます。
  4. マップ上で画面移動を行い、別のレベルにズームします。マップを画面移動したりズームしたりすると、マップ タイルが非常にすばやく表示されることがわかります。

トラブルシューティング

アプリケーションがキャッシュを使用していないと思われる場合は、ArcGIS Server アカウントにサーバー キャッシュ ディレクトリの読み書き権限が付与されていることを確認します。

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

  1. Web アプリケーション内を右クリックして、[ページの情報を表示] を選択します。
  2. [ページ情報] ウィンドウで、[メディア] ボタンをクリックします。
  3. リストに表示されたイメージを確認します。サーバーのキャッシュ ディレクトリを参照する URL が表示されている場合は、キャッシュが使用されています。

参考トピック