ほぼすべてのツールにはパラメーターがあり、その値は [ジオプロセシング] ウィンドウまたはスクリプト内で設定します。 ツールを実行すると、パラメーター値がツールのソース コードに送信されます。 ツールはこれらの値を読み取り、それに応じて処理します。
パラメーターの詳細については、「スクリプト ツールのパラメーターの概要」をご参照ください。
スクリプト ツール パラメーターは、スクリプト ツールを作成する際に設定できます。 スクリプト ツール パラメーターは、ツールの [プロパティ] ダイアログ ボックスから追加、削除、変更することもできます。 スクリプト ツールのプロパティにアクセスするには、ツールを右クリックし、[プロパティ] をクリックして [パラメーター] タブをクリックします。
パラメーターを追加するには、[ラベル] 列で最初の空のセルをクリックして、パラメーターの名前を入力します。 この名前が [ジオプロセシング] ウィンドウに表示されます。名前にはスペースを含めることができます。 [名前] 列のデフォルトのパラメーター名は [ラベル] 値に基づいて作成されますが、変更することができます。 パラメーター名は 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 エクステンション ツールでカテゴリが使用されています。
カテゴリは、未分類パラメーターの後に表示されます。 必須パラメーターはカテゴリ内に配置しないでください。[ジオプロセシング] ウィンドウに表示されなくなります。
複数値
単一値ではなく、値のリストをパラメーターで処理する場合は、[複数値] プロパティを [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) を使用できます。 レイヤー フィーチャを指定すると、レイヤー ファイルへのパスが内部化され、[プロパティ] ダイアログ ボックスを再び開いたときに、セルに [... 埋め込み済み ...] ラベルが表示されます。
環境
[環境] で適切なセルを右クリックして環境設定の名前を選択すると、パラメーターのデフォルト値を環境設定の値に設定できます。
フィルター
パラメーターに特定の値またはデータセット タイプだけを入力する場合、フィルターを指定できます。 [フィルター] で適切なセルをクリックして、ドロップダウン リストから適切なフィルター タイプを選択します。 ダイアログ ボックスが開いたら、フィルターの値を指定します。 次に示されているように、10 種類のフィルターが用意されており、使用できるフィルターのタイプは、パラメーターのデータ タイプによって決まります。
通常、使用できるフィルターのタイプは 1 つだけです。 [Long] と [Double] だけは、[Value List] と [Range] の 2 つを選択できます。
また、スクリプト ツールの ToolValidator クラスをカスタマイズすると、Python によりフィルターをプログラムで設定できます。
面積単位
面積単位のフィルターは、使用できる単位タイプを定義します。使用できる単位タイプは、[平方インチ]、[平方フィート]、[平方ヤード]、[エーカー]、[平方マイル]、[平方ミリメートル]、[平方センチメートル]、[平方デシメートル]、[平方メートル]、[アール]、[ヘクタール]、[平方キロメートル]、および [不明] です。
フィーチャ タイプ
フィーチャ タイプ フィルターでは、使用できるフィーチャクラス タイプを定義します。使用できるフィーチャクラス タイプは、[ポイント]、[マルチポイント]、[ポリゴン]、[ポリライン]、[アノテーション]、および [ディメンション] です。 複数の値を指定することができます。
このフィルターでは、1 つ以上のフィルター値を選択します。 入力フィーチャクラスが、フィルターの値に対してチェックされます。 たとえば、フィルターの値として [ポイント] だけを指定した場合は、パラメーターの値としてポイント フィーチャクラスしか入力できません。
フィールド
フィールド フィルターでは、使用できるフィールド タイプを定義します。使用できるフィールド タイプは、[Short]、[Long]、[Float]、[Long (64 ビット整数)]、[Double]、[Text]、[Date]、[OID]、[Time Only]、[Date Only]、[オフセット付きタイムスタンプ]、[Geometry]、[Blob]、[Raster]、[GUID]、[GlobalID]、および [XML] です。 複数の値を指定することができます。
ファイル
ファイル フィルターには、txt (簡単なテキスト ファイル) や csv (カンマ区切りファイル) などの、使用できるファイル接尾辞のリストが含まれます。 接尾辞には任意のテキストを使用できます。ArcGIS で認識される接尾辞である必要はありません。 接尾辞の長さは任意で、ドットは含めません。 複数の接尾辞はセミコロン区切り文字で区切って指定します。
距離単位
距離単位フィルターは、使用できる単位タイプを定義します。使用できる単位タイプは、[インチ]、[ポイント]、[フィート]、[ヤード]、[マイル]、[海里]、[ミリメートル]、[センチメートル]、[メートル]、[キロメートル]、[度 (10 進)]、[デシメートル]、[度]、および [不明] です。 複数の値を指定することができます。
範囲
範囲フィルターでは、最小と最大の 2 つの値を使用します。 最小値と最大値はどちらも範囲に含まれます。 Long または Double パラメーターで、このフィルターを使用できます。
時間単位
時間単位フィルターは、使用できる単位タイプを定義します。使用できる単位タイプは、[ミリ秒]、[秒]、[分]、[時間]、[日]、[週]、[月]、[年]、[10 年]、[世紀]、および [不明] です。 複数の値を指定することができます。
移動モード ユニット タイプ
このフィルターを使用して、移動モードのインピーダンス属性に基づき使用できる移動モード タイプを設定できます。 オプションは [Time]、[Distance]、および [Other] です。 デフォルトは 3 つすべてのタイプを許可します。
値のリスト
このフィルターを使用して、一連のキーワードを指定できます。 多くのツールには、あらかじめ定義された一連のキーワードがあります。たとえば、[フィールドの追加 (Add Field)] ツールの [フィールド タイプ] パラメーターや、オーバーレイ ツールセットに含まれる多くのツールの [結合する属性] パラメーターです。
Long および Double データ タイプに [値のリスト] フィルターを使用できます。 これらのタイプでは設定可能な数値を入力します。
ユーザーが複数の値を選択できるようにするには、[複数値] プロパティを [Yes] に設定します。
Boolean データ タイプにも [値のリスト] フィルターを使用できます。 Boolean データ タイプでは、[値のリスト] に true と false の 2 つの値が含まれます。 true 値はリスト内で最初の値になります。 これらの値は、コマンド ラインで値を指定するために使用されます。 たとえば、[フィールドの追加 (Add Field)] と、field_is_nullable パラメーターで使用される {NULLABLE | NON_NULLABLE} キーワードをご参照ください。
ワークスペース
ワークスペース フィルターは、使用できる入力ワークスペースのタイプを指定します。 3 つの値は次のとおりです。
- [ファイル システム] - シェープファイル、カバレッジ、INFO テーブル、およびグリッドを格納するためのシステム フォルダー
- [ローカル データベース] - パーソナル ジオデータベースまたはファイル ジオデータベース
- [リモート データベース] - エンタープライズ データベース接続
複数の値を指定することができます。
依存関係
[依存関係] プロパティには次の 2 つの目的があります。
- 派生出力パラメーターの場合、[依存関係] はツールによって変更される入力パラメーターに設定されます。 出力データと [依存関係] フィルターの詳細については、上記のタイプ プロパティのセクションをご参照ください。
- 入力パラメーターの場合、[依存関係] にはデータ タイプに使用されるその他のパラメーターの名前が含まれます。 たとえば、入力フィールド データ タイプの場合、[依存関係] はフィールドを含むテーブル パラメーターの名前に設定します。
次の表に示されているように、[依存関係] フィルターは特定の入力パラメーターに対してのみ設定できます。
入力データ タイプ | データ タイプからの取得 | 説明 |
---|---|---|
[フィールド] または [SQL 文] | テーブル | そのフィールドを持つテーブル |
[INFO アイテム] または [INFO 式] | INFO テーブル | そのアイテムを持つ INFO テーブル |
カバレッジ フィーチャクラス | カバレッジ | フィーチャを含むカバレッジ |
[面積単位] または [距離単位] | ジオデータセット | デフォルト単位の決定に使用される地理データセット |
座標系 | ワークスペース | デフォルトの座標系の決定に使用されるワークスペース |
Network Analyst 階層の設定 | ネットワーク データセット | 階層情報を持つネットワーク データセット。 |
Geostatistical 値テーブル | Geostatistical レイヤー | テーブルを含む解析レイヤー |
ネットワーク移動モード | [ネットワーク データ ソース]、[ネットワーク データセット]、または [ネットワーク データセット レイヤー] | 移動モードのリスト |
値テーブル パラメーターでは、フィールド列はすべて、値テーブルの最初のデータ列に対して暗黙的な依存関係を持ちます。 後続のフィールド列に対するパラメーターのドロップダウン リストには、データで使用可能なフィールドが自動的に含まれます。
シンボル
ツールの出力がフィーチャ セット、ラスター、TIN、またはレイヤーの場合は、[シンボル] プロパティでレイヤー ファイル (.lyrx) の場所を指定できます。 ツールを実行すると、出力がディスプレイに追加され、シンボル レイヤー ファイル内に定義されているシンボルを使用して描画されます。
注意:
レイヤー ファイルは、ツールを実行するたびに読み込まれます。 レイヤー ファイルが (移動または削除されたために) 見つからない場合、デフォルトのシンボルが使用されます。