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