ジオプロセシングによるキャッシュの作成と更新の自動化
変更される可能性が低いベースマップを使用している場合は、おそらくキャッシュを 1 回だけ作成することになるでしょう。キャッシュの作成には、ArcCatalog のキャッシュ インタフェース([サービス プロパティ] ダイアログ ボックスの [キャッシュ] タブ)を使用します。これは、データが頻繁に変化しない場合にキャッシュを更新する適切な方法でもあります。
データが頻繁に変化する場合でも、キャッシュを使用できることがあります。キャッシュ ツールは、キャッシュの更新をスクリプトして、キャッシュの特定箇所だけを更新対象にできるように設計されています。たとえば、以下のことを行うことができます。
- 変更されている縮尺レベルのキャッシュだけを更新する。
- フィーチャクラスの境界内にあるキャッシュ エリアだけを更新する
- Windows [タスク] などのユーティリティを使ってキャッシュの管理を自動化する
キャッシュ プロセスを自動化するには、[ジオプロセシング] メニューからアクセスされる [サーバ ツール] を使用するスクリプトを記述します。Linux/Solaris の場合、キャッシュ スクリプトがすでに作成してあり、ArcGIS Server SOC コンポーネントと一緒に <ArcGIS Server インストール ディレクトリ>/arcgis/server<10.0>/java/tools/caching にインストールされています。このヘルプ トピックでは、利用可能なツールのリストと、スクリプトを記述するための出発点となるサンプルをいくつか紹介します。また、以前のスクリプトを ArcGIS Server 9.2 から以降のバージョンに移行する方法についても説明します。
キャッシュ ツール
[サーバ ツール] ツールボックスには、マップ キャッシュとグローブ キャッシュの両方に対応したツールが収録されています。
マップ キャッシュ ツール
マップ キャッシュのために次のツールが用意されています。これらのツールは、タイル スキーマを作成し、キャッシュにタイルを格納するパターンを反映しています。
- マップ サービス キャッシュの作成(Create Map Server Cache)- キャッシュを初期化し、タイル スキーマを設定します。このツールはタイルを作成しません。タイルを作成するには、[マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)] を使用します。
- マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)- 新しいキャッシュの作成、古いタイルの置換、キャッシュからのタイルの削除を行います。
- マップ サービスのキャッシュの縮尺を管理(Manage Map Server Cache Scales)- 既存のキャッシュの縮尺を追加または削除します。
- マップ サービス キャッシュの削除(Delete Map Server Cache)- すべてのキャッシュ タイルとキャッシュのフォルダ構造を削除します。
一般的なスクリプト ワークフローでは、[マップ サービス キャッシュの作成(Create Map Server Cache)] を使って新しい空のキャッシュを作成した後、[マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)] を使ってキャッシュにタイルを追加し、定期的に更新を実行します。
マップ キャッシュを標準化するためのツール
組織内で使用するマップ キャッシュの構築数が多い場合は、それらに同じタイル スキーマを使用することが推奨されます。標準タイル スキーマを使用すると、キャッシュをより効率よくオーバーレイできます。
ArcGIS Online、Google Maps、Bing Maps などのオンライン マッピング サービスで使用されているのと同じタイル スキーマを選択することもあれば、それが組織内で使用される唯一のタイル スキーマのこともあります。カートグラフィック標準または組織の慣習に基づいて、タイル スキーマを選択することもあります。たとえば、すべてのマップで極平射図法の使用が義務付けられている場合は、ArcGIS Online、Google Maps、Bing Maps タイル スキーマはいずれも使用できないので、カスタム タイル スキーマを作成する必要があります。
[サーバ ツール] ツールボックスの [マップ サービス キャッシュ タイル スキーマの作成(Generate Map Server Cache Tiling Scheme)] ツールを使用して、組織全体で共有するためのスキーマを 1 つ作成することができます。このツールで作成される XML タイル スキーマ ファイルは、共有ディレクトリに格納しておき、[マップ サービス キャッシュの作成(Create Map Server Cache)] を実行するときに参照できます。
マップ キャッシュ メンテナンス ツールとコラボレーション ツール
[キャッシュ] ツールセットのツールの中には、キャッシュをメンテナンスし共同で構築する目的に設計されているものもあります。
[マップ サービス キャッシュの格納形式を変換(Convert Map Server Cache Storage Format)] ツールは、古いキャッシュを ArcGIS Server 10 で導入された新しい圧縮形式に変換できます。このツールは事実上、展開形式(ArcGIS 10 以前)と圧縮形式の両方向に変換できます。
[マップ サービス キャッシュのエクスポート(Export Map Server Cache)] ツールと [マップ サービス キャッシュのインポート(Import Map Server Cache)] ツールは、タイルのサブセットをキャッシュ間で移動する際に役立ちます。キャッシュのエクスポートおよびインポートは、いくつかの組織が協働で 1 つの大規模キャッシュを構築する場合や、大規模キャッシュを持つ組織が一部のタイルを別の組織と共有したい場合などに役立ちます。
グローブ キャッシュ ツール
グローブ キャッシュ用に、次のツールが用意されています。
- グローブ サービス キャッシュのタイルを管理(Manage Globe Server Cache Tiles)- 新しいキャッシュの作成、古いタイルの置換、グローブ キャッシュからのタイルの削除を行います。
- グローブ サービス キャッシュの削除(Delete Globe Server Cache)- キャッシュを削除します。
グローブ キャッシュを操作するためのツールが 2 つだけであることに注意してください。基本的に、すべてのグローブ サービスのキャッシュは、サービスを作成したときに自動的に作成されます。このキャッシュはすべてのグローブ サービスに同じ組み込みのタイル スキーマを使用します。このため、新しいグローブ キャッシュまたはタイル スキーマを作成するためのツールはありません。
[グローブ サービス キャッシュのタイルを管理(Manage Globe Server Cache Tiles)] ツールを使用して、すべてのタイルをキャッシュするか、選択したエリアと詳細レベルだけをキャッシュすることができます。
スクリプトでのツールの使用
カタログウィンドウまたは 検索ウィンドウからキャッシュ ツールを手動で開くこともできますが、実行対象のツールを 1 つ以上含めたジオプロセシング スクリプトを記述するほうが効率的です。そうすれば、このスクリプトをスケジューリングして、自動的に実行することができます。
サンプル スクリプトマップ キャッシュの更新
データが頻繁に変化する場合は、キャッシュの更新にスクリプトを使用することが推奨されます。更新ツールを実行する Python スクリプトを作成することができます。[メモ帳] で Python を記述するか、IDLE または PythonWin などの開発環境を使用することができます。
スクリプトは複雑なものでなくてもかまいません。ツールのパラメータを定義して実行するだけで十分です。次の Python スクリプトは、[マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)] ツールを使用して、キャッシュ全体を再作成します。
# This script updates a map cache containing changing data # Any line that begins with a pound sign is a comment and will not be executed # These lines are used to access ArcGIS geoprocessing tools import arcpy, sys from arcpy import env # Here is where you define the input parameter values for the update tool. # Empty quotes take the default value. server = "MyServer" service = "Precipitation" dataFrame = "Layers" inputLayers = "" extent = "" scales = "128000;64000;32000;16000" updateMode = "Recreate All Tiles" threadCount = "2" antialiasing = "NONE" pathToFeatureClass = "" ignoreStatus = "" # These lines run the update tool try: print 'Starting Cache Update' result = arcpy.ManageMapServerCacheTiles_server(server, service, dataFrame, inputLayers, scales, updateMode, extent, threadCount, antialiasing, pathToFeatureClass, ignoreStatus) while result.status < 4: time.sleep(0.2) resultValue = result.getMessages() print str(resultValue) print 'Finished Cache Update' # If there's a failure, these lines get the messages except Exception, e: tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno
すべての入力パラメータに正しい構文を使用することが重要です。各ツールのパラメータの説明およびサンプルについては、ArcGIS Desktop ヘルプのジオプロセシング ツール リファレンス ブックをご参照ください。たとえば、上記の説明に使用されている [マップ サービス キャッシュ タイルの管理] ツールの場合、リファレンス トピックは [マップ サービス キャッシュのタイルを管理]」です。
Python が初めての場合は、以下のリソースが役立つでしょう。
- Python とは - ArcGIS Desktop ヘルプには、このトピックをはじめとした、Python スクリプトの概要が収録してあります。
- モデルのエクスポート - ModelBuilder で作成したモデルは、Python にエクスポートして、対応するスクリプトを表示することができます。
スクリプトを定期的に実行するためのスケジュールの設定
スクリプトは、Python スクリプト ファイル(*.py)として保存することができます。Windows エクスプローラでスクリプトをダブルクリックすると、スクリプトが実行されます。これはテストに役立ちますが、ほとんどの場合は、スクリプトを定期的に自動実行するようにスケジュールを設定してください。
オペレーティング システムには、スクリプトの実行といったタスクのスケジューリングに役立つユーティリティが含まれています。Windows では、[タスク] または schtasks コマンドを使用することができます。スクリプト ファイルの場所、実行する頻度、タスクを実行するための名前とパスワードを指定する必要があります。タスクのスケジューリングの詳細については、以下の資料をご参照ください。
- Python スクリプトを指定の時間に実行するようスケジュールを設定する
- Scheduling scripts to run at prescribed times(スクリプトを指定の時間に実行するためのスケジュール設定)(UNIX のドキュメント)
- Schedule a new task(新しいタスクのスケジュール設定)(Microsoft のドキュメント)
- Schtasks のコマンド ライン リファレンス(Microsoft のドキュメント)
Linux 使用時の注意
Linux の場合、キャッシュ処理用の Python スクリプトを実行する前に、「Viewing and Managing Network Ports on Linux/Solaris」のステップ 2 の説明に従って、コマンド ソース /arcgis/server10.0/servercore/.Server/init_server.sh を実行する必要があります。
ArcGIS Server 9.2 で [サーバ ツール] ツールボックスを使用したことがあれば、バージョン 9.3 以降でいくつか変更されている点があることに気付くでしょう。ArcGIS Server 9.2 の一部のツールは使用されなくなっています。それらのツールは既存のスクリプトを引き続き正常に実行できるように残されていますが、ツールボックスに追加したり、コマンド ラインを通じて利用したりすることはできません。それらのツールはスクリプト環境でのみ使用することができます。
次の表に、使用されなくなったツールと 9.3 以降での代替ツールを示します。
9.2 で使用されなくなったツール |
代替ツール |
マップ サービス キャッシュの作成(Generate Map Server Cache) |
|
マップ サービス キャッシュの更新(Update Map Server Cache) |
マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles) |
グローブ サービス キャッシュの作成(Generate Globe Server Cache) |
グローブ サービス キャッシュのタイルを管理(Manage Globe Server Cache Tiles) |
グローブ サーバ キャッシュの更新(Update Globe Server Cache) |
グローブ サービス キャッシュのタイルを管理(Manage Globe Server Cache Tiles) |
- マップ サービス キャッシュ タイル スキーマの作成(Generate Map Server Cache Tiling Scheme)- このツールは、マップ キャッシュを初期化し、タイル スキーマを設定し、キャッシュ内のすべてのタイルを作成するためのものでした。9.3 以降では、[マップ サービス キャッシュの作成(Create Map Server Cache)] を使用して、マップ キャッシュを初期化し、タイル スキーマを設定します。続いて、[マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)] を使用して、キャッシュの一部またはすべてのタイルを作成します。
- マップ サービス キャッシュの更新(Update Map Server Cache)- このツールはマップ キャッシュ内のタイルを作成、置換、削除するためのものでした。9.3 以降では、同じ処理を行うだけでなく、選択されたキャッシュ部分のみを更新できるように柔軟性が強化された [マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)] を使用します。
- グローブ サービス キャッシュの作成(Generate Globe Server Cache)- このツールは、グローブ キャッシュ内のすべてのタイルを生成するためのものでした。9.3 以降では、[グローブ サービス キャッシュのタイルを管理(Manage Globe Server Cache Tiles)] を使用して、グローブ キャッシュの一部またはすべてのタイルを作成します。
新しいツールの一部では、パラメータの順序が変更されています。たとえば [マップ サービス キャッシュのタイルを管理(Manage Map Server Cache Tiles)] の constraining_extent パラメータは、パラメータ リスト中の update_mode の直後に指定する必要があります。スクリプトを更新する際には、必ずジオプロセシング ツールの最新のリファレンス ドキュメントをご参照ください。