チュートリアル: キャッシュされたマップ サービスの作成
高速なマップ サービスを作成するための最も効果的な方法は、それらをキャッシュすることです。マップ サービスをキャッシュするとき、サーバは定義した一連の縮尺レベルでマップを描画し、イメージを保存します。サーバがマップへのリクエストを受け取ったときにマップを再び描画するよりも、キャッシュされたイメージの 1 つを返すほうがはるかに高速です。
キャッシュは、ベースマップと頻繁に変更しないマップに適しています。まれにしか変更しないマップのために、キャッシュを更新するためのツールが提供されています。パフォーマンスを最適化するためには、できるだけ多くのレイヤをキャッシュする必要があります。マップを 2 つ作成し、キャッシュに適したレイヤとキャッシュに適さないレイヤを分離することで効率的な場合があります。たとえば、キャッシュされたマップ サービスをベースマップ レイヤから作成し、キャッシュされないマップ サービスを、リアルタイムに更新されるレイヤ、または解析やモデリングにより変化するレイヤから作成することができます。
効果的なマップ キャッシュを作成するためには、キャッシュを構築する前に入念な設計と作成作業を行う必要があります。このチュートリアルでは、ArcGIS Online / Bing Maps / Google マップ タイル スキーマを使用してキャッシュされるマップを計画および作成する手順について説明します。続いてマップ サービスを公開し、公開と同時にキャッシュを作成するように指定します。最後に、クライアント アプリケーションでキャッシュをテストします。
このチュートリアルは、組織内のキャッシュ作成作業に合わせて準備を整えるための練習用として用意されています。主に次の 3 つのセクションで構成されています。
チュートリアルを始める前に
現在 ArcGIS Server をインストールしただけの状態であれば、ArcMap でサーバに接続してサービスを公開する前に、いくつかの準備作業が必要です。
- ArcGIS Server サイトを構成する方法については、このヘルプ システムの「インストール後の作業」セクションをご参照ください。
- GIS リソースで参照されているデータをサーバで利用できるようにする方法については、「データを ArcGIS Server でアクセス可能にする」をご参照ください。
マップの作成
マップをキャッシュするとき、サーバは指定した一連の縮尺でマップを描画します。マップを一度描画したら、キャッシュを再作成するか更新しない限り、その表示方法を変更することはできません。これには 2 つの重要な意味があります。
- キャッシュするマップは各縮尺レベルで適切に表示される必要がある。紙の地図は 1 つの縮尺で適切に表示されるように設計されていますが、キャッシュされたマップはキャッシュするすべての縮尺に対応するように設計されている必要があります。
- 縮尺レベルの選択は非常に重要である。選択した縮尺が少なすぎると、情報を見逃している、または地図が適切に表示されていないとユーザが感じる可能性があります。選択した縮尺が多すぎたり、不要な縮尺を選択したりすると、キャッシュの作成に時間がかかり、より多くの格納領域が必要になります。逆に、キャッシュ時に使用するタイル スキーマがすでに組織で決定されている場合もあります。タイル スキーマは、作成時の縮尺レベルなど、キャッシュの特定のプロパティを決定します。
このチュートリアルでは、組織で ArcGIS Online / Bing Maps / Google マップ タイル スキーマが使用されていると想定します。次の手順に従って作業を開始します。
座標系の指定
このマップを設計するときには、ArcGIS Online、Google マップ、および Bing Maps と同じ WGS 1984 Web メルカトル(球体補正)座標系を使用するためのデータ フレームを設定します。
- ArcMap を起動して、新しい空のマップ ドキュメントを開きます。
- ArcMap のコンテンツ ウィンドウで、データ フレーム名(デフォルトは [レイヤ])を右クリックし、[プロパティ] を選択します。
- [座標系] タブをクリックします。
- [投影座標系] → [世界範囲の座標系(WGS 1984)] → [WGS 1984 Web メルカトル(球体補正)] の順にクリックします。
- [OK] をクリックします。
上記の手順は実際には不要です。ユーザが ArcGIS Online、Bing Maps、または Google マップのタイル スキーマでマップ キャッシュを作成しようとしていることが ArcGIS で検出されると、データはリアルタイムで WGS 1984 Web メルカトル(球体補正)に再投影されるからです。ここでは、この座標系を念頭においてマップを設計できるように、便宜上手順を説明しています。
ArcGIS Online、Bing Maps、および Google マップと同じ縮尺を使用するための ArcMap の設定
組織で使用するタイル スキーマは ArcGIS Online、Google マップ、および Bing Maps と同じであるため、マップの設計はこれらの縮尺でのみ行います。次のようにすると、縮尺を ArcMap の縮尺のドロップダウン リストに読み込むことができます。
- [標準] ツールバーで、縮尺のドロップダウン リストをクリックして [このリストをカスタマイズ] を選択します。
- [縮尺設定] ウィンドウで、[読み込み] をクリックして、[ArcGIS Online / Bing Maps / Google マップ] を選択します。
- [ズーム時にこれらの縮尺のみ表示] チェックボックスをオンにします。これにより、レイヤとフィーチャクラスは ArcGIS Online、Bing Maps、および Google マップの縮尺間隔でのみ表示されるようになります。このオプションは、これらの縮尺でキャッシュされるマップを作成するときに特に有効です。
- [OK] をクリックして、変更内容を適用します。これで、これらの一般的な Web マッピング サービスによって使用される縮尺セットを表示し、ドロップダウン リストを使ってそれらを簡単に切り替えることができます。
マップの設計
ここからが本当のマップ設計作業です。マップをキャッシュする利点の 1 つは、設計段階において、パフォーマンスへの影響を心配せずに、すべてのカートグラフィック ツールを自由に使用できることです。キャッシュを一度作成したら、キャッシュを再作成または更新しない限りは変更することができなくなるため、時間をかけて、適切に表示されるマップを設計するようにしてください。キャッシュのユーザも、サーバ上に格納されたマップの既存のイメージを表示しているだけなので、シンボルを変更することができません。
ArcGIS Online、Bing Maps、および Google マップのタイル スキーマに合わせてマップを設計しているため、縮尺間隔ごとにマップを設計することをお勧めします。これは、ラスタ データの場合は簡単です。縮尺を変更すると ArcMap がデータのリサンプリングを行うからです。これに対し、ベクタ データは各縮尺で同じサイズのポイントとラインでシンボル表示されるため、マップが煩雑になりすぎたり、まばらになりすぎたりしないよう、もう少し作業を行う必要があります。次に、マップにベクタ データが含まれている場合に使用できる設計手順を示します。
- ArcMap で、データセットを追加して最小の縮尺まで縮小します。必要に応じて、投影の問題を修正します。正しくキャッシュするためには、すべてのデータセットで WGS 1984 Web メルカトル(球体補正)投影を使用する必要があります。
-
この縮尺に合わせてレイヤのシンボルとラベルを設定します。
ヒント:
この縮尺で表示されるフィーチャを少なくするために、フィルタ設定を定義することを検討してください。たとえば、市区町村レイヤがある場合は、人口が 30 万人以上の市区町村だけを表示するフィルタを設定できます。
-
1 段階上の縮尺に拡大し、この縮尺に合わせてレイヤのシンボルとラベルを設定します。
ヒント:
別の縮尺ですでにシンボル表示したレイヤのシンボル、ラベル、またはフィルタ設定を変更したい場合は、マップにレイヤのコピーをもう 1 つ追加します。そのためには、ArcMap のコンテンツ ウィンドウでレイヤを右クリックし、[コピー] をクリックします。次に、データ フレーム名を右クリックし、[レイヤの貼り付け] をクリックします。
- グループ レイヤを作成して、レイヤのコピーを管理します。縮尺ごとにグループ レイヤを 1 つ作成するのが最も簡単です。そうすると、個々のレイヤではなくグループに縮尺依存を設定するだけで済みます。縮尺を名前に含めることもできます。
- グループ レイヤごとに縮尺範囲を設定して、キャッシュされた縮尺ごとに 1 つだけ表示されるようにします。キャッシュ縮尺ごとの許容値で縮尺範囲を設定します。たとえば、グループ レイヤの 1 つが 1:577,791 でキャッシュされる場合、1:866,686 よりも縮小したり、1:433,343 よりも拡大したりした場合にのみレイヤが表示されるように設定できます。
- 縮尺リスト内のすべての縮尺が処理されるまで、次の縮尺にズームして適切にシンボル表示する作業を続けます。
- マップを保存します。これでマップを公開する準備が整いました。
マップ サービスの公開
続いて、ArcMap を使用してマップ ドキュメントを ArcGIS Server に公開する手順について説明します。この処理を実行する間に、マップ キャッシュのスキーマを定義し、マップ ドキュメントのパフォーマンスを解析します。公開の際にキャッシュを作成するように指定します。次の手順に従って作業を開始します。
- ArcMap でマップ ドキュメントを開き、メイン メニューで [ファイル] → [共有] → [サービス] の順に選択します。
- [サービスとして共有] ウィンドウで、[サービスを公開] を選択します。[次へ] をクリックします。
- [サービスを公開] ダイアログ ボックスで、[ArcGIS Server に接続] をクリックして、サーバへの新しい接続を作成します。
- [ArcGIS Server サーバの追加] ウィンドウで、[GIS サービスを公開する] を選択します。[次へ] をクリックします。
- [サーバの URL] に、接続する ArcGIS Server サイトの URL を入力します。URL の例は http://gisserver.domain.com:6080/arcgis です。
- [サーバ タイプ] ドロップダウン リストから、[ArcGIS Server] を選択します。
- 公開プロセス中に、サービス定義ファイルが作成され、ローカルのディスクに一時的に保存されます。公開プロセスが完了すると、サービス定義がサーバにアップロードされ、ローカル ファイルは削除されます。このチュートリアルでは、デフォルトのステージング フォルダをそのまま使用します。
- ArcGIS Server で公開者以上の権限を持つ [ユーザ名] と [パスワード] を入力します。セキュリティのためにユーザとロールを設定していない場合は、1 つの選択肢として、サイトの作成時に定義したプライマリ サイト管理者のアカウントを使用します。入力したユーザ名とパスワードを保存するには、チェックボックスをオンのままにします。その後 [完了] をクリックします。
- 必要に応じて、[サービスを公開] ウィンドウでサービスの新しい名前を入力します。[次へ] をクリックします。
- デフォルトでは、ArcGIS Server のルート フォルダ(root)にサービスが公開されます。サービスはルート フォルダ以下のサブディレクトリに整理することができます。サービスを公開するフォルダを選択するか、サービスを格納する新しいフォルダを作成します。[続行] をクリックします。
- サービス エディタが表示されます。[サービス エディタ] を使用して、キャッシュされたマップ サービスでユーザが実行できる操作の選択、キャッシュ スキーマの定義、およびサーバがサービスを公開する方法の調整を行います。[キャッシュ] タブをクリックします。
- [キャッシュ] タブで [キャッシュのタイルを使用] を選択し、キャッシュを使用してマップ サービスを描画するように設定します。
- [タイル スキーマ] ドロップダウン リストで、[ArcGIS Online / Bing Maps / Google マップ] を選択します。
- [推定キャッシュ サイズ] を調べます。次に、[推定キャッシュ サイズ] が 50 MB 未満になるまで [詳細レベル] バーの [最大縮尺レベル] スライダを低く(左に移動)します。これにより、このチュートリアルに適切なテスト用のキャッシュ サイズになります。
-
このチュートリアルでは、他のすべてのデフォルト設定をそのまま使用します。使用するデフォルトの 1 つが、サービスの公開時にキャッシュを自動的に作成することであることに注意してください。これよりも大きなキャッシュについては、別の機会(夜間や週末など)に手動で作成することをお勧めします。
ヒント:
運用キャッシュの作成時には、この他にも調べてチューニングする必要のあるキャッシュ設定が数多くあります。[サービス エディタ] を使用してマップ キャッシュ プロパティを選択する方法については、「使用可能なマップ キャッシュ プロパティ」をご参照ください。
-
[統計情報の更新] をクリックします。マップ ドキュメントをサーバに公開できるかどうかが検証されます。
ヒント:
マップ サービスを構成するときに表示領域を広くするには、[サービス エディタ] の上部にある [折りたたみ] ボタンをクリックします。
-
[準備] ウィンドウでエラー を修正します。エラーの修正は、マップをサービスとして公開する前に行う必要があります。さらに必要であれば、警告メッセージと情報メッセージに従って問題を修正し、サービスのパフォーマンスと外観を改善します。これらの問題の解決の詳細については、「GIS リソースの分析」をご参照ください。
注意:
サーバが確実にデータを認識して使用できるように、フォルダとジオデータベースを ArcGIS Server サイトに登録することができます。以下の手順を続ける場合、未登録のフォルダまたはジオデータベースからマップ ドキュメントが参照するデータはすべて、公開時にサーバにコピーされます。これは、サーバがサービスで使用されているすべてのデータにアクセスできることを保証するための予防的な処置です。フォルダまたはジオデータベースを ArcGIS Server サイトに登録する手順については、「ArcGIS for Desktop を使用したデータの ArcGIS Server への登録」をご参照ください。
- 必要に応じて、[サービス エディタ] で [プレビュー] をクリックします。Web 上でマップがどのように表示されるかを確認することができます。詳細については、「マップのプレビュー」をご参照ください。
- マップ ドキュメント内のエラーを修正したら、[公開] をクリックします。
マップ サービスの公開がすぐに開始されます。公開の完了後、サーバではキャッシュ タイルの作成が開始され、キャッシュが作成されるまで続行されます。
最大縮尺、サーバを構成するハードウェア、データの範囲などの要因によっては、キャッシュの生成に時間がかかることがあります。このチュートリアル用に地理的に範囲の狭いシンプルなデータセットを選択すれば、キャッシュは 1 時間以内に完成するはずです。ジオプロセシング ステータス ウィンドウにキャッシュが完了した割合を示すプログレス バーが表示されます。
キャッシュのテスト
キャッシュが完成したら、Web アプリケーションでキャッシュをテストし、マップの表示および機能が正常であることを確認します。これは、タイルがアプリケーションによって認識され、正しく使用されることを確認する効果的な方法でもあります。
テストに使用する Web アプリケーションは単純なものでかまいません。マップ キャッシュのテストには、ArcGIS Server Services Directory を通して利用できる JavaScript ビューア アプリケーションを使用する方法が適しています。
- Web ブラウザで Services Directory に移動します。URL の例は http://gisserver.domain.com:6080/arcgis/rest/services です。
- サービス リストで、マップ サービスをクリックします。マップ サービスには「(MapServer)」が付加されます。サービスがフォルダに存在する場合は、そのフォルダに移動してサービスを選択します。
- サービスの名前、サービスの説明、およびレイヤのリストを示すページが表示されます。[View In: ArcGIS JavaScript] をクリックします。
- ウィンドウにシンプルな JavaScript Web アプリケーションが表示されます。ズーム レベル スライダのレベルはキャッシュ内の縮尺に対応します。
- マップ上で画面移動を行い、別のレベルにズームします。マップを画面移動したりズームしたりすると、マップ タイルが非常にすばやく表示されることがわかります。最初にキャッシュを定義したときに設定した [最大縮尺レベル] を超えてズームしないでください。そのレベルよりも大きい縮尺のタイルは作成されていません。
トラブルシューティング
アプリケーションがキャッシュを使用していないようであれば、次の点を確認してください。
- サービス パックのレベルが一致している(サービス パックを適用している場合)。
- ArcGIS Server アカウントに、サーバ キャッシュ ディレクトリの読み書きの権限が与えられている。
Mozilla Firefox を使って Web アプリケーションを表示する場合は、キャッシュ タイルが使用されているかどうかを簡単に確認できます。
- Web アプリケーション内を右クリックして、[ページの情報を表示] を選択します。
- [ページ情報] ウィンドウで、[メディア] ボタンをクリックします。
- リストに表示されたイメージを確認します。サーバのキャッシュ ディレクトリを参照する URL が表示されている場合は、キャッシュが使用されています。
参考トピック
- マップ キャッシュの作成の一般的な手順は、「マップ キャッシュの作成」で説明しています。
- 「マップ キャッシュのタイルを作成する方法」では、サイズの大きなキャッシュを作成する方法について説明しています。
- 3D でのキャッシュの詳細については、「グローブ キャッシュの仕組み」をご参照ください。