スクリプト ツールのダイアログ ボックスに、パラメーターの有効化と無効化、デフォルト値の設定、文字列キーワードの更新など、カスタム動作を設定することができます。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 を含むようにフィルターを更新します。内部整合チェックは、ユーザーが入力した値をフィルター内にある値に対してチェックします。
また、前述したように、整合チェック コードでデフォルト値を計算したり、パラメーターを有効化/無効化したり、メッセージをカスタマイズしたりできます。これらの種類の処理は、内部整合チェックに影響しません。影響があるのは、ツール ダイアログ ボックスの外観だけです。