ほぼすべてのツールにはパラメーターがあり、その値は [ジオプロセシング] ウィンドウまたはスクリプト内で設定します。 ツールを実行すると、パラメーター値がツールのソース コードに送られます。 ツールはその値を読み込んで、処理を続けます。
パラメーターの詳細については、「スクリプト ツールのパラメーターの概要」をご参照ください。
スクリプト ツール パラメーターは、スクリプト ツールの作成時に設定できます。 スクリプト ツール パラメーターは、ツールの [プロパティ] ダイアログ ボックスから追加、削除、変更することもできます。 スクリプト ツールのプロパティにアクセスするには、ツールを右クリックし、[プロパティ] をクリックして [パラメーター] タブをクリックします。
パラメーターを追加するには、最初に [ラベル] 列の空のセルをクリックしてパラメーターの名前を入力します。 この名前が [ジオプロセシング] ウィンドウに表示されます。名前にはスペースを含めることができます。 [名前] 列のデフォルトのパラメーター名は [ラベル] に基づき作成されますが、必要に応じて変更できます。 パラメーター名は Python 構文に必要で、整合チェックされます (スペースの削除など)。
パラメーターの表示名を入力したら、以下のように [データ タイプ] セル内をクリックしてパラメーターのデータ タイプを選択します。
複数の値を受け入れるパラメーターを作成する必要がある場合、[複数の値] チェックボックスをオンにします。 複合データ タイプを作成する必要がある場合、つまり異なるデータ タイプを受け入れるパラメーターの場合は、複数のデータ タイプをオンにすることができます。
各パラメーターには、前出のように設定可能なその他のプロパティがあります。これらのプロパティは以下のとおりです。
プロパティ | 説明 |
---|---|
[Required]、[Optional]、[Derived] にすることができます。 Derived では、ツールのユーザーはパラメーターに値を入力しません。 Derived タイプは必ず出力パラメーターになります。 | |
[入力] と [出力] にすることができます。 [タイプ] パラメーターが [Derived] の場合、方向は常に [出力] と同じになります。 | |
パラメーターは、さまざまなカテゴリにグループ化できます。 | |
パラメーターに特定のデータセットまたは値だけを入力する場合、フィルターを指定できます。 フィルターは 6 つの種類があります。選択できるフィルターのタイプは、パラメーターのデータ タイプによって変わります。 | |
このプロパティは、派生出力パラメーターと入力パラメーター データ タイプに適用されます。 派生出力パラメーターの場合、[依存関係] を出力の定義を含むパラメーターに設定できます。 入力パラメーターの場合、[依存関係] は入力に必要な情報を含むパラメーターに設定します。 | |
パラメーターのデフォルト値。 パラメーターのデータ タイプがフィーチャ セットまたはレコード セットのいずれかの場合、[デフォルト] を使用してパラメーターのスキーマを定義します。 | |
パラメーターのデフォルト値が環境設定の値の場合、このプロパティには環境設定の名前が含まれます。 | |
このプロパティは出力パラメーターのみに適用されます。 値は、出力表示のシンボルを含むレイヤー ファイルの場所 (*.lyrx) です。 |
タイプ
[タイプ] は次のいずれかのオプションに設定します。
- [Required] - このパラメーターには、実行するツールに必ず値を指定する必要があります。
- [Optional] - パラメーターに値を指定しなくてもかまいません。
- [Derived] - 派生パラメーターは、次の場合に使用します。
- 出力が入力と同じ場合。 たとえば、[フィールド演算 (Calculate Field)] ツールは入力テーブルのフィールドの値を変更します。これは、テーブルを作成したり、入力のスキーマを変更したりはしません。
- ツールが入力のスキーマを変更する場合。 たとえば、[フィールドの追加 (Add Field)] ツールによって入力テーブルにフィールドが追加されます。
- ツールが、数値、文字列、ブール値などスカラー値を出力する場合。 たとえば、[行のカウント (Get Count)] ツールは派生した整数値を返します。
- ツールが他のパラメーターの値から出力を作成する場合。 たとえば、[フィーチャクラスの作成 (Create Feature Class)] ツールは、パスおよび名前の値がある他のパラメーターから作成された、派生したフィーチャクラスのパスを返します。
- ツールが既知の場所にデータを作成する場合。 たとえば、既知のワークスペース内にあるフィーチャクラスを作成するスクリプトなどが挙げられます。 フィーチャクラスもワークスペースもパラメーター オプションではありません。
注意:
ツールがデータセットまたはレイヤーを更新する場合、ツールは、入力パラメーターに対してパラメーターの依存関係が設定されている派生出力パラメーターを必要とします。 これは、ArcGIS Pro のマルチスレッド バックグラウンド ジオプロセシングが、どのマップ レイヤーを処理中に切断してデータ ロック エラーから保護し、処理後に再接続し、選択や結合などの更新されたプロパティで更新するかを把握するためです。
注意:
スクリプト ツールが派生出力の場合、SetParameterAsText または SetParameter 関数を使用してスクリプトの派生出力パラメーターの値を設定する必要があります。
データではなく値を出力
上記の例は、出力される派生データセットを示しています。 ただし、[行のカウント (Get Count)] ツールなどの一部のツールは、データセットではなく値を出力します。これは、テーブルの行数を含む [Long] データ タイプを出力します。 データセットではなく値を出力することは一般的です。 関連するデータセットで分析を実行していくつかの数値または合格/不合格のブール値のみを出力する、独自のスクリプトがある場合があります。
値データ タイプを含む出力パラメーター ([Long] や [Boolean] など) は [Required] ではなく常に [Derived] となります。
方向
このプロパティは、パラメーターがツールへの入力とツールの出力のどちらであるかを定義します。
パラメーター タイプが [Derived] の場合、パラメーターの方向は [出力] に自動的に設定されます。
すべてのスクリプトは、ModelBuilder で使用できるように出力パラメーターを含む必要があります。 ModelBuilder の基本的なアイデアは、ツールの出力を他のツールの入力と接続することです。スクリプト ツールに出力パラメーターがないと、ModelBuilder ではあまり実用的ではありません。 出力は、パラメーター値に入力されるデータセットの場合も、場所または名前がスクリプト内で決定される派生した出力の場合も、計算または決定される派生した値の場合もあります。 ツールが正常に完了すると、少なくとも true を含むブールを出力できます。そうでない場合は false となります。
カテゴリ
パラメーターは、さまざまなカテゴリにグループ化して [ジオプロセシング] ウィンドウのサイズを最小化したり、使用頻度の低い関連パラメーターにグループ化したりすることができます。 他のパラメーターでカテゴリを設定した場合、新しいカテゴリ名を入力するか、リストから選択することができます。 いくつかの ArcGIS Network Analyst extension ツールが、次のようにカテゴリを使用しています。
カテゴリは、必ず未分類パラメーターの後ろに表示されます。 必須パラメーターはカテゴリ内に配置しないでください。[ジオプロセシング] ウィンドウに表示されなくなります。
複数値
パラメーターで単一値ではなく、値のリストを処理できるようにする場合、[複数値] プロパティを [Yes] に設定します。
複数値コントロールの例を以下に図示します。
複数値には、arcpy.GetParameter 関数を使用する場合にリストとしてアクセスできます。また、for ループを使用して複数値を反復処理できます。 あるいは、arcpy.GetParameterAsText 関数を使用してセミコロン区切りの文字列として複数値にアクセスできます。 区切りの文字列を分割するには、次のコードの例に示すように Python split 方法を使用します。
import arcpy
road_types = arcpy.GetParameterAsText(0)
road_list = road_types.split(";")
# Process each road type
for road_type in road_list:
# road_type contains an individual road type string (ex: "Interstates")
arcpy.AddMessage("Processing: {}".format(road_type))
デフォルト
デフォルト値は、スクリプトのツールが開いたときのパラメーターの内容になります。 また、スクリプト内のパラメーターに # が入力された場合に使用される値でもあります。 [デフォルト] プロパティに値を指定しないと、ツールが開いたときのパラメーター値は空白になります。 このプロパティに値を指定すると、[環境] プロパティが無効になります。 [環境] プロパティを有効にするには、[デフォルト] プロパティをクリアします。
スキーマ
入力パラメーターのデータ タイプが [フィーチャ セット] または [レコード セット] の場合、入力するフィーチャのフィールドおよびジオメトリ タイプを定義するスキーマの場所を指定する必要があります。 スキーマは、フィーチャクラス、テーブル、またはレイヤー ファイル (*.lyrx) のいずれかです。
[フィーチャ セット] と [レコード セット] データ タイプでは、データを対話的に入力できます。 [フィーチャ セット] を使用すると、スクリプトのユーザーは、マップをクリックすることでフィーチャを対話的に作成できます。 [レコード セット] を使用すると、ユーザーはテーブル グリッド内に行を対話的に作成できます。
環境
[環境] で適切なセルを右クリックして環境設定の名前を選択すると、パラメーターのデフォルト値を環境設定の値に設定できます。
フィルター
パラメーターに特定の値またはデータセット タイプだけを入力する場合、フィルターを指定できます。 [フィルター] で適切なセルをクリックして、ドロップダウン リストから適切なフィルター タイプを選択します。 ダイアログ ボックスが開いたら、フィルターの値を指定します。 フィルターは 6 つの種類があります。選択できるフィルターのタイプは、パラメーターのデータ タイプによって変わります。
通常、選択できるフィルターのタイプは 1 つだけです。 [Long] と [Double] だけは、[Value List] と [Range] の 2 つを選択できます。
また、スクリプト ツールの ToolValidator クラスをカスタマイズすると、Python によりフィルターをプログラムで設定できます。
面積単位
面積単位のフィルターは、使用できる単位タイプを定義します。使用できる単位タイプは、[平方インチ]、[平方フィート]、[平方ヤード]、[エーカー]、[平方マイル]、[平方ミリメートル]、[平方センチメートル]、[平方デシメートル]、[平方メートル]、[アール]、[ヘクタール]、[平方キロメートル]、および [不明] です。
フィーチャ タイプ
このフィルターでは、1 つ以上のフィルター値を選択します。 入力フィーチャクラスが、フィルターの値に対してチェックされます。 たとえば、フィルターの値に [ポイント] だけを選択した場合は、パラメーターの値としてポイント フィーチャクラスしか入力できません。
フィーチャ タイプ フィルターは、使用できるフィーチャクラス タイプを定義します。使用できるフィーチャクラス タイプは、[ポイント]、[マルチポイント]、[ポリゴン]、[ポリライン]、[アノテーション]、および [ディメンション] です。 複数の値をフィルターに設定できます。
フィールド
フィールド フィルターは、使用できるフィールド タイプを定義します。使用できるフィールド タイプは、[Short]、[Long]、[Float]、[Double]、[Text]、[Date]、[OID]、[Geometry]、[Blob]、[Raster]、[GUID]、[GlobalID]、および [XML] です。 複数の値をフィルターに設定できます。
ファイル
ファイル フィルターには、*txt (簡単なテキスト ファイル) や *csv (カンマ区切りファイル) などの、使用できるファイル接尾辞のリストが含まれます。 接尾辞には任意のテキストを使用できます。ArcGIS で認識される接尾辞である必要はありません。 接尾辞の長さは任意で、ドットは含めません。 複数の接尾辞はセミコロン区切り文字で区切って指定します。
距離単位
距離単位フィルターは、使用できる単位タイプを定義します。使用できる単位タイプは、[インチ]、[ポイント]、[フィート]、[ヤード]、[マイル]、[海里]、[ミリメートル]、[センチメートル]、[メートル]、[キロメートル]、[度 (10 進)]、[デシメートル]、[度]、および [不明] です。 複数の値をフィルターに設定できます。
レンジ
[Long] または [Double] パラメーターは、[範囲] フィルターを持つことができます。 [範囲] フィルターでは、最小値と最大値の 2 つの値を使用します。 最小値と最大値はどちらも範囲に含まれます。
時間単位
時間単位フィルターは、使用できる単位タイプを定義します。使用できる単位タイプは、[ミリ秒]、[秒]、[分]、[時間]、[日]、[週]、[月]、[年]、[10 年]、[世紀]、および [不明] です。 複数の値をフィルターに設定できます。
移動モード ユニット タイプ
このフィルターを使用して、移動モードのインピーダンス属性に基づき使用できる移動モード タイプを設定できます。 有効なオプションは [Time]、[Distance]、および [Other] です。 デフォルトは 3 つすべてのタイプを許可します。
値のリスト
[値のリスト] フィルターは、キーワードのセットを提供するときに便利です。 多くのツールには、あらかじめ定義されたキーワードのセットがあります。たとえば、[フィールドの追加 (Add Field)] ツールの [フィールド タイプ] パラメーターや、[オーバーレイ] ツールセットに含まれる多くのツールの [結合する属性] パラメーターなどです。
[Long] および [Double] のデータ タイプで、[値のリスト] フィルターを使用できます。 これらのタイプでは設定可能な数値を入力します。
ユーザーが複数の値を選択できるようにするには、[複数値] プロパティを [Yes] に設定します。
[Boolean] データ タイプでも [値のリスト] を使用できます。 [Boolean] データ タイプでは、[値のリスト] に true と false の 2 つの値が含まれます。 true 値が常にリストの 1 番目の値になります。 これらの値は、コマンド ラインで値を指定するために使用されます。 たとえば、[フィールドの追加 (Add Field)] と、[IsNullable] プロパティで使用される {NULLABLE | NON_NULLABLE} キーワードをご参照ください。
ワークスペース
ワークスペース フィルターは、使用できる入力ワークスペースのタイプを指定します。 3 つの値は次のとおりです。
- [ファイル システム] - シェープファイル、カバレッジ、INFO テーブル、およびグリッドを格納するためのシステム フォルダー
- [ローカル データベース] - パーソナル ジオデータベースまたはファイル ジオデータベース
- [リモート データベース] - エンタープライズ データベース接続
1 つまたは複数の値を設定できます。
依存関係
[依存関係] プロパティには次の 2 つの目的があります。
- 派生出力パラメーターの場合、[依存関係] はツールによって変更される入力パラメーターに設定されます。 出力データと [依存関係] の詳細については、[タイプ] プロパティの説明をご参照ください。
- 入力パラメーターの場合、[依存関係] にはデータ タイプに使用されるその他のパラメーターの名前が含まれます。 たとえば、入力フィールド データ タイプの場合、[依存関係] はフィールドを含むテーブル パラメーターの名前に設定します。
次の表のように、[依存関係] は特定の入力パラメーターに対してのみ設定できます。
入力データ タイプ | データ タイプからの取得 | 説明 |
---|---|---|
[フィールド] または [SQL 文] | テーブル | そのフィールドを持つテーブル |
[INFO アイテム] または [INFO 式] | INFO テーブル | そのアイテムを持つ INFO テーブル |
カバレッジ フィーチャクラス | カバレッジ | フィーチャを含むカバレッジ |
[面積単位] または [距離単位] | ジオデータセット | デフォルト単位の決定に使用される地理データセット |
座標系 | ワークスペース | デフォルトの座標系の決定に使用されるワークスペース |
Network Analyst 階層の設定 | ネットワーク データセット | 階層情報を持つネットワーク データセット。 |
Geostatistical Value Table | Geostatistical レイヤー | テーブルを含む解析レイヤー |
ネットワーク移動モード | [ネットワーク データ ソース]、[ネットワーク データセット]、[ネットワーク データセット レイヤー] | 移動モードのリスト |
シンボル
ツールの出力がフィーチャ セット、ラスター、TIN、またはレイヤーの場合は、レイヤー ファイル (*.lyrx) の場所を [シンボル] プロパティで指定できます。 ツールを実行すると出力がディスプレイに追加され、シンボル レイヤー ファイルに定義されたシンボルを使用して描画されます。
注意:
レイヤー ファイルは、ツールを実行するたびに読み込まれます。 レイヤー ファイルが (移動または削除されたために) 見つからない場合、デフォルトのシンボルが使用されます。