マップ イメージ レイヤーとイメージ レイヤーを使用して生成されたラスター タイルのキャッシュを生成する際、十分に理解しておく必要があるツールやプロセスがいくつかあります。
注意:
マップ サービスという用語はマップ イメージ レイヤーという用語区別なく使用でき、イメージ サービスという用語はイメージ レイヤーという用語と区別なく使用できます。
キャッシュ ツールセット
キャッシュ マップ レイヤー、イメージ レイヤー、タイル レイヤーなどのサーバー サービス用のキャッシュ管理ツールは、ArcGIS Pro の [サーバー ツール] > [キャッシュ ツールセット] にあります。 詳細については、「キャッシュ ツールセットの概要」をご参照ください。
注意:
すべてのキャッシュ ツールを使用するには、公開者または管理者の認証情報が必要です。
キャッシュ用のサーバー リソース
ArcGIS Server でのキャッシュの生成と管理は、事前に設定されたキャッシュ コントローラーとキャッシュ ツール ジオプロセシング サービスでサポートされています。 これらのシステム サービスは、ArcGIS Server サイトの作成時にすぐに利用できます。 CachingTools サービスに使用できるインスタンスの数により、コンピューターがどれだけの能力をキャッシュ ジョブに割り当てられるかが決まります。また、システム フォルダーにあるキャッシュ コントローラー サービス インスタンスの数により、同時に実行できるジョブの数が決まります。
マップまたはイメージ サービスのインスタンス数を増やしても、タイルの作成速度には影響しません。 マップまたはイメージ サービスのインスタンスは、サービスに対するクエリおよび個別属性表示の操作を実行する際に使用され、キャッシュ コンテンツのレンダリングには使用されません。 マップやイメージ サービスのプールを構成することで、キャッシュ マップ サービスの共有インスタンスを活用し、サーバー リソースへの負荷を軽減できます。 詳細については、「サービス インスタンス設定の構成」をご参照ください。
CachingTools サービスのインスタンス数の選択
ArcGIS Server Manager を使用すると、キャッシュ ジョブで使用できるようにする CachingTools のジオプロセシング サービスの最大インスタンス数をいつでも調整できます。 最小値と最大値は、個々の GIS サーバーに適用されます。そのため、最大値を 3 に設定し、CachingTools サービスを実行する GIS サーバーが 4 つある場合、最大 12 の CachingTools のインスタンスを実行できるようになります。
この設定により、サイトから GIS サーバーを追加または削除することで、キャッシュに割り当てるリソース数を増減することができます。 キャッシュ ジョブが実行中でも GIS サーバーを追加でき、サーバーの追加が検出されると、作成されるタイルが割り当てられます。
CachingTools サービスのインスタンス数を適切に選択することが重要です。 許可するインスタンスの数が多すぎると、コンピューターの負荷が大きくなり効率が低下する可能性があります。 ただし少なすぎると、コンピューターの使用率が低下する場合があります。 状況に合った最適な値を見つけるには試行錯誤が必要です。 ただし、まずは最大値である n を許可することをお勧めします。n は、クラスター内の 1 台のコンピューターが搭載する CPU コアの数を表します。
キャッシュ ジョブのインスタンス数の選択
[マップ サービス キャッシュのタイルを管理 (Manage Map Server Cache Tiles)] などのツールを使用すると、ジョブで動作する CachingTools のインスタンスの数を選択できます。 利用可能な CachingTools のインスタンスを実行中のいくつかのジョブの間で分割することができます。 それらのインスタンスが他のジョブで使用されている場合、あるジョブでは、CachingTools の最大インスタンス数まで利用できない可能性があります。 キャッシュ ジョブが CachingTools のすべてのインスタンスを使用している場合、リクエストされた他のジョブは最初のジョブが完了するまでキューに配置されます。
キャッシュを作成しようとしていて、サイトに 4 つの GIS サーバーがあるとします。 各サーバーは、最大で 5 つの CachingTools インスタンスを許可するように構成しています。 キャッシュ ジョブに割り当てることができるインスタンスの最大数は 20 です。
このサイトで同時に 2 つのキャッシュ ジョブを実行し、負荷を均等に分散する場合は、各ジョブに対して 10 のインスタンスを割り当てることができます。
柔軟な設定が可能
必要に応じて GIS サーバーを自動的に追加できるクラウド環境でサイトを構成している場合があります。 そのようなケースでは、ジョブの実行が、固定された最大インスタンス数によって制限を受けるのは望ましくありません。 そうした場合には、値に -1 を入力することで、ジョブで実行できるインスタンス数の制限をなくすことができます。 サイトに追加される GIS サーバーの数に関係なく、利用可能な CachingTools のすべてのインスタンスがそのジョブに使用されます。
同時に実行可能なジョブ数の設定
多数の公開者がキャッシュを構築する要求を同時に開始すると、各ジョブに割り当てるインスタンス数を少なくしている場合でも、サーバーに負荷がかかりすぎる場合があります。 システム フォルダーにある CachingControllers サービスは、同時に実行できるジョブの数を決定します。
デフォルトでは、CachingControllers サービスに対するインスタンスの最大数は 3 です。これは、キャッシュ ジョブを一度に 3 つしか実行できないことを意味します。 4 つ目のキャッシュ ジョブの要求をサーバーが受信した場合、この要求は他のジョブが完了するまでキューに格納されます。 一度に 4 つのジョブの実行を許可する場合は、CachingControllers の最大インスタンス数を 4 に設定します。
ジオプロセシングによるキャッシュの作成と更新の自動化
変更される可能性が低いベースマップを使用している場合は、おそらくキャッシュを 1 回だけ作成することになるでしょう。 ArcGIS ジオプロセシング ツールを使用して、キャッシュを作成し、タイルをキャッシュに追加することができます。 これは、データが頻繁に変化しない場合にキャッシュを更新する適切な方法でもあります。
データ変更する場合でも、キャッシュを使用できることがあります。 キャッシュ ツールは、キャッシュの更新をスクリプト化して、キャッシュの特定箇所だけを更新対象にできるように設計されています。 たとえば、次の操作を実行できます。
- 変更されている縮尺レベルのキャッシュだけを更新する。
- フィーチャクラスの境界線の範囲内に含まれるキャッシュ エリアのみを更新します。
- Windows タスク スケジューラなどのユーティリティを使ってキャッシュの管理を自動化する。
キャッシュ プロセスを自動化するには、[サーバー ツール] ツールボックスの [キャッシュ] ツールセットに含まれるツールを使用するスクリプトを作成します。
新しいマップまたはイメージ サービスのキャッシュを作成するには、通常は最初に [マップ サービス キャッシュの作成 (Create Map Server Cache)] ツールを使用して、キャッシュを初期化します。 続いて、[マップ サービス キャッシュのタイルを管理 (Manage Map Server Cache Tiles)] を実行して、タイルをキャッシュに追加します。
キャッシュのエクスポート、インポート、および削除に使用する多数のツールが用意されています。 利用可能なツールの概要については、「キャッシュ ツールセットの概要」をご参照ください。
スクリプトでのツールの使用
[カタログ] ウィンドウまたは [検索] ウィンドウからキャッシュ ツールを手動で開くこともできますが、ModelBuilder でモデルを作成するか、実行対象のツールを 1 つ以上含めたジオプロセシング スクリプトを記述するほうが効率的です。 そうすれば、スクリプトをスケジューリングして、自動的に実行することができます。
ジオプロセシング ツールのリファレンス トピックには、スクリプトでツールを使用する方法を示す完全な Python コードのサンプルが含まれています。 例として、「マップ サービス キャッシュのタイルを管理 (Manage Map Server Cache Tiles)」のヘルプをご参照ください。
Python が初めての場合は、以下のリソースが役立つでしょう。
- Python とは - ArcGIS ヘルプには、このトピックをはじめとした、Python スクリプトの概要が収録してあります。
- モデルのエクスポート - ModelBuilder で作成したモデルは、Python にエクスポートして、対応するスクリプトを表示することができます。
スクリプトを定期的に実行するためのスケジュールの設定
スクリプトは、Python スクリプト ファイル (.py) として保存することができます。 Windows エクスプローラーでスクリプトをダブルクリックすると、スクリプトが実行されます。 これはテストに役立ちますが、ほとんどの場合は、スクリプトを定期的に自動実行するようにスケジュールを設定してください。
オペレーティング システムには、スクリプトの実行といったタスクのスケジューリングに役立つユーティリティが含まれています。 Windows では、タスク スケジューラまたは schtasks コマンドを使用することができます。 スクリプト ファイルの場所、実行する頻度、タスクを実行するための名前とパスワードを指定する必要があります。 詳細については、「Python スクリプトを指定の時間に実行するようスケジュールを設定する」をご参照ください。