Web 上でマップを利用できるようにするには、ArcMap でマップを作成して ArcGIS Server サイトで公開した後に、クライアント アプリケーションでそのマップ サービスを使用する必要があります。マップ サービスを使ってできることの多くは、初期の作成段階で準備する必要があります。このトピックでは、サイトに公開するマップを作成する際の注意事項について説明します。
一般的なヒント
次のヒントは、ArcGIS Server サイトで公開するすべてのマップ ドキュメントにおいて重要です。
データ フレーム名やレイヤー名での英数字以外の文字 (スペースを除く) の使用は避けてください。サービスを公開するときに、データ フレーム名およびレイヤー名は、URL、キャッシュ フォルダー名、および Web サービス リクエスト パラメーターで使用される場合があります。英数字以外の文字がこれらに使用された場合、正しく解釈されない恐れがあります。サービスが OGC 仕様によって公開される場合、特に注意してください。たとえば、WMS サービスで使用できない文字の一覧については、「使用可能な WMS サービス プロパティ」をご参照ください。
ドキュメントのプロパティに機密情報を設定しないでください。ArcGIS Server には Services Directory が備わっています。このアプリケーションを使用して、サーバーのコンテンツを参照し、サービスに関するメタデータを取得することができます。Services Directory を利用して、すべてのユーザーがサービスを表示できるようにする場合でも (ArcGIS Server のデフォルト構成)、マップ ドキュメントに明らかにしたくない機密情報が含まれている場合があります。表示される情報を確認するには、マップ ドキュメントを ArcMap で開き、メイン メニューで [ファイル] > [マップ ドキュメント プロパティ] の順に選択します。マップを公開するときに [サービス エディター] を使用して、作成者のユーザー名やコメントなどの表示したくない情報を削除することができます。マップ サービスの目的や対象ユーザーを反映するように、必要に応じて情報を編集してください。
すべてのマップ サービス レイヤーをマップ ドキュメントから削除します。サービス レイヤーが埋め込まれているマップ ドキュメントを公開することは、許可されていません。
データ フレームの背景色は、デフォルトの NULL 背景色のままにせず、明示的に設定してください。マップ サービスは背景色を透過表示として扱うため、マップ内の別の場所で使用されている色は選択しないでください。マップの白い部分が透過表示されないようにするには、背景色を白に近い色に設定することができます (RGB 254、255、255 など)。
[データ フレーム プロパティ] ダイアログ ボックスの [フレーム] タブで背景色を設定できます。
レイヤー ID とテーブル ID を保存するためのマップ ドキュメントの設定
旧バージョンの ArcGIS Server では、ソース マップ ドキュメントの変更後、マップおよびフィーチャ サービスのレイヤー ID とテーブル ID は保存されませんでした。更新された ID を使用するように、レイヤーとテーブルを使用するすべてのクライアント アプリケーションを更新する必要がありました。クライアント アプリケーションの更新を避けるために、以下の説明に従って、レイヤー ID とテーブル ID を保存するようにマップ ドキュメントを構成することをお勧めます。
- ArcMap でソース マップ ドキュメント (MXD) を開きます。
- 目的のデータ フレームの名前を右クリックし、[プロパティ] を選択します。
- [データ フレーム プロパティ] ダイアログ ボックスで、[一般] をクリックし、[マップ サービス公開に一意の数値 ID の割り当てを許可] オプションをオンにします。
- [OK] をクリックします。ArcMap は、連続する ID をデータ フレーム内のレイヤーとテーブルに自動的に割り当てます。
- 必要に応じて、次のように独自のカスタム ID をレイヤーとテーブルに割り当てます。
- カスタム ID を割り当てるレイヤーまたはテーブルを右クリックし、[プロパティ] を選択します。
- [レイヤー プロパティ] ダイアログ ボックスで [一般] をクリックし、[レイヤー ID] フィールドで目的の整数を割り当てます。
注意:
この ID は任意の整数にすることができ、連続している必要はなく、各整数間にギャップがあっても構いません。
- [OK] をクリックします。
- 上のサブステップを、目的のレイヤーまたはテーブルごとに繰り返します。
- マップ ドキュメントを公開するか、既存のサービスを上書きします。
これで、レイヤー ID は公開後に保存されるようになりました。ソース マップ ドキュメントを変更した後にクライアント アプリケーションを変更する必要はなくなります。
パフォーマンスを向上させるためのマップ キャッシュ
変更される可能性の低いデータがマップ内に含まれている場合は、パフォーマンスを向上させるためにマップをキャッシュすることを検討してください。マップをキャッシュすると、特定の縮尺レベルでレンダリングされた一連のマップ イメージを作成します。実際のキャッシュは、マップをサービスとして公開した後に実行されます。ただし、マップをキャッシュすることがわかっている場合、これはマップの作成プロセスに影響します。キャッシュ対象のすべての縮尺で適切に表示されるようにマップを作成します。キャッシュされたタイルはデータの単なる”絵”にすぎず、実際のレンダリング エンジンとラベリング エンジンはキャッシュの作成後には使用されないため、カートグラフィック ツールを使用してもパフォーマンスへの影響はありません。
マップをキャッシュできない場合、レンダリング エンジンとラベリング エンジンはマップ サービスのパフォーマンスに影響を与えます。詳細については、「マップ キャッシュとは」をご参照ください。
キャッシュされていないマップのパフォーマンスに関するヒント
マップ キャッシュは必要に応じて作成してください。ただし、頻繁に変化するデータが大量にある場合は、マップ キャッシュを作成して維持することは不可能かもしれません。そのような場合は、次のヒントを参考にして、マップのパフォーマンスを改善することができます。マップ ドキュメントを公開するときに、[サービス エディター] を使用してマップを解析することができます。これにより、マップ ドキュメントのパフォーマンスを向上させる方法を簡単に判定できます。
データ レイヤーに縮尺範囲を指定したレンダリングを設定する: レイヤーを表示する縮尺範囲を指定して、マップが縮小表示されたときに不要なレイヤーが描画されないようにします。データ量が多いレイヤーまたは詳細データのレイヤーを描画させるのは、マップが大縮尺に拡大される場合だけでよいでしょう。
不要なレイヤーとデータ フレームを削除する: レイアウト ビューとデータ ビューの両方をチェックし、マップの目的とは無関係なデータ フレームとレイヤーがマップ ドキュメントに含まれていないことを確認します。たとえば、レイアウト ビューにサービスを使用するどのアプリケーションでも表示されないデータ フレームが含まれている場合は、そのデータ フレームを削除します。
フィルター設定を適切に使用する: フィルター設定を使用してマップ上のデータ量を制限すれば、マップを高速に描画できます。たとえば、ある県のマップを作成していて、フィーチャクラスに国全体のデータが含まれる場合は、フィルター設定を使用するとその県の境界線内にあるフィーチャだけを表示し、県外のフィーチャを非表示にすることができます。ただし、フィルター設定が複雑すぎると、パフォーマンスが低下する可能性があります。
レイヤー シンボルを単純化する: 複雑なシンボルは単純なシンボルよりも描画に時間がかかります。可能であれば、シンプル ライン シンボルとシンプル塗りつぶしシンボルを使用し、マルチレイヤー シンボル、複雑な破線パターン、ハッシュ ライン、アウトラインを含むシンボルは避けてください。高速道路標識シンボルは描画パフォーマンスを遅くさせることがあります。
ピクチャ塗りつぶしシンボルを使用する際は、BMP ではなく EMF ファイルを使ってパフォーマンスを改善することができます。
ESRI_Optimized スタイルを使用すると、マップ内のシンボルを簡単に単純化することができます。このスタイルには、パフォーマンスに優れ、デフォルトの Esri スタイルを使用した場合に近い表示を保つ、ライン シンボルと塗りつぶしシンボルが含まれます。このスタイルの操作方法については、ArcGIS ヘルプの「スタイル コンテンツの整理」をご参照ください。
キャッシュされたマップ サービスを作成する場合、マップを単純化しても、完成したマップの描画速度は変わりません。マップの単純化が影響を与えるのはキャッシュの作成速度だけです。キャッシュの作成時間に問題がない場合は、シンボルの単純化を考慮する必要がありません。
ラベルではなくアノテーションを使用する: ラベルの配置を決定するには計算が必要になるので、通常はアノテーション レイヤーを使用するほうが高速です。
ラベルを単純化する: マップにラベルが含まれている場合は、ラベルとフィーチャの重なり回避のウェイトを控えめに使用します。ハロー、オフセット、およびその他のラベル効果もパフォーマンスを低下させます。
ラベルに縮尺依存のレンダリングを設定する: マップを縮小表示するときに描画が必要なラベルの数が増えると、それだけ時間がかかります。マップ ドキュメントを調べて、小さい縮尺で表示する必要のないラベルかどうかを判断します。
データとマップで同じ座標系を使用する: ソース データとマップ ドキュメントの座標系が異なる場合、データをリアルタイムに投影変換する必要があり、それによってパフォーマンスが低下します。パフォーマンスを最適化するために、データとマップ ドキュメントの両方で同じ座標系を使用してください。それが不可能な場合は、リアルタイムに投影変換する必要があるレイヤーに適切な地理座標変換が適用されるようにしてください。
ブラウザーがキャッシュ内の応答を使用する期間を調整する: マップを Web ブラウザーで表示するときに、サーバーからのマップ イメージの応答がブラウザーによってキャッシュされ、一定期間再利用されます。アプリケーションでのマップ サービスと関連データの使用方法に応じて、ブラウザーがキャッシュ内の応答を使用する期間を調整することを検討してください。詳細については、次の「マップ サービスの表示パフォーマンスを改善する」セクションをご参照ください。
マップ サービスの表示パフォーマンスを改善する
クライアントが ArcGIS Server にリクエストを送信してマップ サービスを表示するときに、通常はサーバーからの応答がブラウザーによって一定期間キャッシュされ、再利用されます。この動作によって、ArcGIS Server はマップ サービスの最高の表示パフォーマンスを実現できます。ただし、アプリケーションでのマップ サービスと関連データの使用方法に応じて、ブラウザーがキャッシュ内の応答を使用する期間を調整することを検討してください。これを行うには、cacheControlMaxAge というプロパティをサービスの JSON (JavaScript Object Notation) に追加します。
cacheControlMaxAge プロパティの使用方法
ArcGIS Server マップ サービスの応答には、エンティティ タグ (ETag) ヘッダーとキャッシュ コントロール ヘッダーが含まれています。ETag ヘッダーの値は、応答の一意の識別子です。キャッシュ コントロール ヘッダーには、キャッシュから応答を再利用できる最大期間に関する情報をブラウザーに提供する max-age 値が含まれています。この値は、cacheControlMaxAge プロパティによって制御されます。
リクエストが繰り返された場合、キャッシュの最大期間の期限が切れていなければ、ブラウザーは、サーバーにリクエストを送信しないで、キャッシュされている応答を使用します。キャッシュの最大期間の期限が切れている場合、ブラウザーは、リクエストをサーバーに送信し、キャッシュ内の応答に対応する ETag 値を使用して IF-NONE-MATCH ヘッダーを設定する必要があります。ArcGIS Server は、リクエストを評価し、ETag 値を使用して、応答が変更されているかどうかを判定します。サーバーからの応答がブラウザー上のコピーと異なる場合、サーバーはまったく新しい応答をブラウザーに送信します。応答がブラウザー上のコピーと同一である場合、サーバーは、キャッシュ内の応答を引き続き使用するようにブラウザーに警告します。
cacheControlMaxAge プロパティの値の定義
ArcGIS Server 管理者は、cacheControlMaxAge プロパティを定義して、ブラウザーがキャッシュされた応答を使用できる期間を指定できます。ArcGIS Server が完全な応答を送信する必要性を軽減することによって、ブラウザーのキャッシュを効率化し、アプリケーションを最適化し、ネットワーク帯域幅を節約することができます。
マップ サービスのデフォルト値は 0 です。これは、ブラウザーが必ずリクエストを再送し、ArcGIS Server がそのリクエストを処理して、コンテンツが変更されている場合に完全な応答をブラウザーに送信するということを意味します。このデフォルト値は、ほとんどのアプリケーションで有効に機能します。
データセットやシンボルが頻繁に変更されるマップ サービスの場合、5 分 (300 秒) などの値を指定することをお勧めします。アニメーションなどの時間に対応するデータを使用するアプリケーションでは、アニメーションをより滑らかに表示するために、この値を増やすことを検討してください。
cacheControlMaxAge プロパティをサービスに追加してデフォルト値を指定するには、以下の手順を実行します。
- Web ブラウザーで ArcGIS Server Administrator Directory を開き、管理者権限を持つユーザーでログインします。URL の形式は http://gisserver.domain.com:6080/arcgis/admin です。
- [services] をクリックして、変更するマップ サービスを [Services] リストから選択します。サービスがリストに表示されない場合は、[Root folder]の下のディレクトリに配置されている可能性があります。
- [Service - <サービス名> (<サービス タイプ>)] ページで下までスクロールし、[edit] をクリックします。
- [Service Properties] ダイアログ ボックスで、サービス JSON の "properties" セクションを見つけます。
- cacheControlMaxAge プロパティをそのセクションに追加して、そのプロパティの値 (秒単位) を指定します。以下に例を示します。
"properties": { "cacheControlMaxAge": "300",
- [編集の保存] をクリックします。
- [Service - <サービス名> (<サービス タイプ>)] ページの[Properties] セクションで、cacheControlMaxAge プロパティと、それに指定した値が表示されていることを確認します。
マップを使用して、サーバー上でネットワーク解析を実行する場合
マップをサーバー上でのネットワーク解析に使用する場合は、ネットワーク データセットを参照するネットワーク解析レイヤーを追加する必要があります。マップ サービスを公開する際に、[Network Analysis] ケーパビリティを有効にできます。これにより、マップ上でネットワーク解析タスクを実行するための Web サービスが作成されます。