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

ほぼすべてのツールにはパラメータがあり、そのパラメータ値はツール ダイアログ ボックスまたはスクリプト内で設定します。ツールを実行すると、パラメータ値がツールのソース コードに送られます。ツールはその値を読み込んで、処理を続けます。

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

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

[スクリプトの追加] ウィザードまたは [プロパティ] ダイアログ ボックスのどちらでパラメータを設定する場合でも、手順(ここで説明します)は同じです。

新しいパラメータを追加するには、[表示名] 列の最初の空のセルをクリックして、パラメータの名前を入力します。これは、ツール ダイアログ ボックスに表示される名前です。名前には、スペースを入れることができます。Python の構文では、パラメータ名はスペースをアンダースコア(_)に置き換えた表示名になります。

パラメータの新規作成

パラメータの表示名を入力したら、次のように [データ タイプ] セルをクリックして、パラメータのデータ タイプを選択します。

パラメータのデータ タイプの定義

次のように、各パラメータには設定可能な追加プロパティがあります。

パラメータ プロパティ

プロパティ

説明

タイプ

[Required]、[Optional]、[Derived] のいずれかを指定できます。[Derived] とは、ツールのユーザはパラメータの値を入力しないことを意味しています。[Derived] タイプは必ず出力パラメータになります。

方向

[Input] または [Output] のいずれかを指定できます。パラメータの [タイプ] が [Derived] の場合、[方向] は必ず [Output] になります。

複数値

値のリストにする場合は [Yes] になります。単一値の場合は [No] になります。

デフォルトまたはスキーマ

パラメータのデフォルト値です。パラメータのデータ タイプがフィーチャ セットまたはレコード セットの場合、[デフォルト][スキーマ] に置き換えられます。

環境

パラメータのデフォルト値が環境設定から取得される場合、このプロパティには、環境設定の名前が含まれます。

フィルタ

パラメータに特定のデータセットまたは値だけを入力する場合、フィルタを指定できます。フィルタは 6 つの種類があります。選択できるフィルタのタイプは、パラメータのデータ タイプによって変わります。

取得元

このプロパティは、派生出力パラメータと入力パラメータのデータ タイプに適用されます。派生出力パラメータの場合、[取得元] は、出力の定義を含むパラメータに設定できます。入力パラメータの場合、[取得元] は、入力に必要な情報を含むパラメータに設定されます。

シンボル

このプロパティは、出力パラメータだけに適用されます。値は、出力を表示するためのシンボルを含むレイヤ ファイル(*.lyr)の場所です。

パラメータ プロパティ

タイプ

タイプには 3 つの選択肢があります。

注意注意:

スクリプト ツールが派生出力を持つ場合、SetParameterAsText() 関数を使って、スクリプト内の派生出力パラメータの値を設定する必要があります。

すべてのツールには出力が必要です

すべてのスクリプト ツールは、ModelBuilder で使用できるように、出力パラメータを持つ必要があります。ModelBuilder の基本概念は、ツールの出力を他のツールの入力と接続することです。スクリプト ツールが出力パラメータを持たないと、そのツールは ModelBuilder であまり役に立たなくなってしまいます。少なくとも、ツールが正常に終了した場合は true、それ以外の場合は false のブール型を出力させることができます。

入力パラメータを変更する派生出力

次の図は、ModelBuilder 内で使用される、[フィールド値の更新(Update Field Values)] という架空のスクリプト ツールを示したものです(説明のため、[フィールド値の更新(Update Field Values)] は、組織が既知のテキスト フィールド群の内容を調べて、スペルミスや大文字と小文字のエラーを修正するために使用するものとします)。[フィールド値の更新(Update Field Values)] は、新しいフィーチャクラスを作成しませんが、入力フィーチャクラスのフィールド値を更新します。

ModelBuilder 内で出力のないツール

次の図は、[フィールド値の更新(Update Field Values)] の正しいパラメータ定義です。[フィールド値の更新(Update Field Values)] には、[タイプ] が [Derived] に設定された出力フィーチャクラス パラメータがあります。このツールは出力が入力と同じであるため、[取得元] には入力パラメータが設定されています(([取得元] はパラメータの名前を使用するため、表示名のスペースがアンダースコアに置き換えられています)。

派生出力を持つツール

入力パラメータを変更しない派生出力

次の図は、別のツールを示したものです。このツールは、出力が派生ですが、取得元は入力パラメータではありません([取得元] が空白になっています)。このシナリオでは、[データのリポジトリへの転送(Post Data to Repository)] という架空のツールが、入力フィーチャクラスを既知のワークスペース(リポジトリ)にコピーしてから、日付/時間フィールドを追加および入力しています。

取得元が入力パラメータでない派生出力データ

出力値の設定

上のモデルでは、[フィーチャのコピー(Copy Features)] ツールは空(黄色ではなく白)であることに注意してください。これは、[出力フィーチャ] 変数が、緑色であるにもかかわらず、値を持っていないためです。出力フィーチャの名前と場所は、ツールを実行するまでわかりません。この場合、ArcPy 関数の SetParameterAsText() を使用して、スクリプトで出力値を指定する必要があります。SetParameterAsText() 関数は、テキスト文字列または値テーブルなどのオブジェクトのいずれかを使用して、出力パラメータの値を設定します。

ツールの整合チェック コードを作成することで、ツールを実行する前に出力の値を設定することができます。

ツールの整合チェックの詳細

次のコード例では、上記の [データのリポジトリへの転送(Post Data to Repository)] スクリプトの処理に基づき、SetParameterAsText() を使用しています。

# Post data to Repository - copies the input features to the
#  current repository, adding and populating a date
#  field
#

# Import system modules and arcpy
#
import sys
import string
import os
import arcpy

# Get the value of the input parameter
#
inFC = arcpy.GetParameterAsText(0)

# Create the pathname to the output feature class.
#  1) get the name of the feature class
#  2) remove any file extension, such as ".shp"
#     (we're copying to a geodatabase which doesn't
#      allow file extensions, like .shp)
#
fcName = os.path.basename(inFC) 
fcName = os.path.splitext(fcName)[0]
repository = "e:/repository/featuredata.gdb"
outFC = os.path.join(repository, fcName)

# Copy the input to the output, add the date field
#
arcpy.CopyFeatures_management(inFC, outFC)
arcpy.AddField_management(outFC, "PostDate", "DATE")

# Create a locale-specific string containing the current date 
#  and time, then calculate it into the PostDate field, adding
#  the required quotes around the postTime string.
#
import time
postTime = time.strftime("%x %X")
arcpy.AddMessage(postTime)
qPostTime = "\"" + postTime + "\""
arcpy.CalculateField_management(outFC, "PostDate", qPostTime)

# Set output parameter
#
arcpy.SetParameterAsText(1, outFC)

データ以外の出力値

上の例は、派生データセットの出力を示しています。しかし、一部のツールはデータセット以外の値を出力します。たとえば、[行のカウント(Get Count)] ツールは、テーブル内の行数を含む Long データ タイプを出力します。データセット以外の値を出力することは、よくあります。関連する複数のデータセットを解析して、一連の数値や正常/失敗のブール値だけを出力するスクリプトなどを独自に作成できます。

値のデータ タイプ(Long や Boolean など)を含む出力パラメータは、必ず [Required] ではなく [Derived] になります。

方向

このプロパティは、パラメータがツールへの入力とツールの出力のどちらであるかを定義します。

パラメータの [タイプ] が [Derived] の場合、パラメータの [方向] は自動的に [Output] に設定されます。

複数値

パラメータで単一値ではなく、値のリストを処理できるようにする場合、[複数値] プロパティを [Yes] に設定します。

ツール ダイアログ ボックスには、複数値で使用するユーザ インタフェース コントロールが、次のように 2 種類あります。

両方の種類の複数値コントロールは、次のとおりです。

複数値コントロール

複数値は、セミコロンで区切られた文字列として、スクリプトに渡されます。上の図ですべての道路タイプを選択した場合、パラメータ値は Interstates;Primary roads;Secondary roads となります。区切られた文字列を分割するには、次のコード例のように Python の split() メソッドを使用します。

roadTypes = arcpy.GetParameterAsText(0)
roadTypeList = roadTypes.split(";")

# Process each road type
#
for rType in roadTypeList:
  # rType contains an individual road type string (ex: "Interstates")
  # 
  arcpy.AddMessage("Processing: " + rType)

デフォルト

デフォルト値は、スクリプトのツール ダイアログ ボックスが開いたときのパラメータの内容になります。また、スクリプト内のパラメータに # が入力された場合に使用される値でもあります。[デフォルト] プロパティに値を指定しない場合、スクリプトのダイアログ ボックスが開いたときのパラメータ値は空白になります。このプロパティに値を指定した場合、[環境] プロパティは無効になります。[環境] プロパティを有効化するには、[デフォルト] プロパティを消去します。

スキーマ

入力パラメータのデータ タイプが [フィーチャ セット] または [レコード セット] の場合、入力するフィーチャのフィールドとジオメトリ タイプを定義しているスキーマの場所を指定する必要があります。スキーマは、フィーチャクラス、テーブル、またはレイヤ ファイル(*.lyr)のいずれかです。

フィーチャ セットとレコード セットについて

[フィーチャ セット] と [レコード セット] データ タイプでは、データを対話的に入力できます。[フィーチャ セット] を使用すると、スクリプトのユーザは、マップをクリックすることで ArcMap 内にフィーチャを対話的に作成できます。[レコード セット] を使用すると、ユーザは単純なテーブル グリッド内に行を対話的に作成できます。

フィーチャ セットとレコード セット

フィーチャ セットとレコード セットの詳細については、以下のリンクをご覧ください。

トピック

説明

フィーチャ セットとレコード セット

Python の FeatureSet および RecordSet の使用法について説明しています。

フィーチャおよびレコードの対話型入力コントロールの使用

フィーチャ セットとレコード セットのコントロールの使用法を説明しています。

フィーチャ セットとレコード セットに関するトピック

環境

[環境] の横のセルを右クリックして、環境設定の名前を選択すると、環境設定の値にパラメータのデフォルト値を設定できます。環境設定を選択した場合、[デフォルト] プロパティは無視されます。[デフォルト] プロパティを [環境] プロパティの代わりに使用するには、ドロップダウン リストから空白のエントリを選択して、[環境] プロパティ消去します。

環境設定の選択

フィルタ

パラメータに特定の値またはデータセット タイプだけを入力する場合、フィルタを指定できます。[フィルタ] の横のセルをクリックして、ドロップダウン リストから適切なフィルタを選択します。ダイアログ ボックスが開いたら、フィルタの値を指定します。フィルタは 6 つの種類があります。選択できるフィルタのタイプは、パラメータのデータ タイプによって変わります。

フィルタのタイプ

値のリスト

文字列または数値のリスト。パラメータのデータ タイプが String、Long、Double、Boolean の場合に使用されます。

範囲

最小値と最大値。Long および Double のデータ タイプの場合に使用されます。

フィーチャクラス

使用できるフィーチャクラス タイプのリスト: ポイント、マルチポイント、ポリライン、ポリゴン、マルチパッチ、球体、アノテーション、ディメンション。複数の値をフィルタに設定できます。

ファイル

接尾辞のリスト。「txt; e00; ditamap」のように指定します。

フィールド

使用できるフィールド タイプのリスト。これには、Short、Long、Single、Double、Text、Date、OID、Geometry、BLOB、Raster、GUID、GlobalID、および XML が含まれます。複数の値をフィルタに設定できます。

ワークスペース

使用できるワークスペース タイプのリスト。これには、File System、Local Database、Remote Database があります。1 つまたは複数の値を設定できます。

フィルタのタイプと値

通常、選択できるフィルタのタイプは 1 つだけです。Long と Double だけは、値のリストと範囲の 2 つを選択できます。

スクリプト ツールの ToolValidator クラスをカスタマイズすることで、Python によってプログラムでフィルタを設定することもできます。

値のリスト

値のリスト フィルタは、キーワードのセットを提供するときに便利です。多くのツールには、あらかじめ定義されたキーワードのセットがあります。たとえば、[フィールドの追加(Add Field)] の [フィールド タイプ] パラメータや、[オーバーレイ] ツールセットに含まれる多くのツールの [結合する属性] パラメータなどです。

Long および Double のデータ タイプで、値のリスト フィルタを使用できます。これらのタイプでは設定可能な数値を入力します。

複数の値を選択できるようにするには、[複数値] プロパティを [Yes] に設定します。

Boolean データ タイプでも値のリストを使用できます。Boolean データ タイプでは、値のリストに true 値と false 値の 2 つの値が含まれます。true 値が常にリストの 1 番目の値になります。これらの値は、コマンド ラインで値を指定するために使用されます。たとえば、[フィールドの追加(Add Field)]IsNullable プロパティで使用される NULLABLE と NON_NULLABLE のキーワードをご参照ください。

範囲

Long または Double パラメータは、範囲フィルタを持つことができます。範囲フィルタでは、最小値と最大値の 2 つの値を使用します。リストの 1 番目の値が最小値です。最小値と最大値はどちらも範囲に含まれます。

フィーチャクラス

このフィルタでは、1 つ以上のフィルタ値を選択します。入力フィーチャクラスが、フィルタの値に対してチェックされます。たとえば、フィルタの値にポイントだけを選択した場合は、パラメータの値としてポイント フィーチャクラスしか入力できません。

ファイル

ファイル フィルタには、「*.txt」(簡単なテキスト ファイル)や「`.csv」(カンマ区切りファイル)などの、使用できるファイル接尾辞のリストが含まれます。接尾辞には任意のテキストを使用できます。ArcGIS で認識される接尾辞である必要はありません。接尾辞の長さは任意で、ドットは含めません。

ファイル フィルタの指定

フィールド

フィールド フィルタは、使用できるフィールド タイプを定義します。これには、Short、Long、Single、Double、Text、Date、OID、Geometry、BLOB、Raster、GUID、GlobalID、および XML が含まれます。複数の値をフィルタに設定できます。

ワークスペース

ワークスペース フィルタは、使用できる入力ワークスペースのタイプを指定します。これには 3 つの値があります。

  • ファイル システム

    シェープファイル、カバレッジ、INFO テーブル、およびグリッドを格納するためのシステム フォルダ

  • ローカル データベース

    パーソナルまたはファイル ジオデータベース

  • リモート データベース

    ArcSDE データベース接続

取得元

[取得元] プロパティには 2 つの目的があります。

フィールド データ タイプの [取得元]

次の表のように、[取得元] は特定の入力パラメータに対してのみ設定できます。

入力データ タイプ

取得元のデータ タイプ

説明

フィールドまたは SQL 文

テーブル

そのフィールドを持つテーブル

INFO アイテムまたは INFO 条件式

INFO テーブル

そのアイテムを持つ INFO テーブル

カバレッジ フィーチャクラス

カバレッジ

フィーチャを含むカバレッジ

面積単位または距離単位

ジオデータセット

デフォルト単位の決定に使用される地理データセット

座標系

ワークスペース

デフォルトの座標系の決定に使用されるワークスペース

Network Analyst 階層設定

ネットワーク データセット

階層情報を持つネットワーク データセット。

Geostatistical 値テーブル

Geostatistical レイヤ

テーブルを含む解析レイヤ

取得元のデータ タイプ

シンボル

ツールの出力がフィーチャ セット、ラスタ、TIN、または ArcGIS Network Analyst エクステンション レイヤの場合、[シンボル] プロパティにレイヤ ファイル(*.lyr)の場所を指定できます。ツールを ArcMap、ArcGlobe、ArcScene から実行していて、[ジオプロセシング処理結果をマップに追加] が有効な場合、出力は表示に追加され、シンボル レイヤ ファイルに定義されたシンボルを使用して描画されます。

注意注意:

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

関連トピック

5/10/2014