スクリプト ツール パラメーターの設定

ほぼすべてのツールにはパラメーターがあり、その値は [ジオプロセシング] ウィンドウまたはスクリプト内で設定します。 ツールを実行すると、パラメーター値がツールのソース コードに送信されます。 ツールはこれらの値を読み取り、それに応じて処理します。

パラメーターの詳細については、「スクリプト ツールのパラメーターの概要」をご参照ください。

スクリプト ツール パラメーターは、スクリプト ツールを作成する際に設定できます。 スクリプト ツール パラメーターは、ツールの [プロパティ] ダイアログ ボックスから追加、削除、変更することもできます。 スクリプト ツールのプロパティにアクセスするには、ツールを右クリックし、[プロパティ] をクリックして [パラメーター] タブをクリックします。

パラメーターを追加するには、[ラベル] 列で最初の空のセルをクリックして、パラメーターの名前を入力します。 この名前が [ジオプロセシング] ウィンドウに表示されます。名前にはスペースを含めることができます。 [名前] 列のデフォルトのパラメーター名は [ラベル] 値に基づいて作成されますが、変更することができます。 パラメーター名は 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) の場所を指定できます。 ツールを実行すると、出力がディスプレイに追加され、シンボル レイヤー ファイル内に定義されているシンボルを使用して描画されます。

注意:

レイヤー ファイルは、ツールを実行するたびに読み込まれます。 レイヤー ファイルが (移動または削除されたために) 見つからない場合、デフォルトのシンボルが使用されます。

関連トピック