スクリプト ツールの整合チェックについて
スクリプト ツールのダイアログ ボックスに、パラメータの有効化と無効化、デフォルト値の設定、文字列キーワードの更新など、カスタム動作を設定することができます。Python コードを追加することで、以下のことができます。
- 他のパラメータに含まれる値に基づく、パラメータの有効化または無効化。
- パラメータのフィルタの更新。 フィールド フィルタを使用すると、LONG や DOUBLE など、有効なフィールド タイプのリストを作成できます。文字列フィルタを使用すると、次のように、有効なキーワードのリストを設定できます。フィルタには、値のリスト、範囲、フィーチャクラス、ファイル、フィールド、ワークスペースの 6 種類があります。
- ラスタのセル サイズなど、パラメータのデフォルト値の設定。
- ダイアログ ボックスに表示される警告およびエラー メッセージのカスタマイズ。
- さまざまなカテゴリへのパラメータの配置。
- ModelBuilder で使用される出力データセットの記述の更新。
整合チェックの動作
整合チェックは Python コードのブロックで実行されます。ジオプロセシングはこのブロックを使用して、ツール ダイアログ ボックスおよび Python ウィンドウがユーザ入力に応じてどのように変化するかを制御します。システム ツール(Esri が提供するツール)には、ユーザ入力に応じてツールのダイアログ ボックスを変更するという上記の機能が備わっています。
整合チェック
整合チェックは、ツールの全パラメータが正しいことを確認し、不正なパラメータがある場合は適切なメッセージを表示します。整合チェックは、2 つの部分で構成されています。
- コードを追加することで実行可能な部分。
- ArcGIS が自動的に処理を実行する部分。この部分の整合チェックは、ArcGIS のジオプロセシングが内部で行う基本的な整合チェックであるため、内部整合チェック(または基本整合チェック)と呼ばれます。
まず、内部整合チェックの処理について説明します。
- パラメータが必要な場合、空(まだ何も入力されていない状態)かどうかをチェックします。空の場合は、ツールのダイアログ ボックスに「値は必要です」というメッセージを設定します(赤色の X の代わりに緑色のドットを使用します)。
- ユーザが入力した値が正しいタイプかどうかチェックします。たとえば、フィーチャクラスではなくラスタ、あるいは数値ではなくアルファベット文字が入力されていないかチェックします。
- フィルタのメンバーシップをチェックします。値のリスト フィルタに RED、ORANGE、YELLOW などのキーワードが含まれている場合、BLUE を入力すると、BLUE は値のリスト フィルタにないため、エラー メッセージが表示されます。
- 入力データセットが存在しているかチェックします。
- 出力データセットのデフォルト カタログ パスを生成します。
- Schema という特別なオブジェクトに含まれる一連のルールに基づいて、出力データの記述を更新します。
- overwriteOutput 環境設定に対して、出力データセットが存在しているかチェックします。データセットが存在していて overwriteOutput が false の場合、エラーが生成されます。それ以外の場合は警告が生成されます。
- パラメータがフィールド データ タイプの場合、関連するテーブルにそのフィールドが存在するかチェックします。
- 出力データセットが入力データセットと同じでないかチェックします([フィールドの追加(Add Field)] のように出力が派生である場合以外)。
- 距離単位や面積単位のデータ タイプを含むパラメータでは、(ArcMap から実行している場合は)ArcMap の対応する値を調べてデフォルト値を設定します。
- 出力がカバレッジ、グリッド、または INFO テーブルの場合は、これらのデータセットのファイル名について、13 文字の制限をチェックします。
内部整合チェックは、以下の処理を行いません(ただし、独自の整合チェック コードを使用すれば実行できます)。
- 他のパラメータとの関係に基づいたフィルタの更新。たとえば、ユーザが最初のパラメータにポイント フィーチャクラスを入力したら、ツール ダイアログ ボックスの 3 番目のパラメータに RED、ORANGE、YELLOW を表示させ、ポリゴン フィーチャクラスを入力する場合、3 番目のパラメータに BLUE、INDIGO、VIOLET を表示させたい場合があります。
- パラメータの有効化/無効化。
- デフォルト値の計算。
- ツール固有のパラメータとの対話。
入力したコードは、次のように内部整合チェックと連携して動作します。
- 内部整合チェックが出力データセットの記述を更新するのに使用する一連のルールを設定できます。これらのルールは、Schema オブジェクトに含まれます。
- 内部整合チェックの実行前にフィルタを更新できます。前述の例を使用すれば、ポイント フィーチャクラスを入力した場合は、RED、ORANGE、YELLOW を含むようにフィルタを更新します。内部整合チェックは、ユーザが入力した値をフィルタ内にある値に対してチェックします。
また、前述したように、整合チェック コードでデフォルト値を計算したり、パラメータを有効化/無効化したり、メッセージをカスタマイズしたりできます。これらの種類の処理は、内部整合チェックに影響しません。影響があるのは、ツール ダイアログ ボックスの外観だけです。
関連トピック
5/10/2014