マップ キャッシュのラベル
多くのサーバ管理者は、サーバでマップ キャッシュ タイルが作成されるときのマップのラベルの挙動について次のような疑問を持っています。
- キャッシュ内でラベルの重複を避けるにはどうすればよいか?
- ラベリングはタイル作成の速度にどのような影響を与えるのか?
- ラベルを別のキャッシュに維持しておく必要はあるのか?
このトピックでは、このような質問のそれぞれについてガイダンスを示します。
キャッシュ内でラベルの重複を避けるにはどうすればよいか?
キャッシュ ジョブ中に、ArcGIS は一度に大きなエリアを描画し、重複するラベルを減らそうとします。これらの大きなエリア(スーパータイル)は、次に小さな個々のタイルに分割されます。スーパータイルのサイズは 2048 x 2048(アンチエイリアスを使用)、または 4096 x 4096 ピクセル(アンチエイリアスを不使用)です。
スーパータイル内にはラベルの重複は見られないはずですが、スーパータイルの境界線に重複が発生する可能性があります。これは、スーパータイルはラベル付きであり、ラベル配置エンジンが隣接するスーパータイルのラベルを認識しないことが原因です。実際、ラベル エンジンはスーパータイル内にできるだけ多くのラベルを含めようとし、そのために一部のラベルがエッジ付近に配置されます。隣接するスーパータイルでも同じ操作が行われて、スーパータイルの境界線付近で重複が発生する可能性があります。
キャッシュ内のラベルの重複を避けるための唯一の方法は、アノテーションを使用することです。アノテーションは、各ラベルが属性付きのフィーチャとして処理される、特殊なレイヤです。属性には、各ラベルのマップ上に割り当てられた場所が含まれます。アノテーション レイヤを編集して、重複レイヤを削除することができます。
マップ キャッシュに対するアノテーション レイヤの作成
アノテーション レイヤは非常に大きくなる場合があり、マップのさまざまな縮尺すべてにアノテーションを作成することは、困難な作業に思われるかもしれません。[カートグラフィ ツール] → [アノテーション] ツールセット内の 2 つのツールは、マップ キャッシュにアノテーションを作成する際に役立つように設計されています。
1 つめのツールは、[マップ サービス キャッシュ タイル スキーマ → ポリゴン(Map Server Cache Tiling Scheme To Polygons)] です。このツールはマップ キャッシュ タイル スキーマを読み込み、タイル スキーマの各縮尺で、スーパータイルの境界線を表すグリッドを作成します。これらのグリッドは、アノテーション作成ジョブを管理可能な部分に分割するのに役立ちます。
2 つめのツールは [ラベル → タイル分割されたアノテーション(Tiled Labels To Annotation)] です。作成したスーパータイル グリッド、マップ ドキュメント、および出力ワークスペースを指定すると、このツールによってキャッシュの各縮尺にアノテーションが作成されます。アノテーションは、ラベリングが有効になっているマップ ドキュメントのすべてのレイヤに作成されます。
このツールによって作成されたアノテーションによって、キャッシュの作成時と同様にラベルが配置されます。レイヤに重複するラベルがあるかどうかを調査または検索し、キャッシュを構築する前に削除できます。または、重複が検出されたら、キャッシュの更新の合間にアノテーション レイヤを手動で削除することもできます。
大きなエリアで上記のツールを実行する前に、小さな範囲の単純なマップで練習するとよいでしょう。スーパータイル グリッドの作成とアノテーションの描画は時間のかかるタスクであり、大きなマップでこれらのツールを使用する場合には、正しいパラメータを指定していることを確認するよう推奨します。反復して実践すれば、ツールの作業にどの程度の時間がかかるか、いくつのアノテーションを作成できるかといった感覚がつかめるでしょう。
ラベリングはタイル作成の速度にどのような影響を与えるのか?
マップのラベルに最適な位置を計算する操作は時間がかかる場合があり、ラベリングによってタイルの作成速度が低下する可能性があります。アノテーションを使うとラベルの配置を判断する必要がないため、キャッシュ時にラベルを描画する場合の最も高速な方法となります。各ラベルは、ラベルの 1 つの属性である、定義済みの座標を持っています。
デフォルトの ArcMap ラベル エンジンの使用は、ラベルを描画するための 2 番目に高速な方法です。ラベル エンジンは、各ラベルをどこに配置するかを判断しなければならず、多くのラベルがある場合にはそれだけ時間がかかります。
Maplex ラベル エンジンの使用は、ラベルを描画するための最も低速な方法です。Maplex には標準の ArcMap ラベル エンジンよりも多くのオプションがあり、より高度な計算が可能で、より多くのラベルを配置します。Maplex を使用すると優れたラベリングを実行できますが、マップのキャッシュ速度が低下する可能性があります。
優れたラベル配置とパフォーマンスのバランスを取るには、Maplex ラベリング エンジンを使用してマップ ドキュメントにラベルを描画してから、ラベルをアノテーションに変換し、マップ サービスでアノテーションを使用します。
Maplex は大量のメモリを使用する可能性があります。Maplex を使用してキャッシュ全体を構築する前に、テスト キャッシュを構築し、タイル作成中のシステムのメモリ使用量を確認してください。メモリ使用量がコンピュータの限界に近づきつつある場合は、Maplex の無効化を検討します。無効化を行わないと、タイル作成中に不安定になり、クラッシュに至る可能性があります。
ラベルを別のキャッシュに維持しておく必要はあるのか?
通常、ベクタ フィーチャとそれに関連するラベルは、同じキャッシュに含まれています。ユーザがラベルをオフにせざるを得ない場合はめったにありませんが、必要な場合はフィーチャからラベルを個別のキャッシュに分離する方法がよいでしょう。
通常は、ラベルをイメージのキャッシュに含めるべきではありません。これによって、イメージをそのアプリケーションで使用したり、他のアプリケーションで再利用することが可能になります。タイルに組み込まれた異なるラベル セットを持つ複数のイメージ キャッシュは、複数のラベル オーバーレイ キャッシュを持つ 1 つのイメージ キャッシュよりも、累積的により多くのディスク容量を使用します。