ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS Desktop

完全なプロ仕様の GIS

ArcGIS Enterprise

エンタープライズ GIS

ArcGIS Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ArcMap

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • エクステンション

Python ツールボックスでのパラメーターの定義

  • 派生出力の操作
  • 複数値パラメーターの作成
  • バリュー テーブル パラメーターの作成
  • パラメーターのデフォルト値の設定
  • パラメーター スキーマの定義
  • パラメーターへのフィルターの適用
  • parameterDependencies
  • symbology
  • category

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

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

Python ツールボックス (*.pyt) のツール パラメーターは、ツール クラスの getParameterInfo メソッドで、Parameter オブジェクトを作成し、そのプロパティを設定することで定義します。

Parameter オブジェクトには多くの読み取り/書き込みプロパティがありますが、すべてのパラメーターに対して設定する必要のあるプロパティは次のとおりです。

プロパティ説明

displayName

このツールのダイアログ ボックスで表示されるパラメーター名。

name

Python のツールの構文内に表示されるパラメーター名。

datatype

Python ツールボックスのすべてのツール パラメーターには、それぞれ対応するデータ タイプがあります。ジオプロセシングでスクリプト ツールのダイアログ ボックスを開くと、パラメーター値がデータ タイプと照合してチェックされます。

データを参照する際にもデータ タイプが使用され、パラメーター データ タイプと一致するデータだけが参照ダイアログ ボックスに表示されるようになっています。

パラメーターのデータ タイプのリストについては、「Python ツールボックスにあるパラメーターのデータ タイプの定義」をご参照ください。

parameterType

parameterType には 3 つの選択肢があります。

  • Required - 値を指定しないと、ツールを実行できません。
  • Optional - パラメーターに値を指定しなくてもかまいません。
  • Derived - パラメーターは出力パラメーター専用です (下の「direction」をご参照ください)。派生出力パラメーターは、ツール ダイアログ ボックスに表示されません。

direction

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

parameterType が Derived に設定されている場合、パラメーター direction は Output に設定する必要があります。

次の例では、フィーチャ レイヤーを受け入れる入力パラメーター、新しいフィールド名を受け入れる入力パラメーター、および最初の入力パラメーターに基づく派生出力パラメーターという 3 つのパラメーターがツールに定義されています。ツール内でこれらのパラメーターを反映するために、getParameterInfo メソッドの最後にパラメーターを返します。

def getParameterInfo(self):
    #Define parameter definitions
    # First parameter
    param0 = arcpy.Parameter(
        displayName="Input Features",
        name="in_features",
        datatype="GPFeatureLayer",
        parameterType="Required",
        direction="Input")
    # Second parameter
    param1 = arcpy.Parameter(
        displayName="Sinuosity Field",
        name="sinuosity_field",
        datatype="Field",
        parameterType="Optional",
        direction="Input")
    param1.value = "sinuosity"
    # Third parameter
    param2 = arcpy.Parameter(
        displayName="Output Features",
        name="out_features",
        datatype="GPFeatureLayer",
        parameterType="Derived",
        direction="Output")
    param2.parameterDependencies = [param0.name]
    param2.schema.clone = True
    params = [param0, param1, param2]
    return params

派生出力の操作

上で示した最後のパラメーターは、派生出力パラメーターです。派生出力パラメーターには、次の 5 つの用途があります。

  • 出力が入力と同じ場合 ([フィールド演算 (Calculate Field)] や上で示した例など)。[フィールド演算 (Calculate Field)] は、入力テーブルの特定フィールドの値を変更します。これは、新しいテーブルを作成したり、入力のスキーマを変更したりはしません。[編集] ツールボックスには、出力が入力と同じその他のツールがあります。
  • ツールが入力のスキーマを変更する場合 ([フィールドの追加 (Add Field)] など)。[フィールドの追加 (Add Field)] は、フィールドを入力テーブルに追加します。これは、新しい出力テーブルは作成しません。
  • ツールが他のパラメーターの情報を使用して出力を作成する場合 ([フィーチャクラスの作成 (Create Feature Class)] ツールなど)。[フィーチャクラスの作成 (Create Feature Class)] ツールでは、ワークスペースと新しいフィーチャクラスの名前を指定して、フィーチャクラスを作成します。
  • ツールがデータセットに対してスカラー値を出力する場合。たとえば、[行のカウント (Get Count)] は、Long の値 (レコードの数) を出力します。ツールがスカラー値を出力する場合、出力は必ず [Derived] になります。
  • ツールが既知の場所にデータを作成する場合。たとえば、既知のワークスペース内にある既存のテーブルを更新するスクリプトなどが挙げられます。ユーザーは、ダイアログ ボックスまたはスクリプト内で、このテーブルを指定する必要はありません。

複数値パラメーターの作成

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

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

  • チェックボックスのリストは、フィールドに使用されるだけでなく、ValueList フィルターが含まれる場合には文字列、Long、Double にも使用されます。
  • その他すべてのデータ タイプには、複数値パラメーター コントロールが表示されます。

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

複数値コントロール

上図では、ユーザーがすべての道路タイプを選択した場合、パラメーター値は ["Interstates", "Primary roads", "Secondary roads"] に設定されます。

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Features",
        name="in_features",
        datatype="GPFeatureLayer",
        parameterType="Required",
        direction="Input",
        multiValue=True)

バリュー テーブル パラメーターの作成

バリュー テーブルと呼ばれるパラメーターを使用すると、複数のエントリを指定できます。たとえば、[アペンド (Append)] や [ユニオン (Union)] をはじめとする多くのツールでは、[入力フィーチャ] パラメーターに複数のデータセットを含めることができ、[ディゾルブ (Dissolve)] ツールと [要約統計量 (Summary Statistics)] ツールでは [統計フィールド] パラメーターに複数のフィールドを含めることができます。

複数値パラメーター コントロールの説明図

バリュー テーブル パラメーターを定義するには、datatype を GPValueTable に設定し、columns プロパティを設定してパラメーターのデータ タイプと列見出しを定義します。次の例では、バリュー テーブル パラメーターは、フィールド名と統計の種類の文字列値 (GPString) を受け入れる 2 つの列を持つように定義されています。ValueList フィルターと値のリストを使用することで、対応する GPValueTable 列にドロップダウン リストを生成できます。バリュー テーブル パラメーターにデフォルト値を設定するには、values プロパティを使用し、値のリストにパラメーター値を指定します。

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName ='Input Features',
        name ='in_features',
        datatype ="GPFeatureLayer",
        parameterType ='Required',
        direction ='Input')
    param1 = arcpy.Parameter(
        displayName='Statistics Field(s)',
        name='stat_fields',
        datatype='GPValueTable',
        parameterType='Required',
        direction='Input')
    param1.parameterDependencies = [param0.name]
    param1.columns = [['Field', 'Field'], ['GPString', 'Statistic Type']]
    param1.filters[1].type = 'ValueList'
    param1.values = [['NAME', 'SUM']]
    param1.filters[1].list = ['SUM', 'MIN', 'MAX', 'STDEV', 'MEAN']

パラメーターのデフォルト値の設定

パラメーターのデフォルト値を設定するには、value プロパティを使用して値を直接適用するか、defaultEnvironmentName を使用して環境設定の値を適用します。

デフォルト値は、スクリプトのツール ダイアログ ボックスが開いたときのパラメーターの内容になります。また、スクリプト内のパラメーターに # が入力された場合に使用される値でもあります。value を指定しない場合、スクリプトのダイアログ ボックスを開いたときに、パラメーター値は空になります。

環境からのデフォルト値の設定

defaultEnvironmentName プロパティを環境設定の名前に設定すると、パラメーターのデフォルト値を環境設定の値に設定できます。環境設定を選択した場合、value プロパティは無視されます。

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Workspace",
        name="in_workspace",
        datatype="DEWorkspace",
        parameterType="Required",
        direction="Input")
    # In the tool's dialog box, the first parameter will show 
    #  the workspace environment's value (if set)
    param0.defaultEnvironmentName = "workspace"

パラメーター スキーマの定義

タイプがフィーチャクラス、テーブル、ラスター、ワークスペースのすべての出力パラメーターは、schema オブジェクトを持ちます。フィーチャクラス、テーブル、ラスター、ワークスペースの出力だけがスキーマを持ちます。他のタイプはスキーマを持ちません。schema オブジェクトは、ジオプロセシングによって作成されます。このスキーマには、パラメーター オブジェクトを通してアクセスし、ツールの出力を記述するためのルールを設定します。スキーマ ルールを設定した後、ジオプロセシングの内部整合チェック コードによって設定したルールが検証され、出力の説明が更新されます。

スキーマの操作の詳細については、「Python ツールボックスでのスキーマの更新」をご参照ください。

入力パラメーターのデータタイプが [フィーチャ セット] または [レコード セット] の場合、入力するフィーチャの fieldsRule と geometryType を指定する必要があります。

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

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

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

フィーチャ セットとレコード セットのコントロールのシンボルとスキーマ (属性とジオメトリ タイプ) を設定するには、パラメーターの value プロパティをフィーチャクラス、テーブル、またはレイヤー ファイル (*.lyr) に設定します。

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Feature Set",
        name="in_feature_set",
        datatype="GPFeatureRecordSetLayer",
        parameterType="Required",
        direction="Input")
    # Use __file__ attribute to find the .lyr file (assuming the
    #  .pyt and .lyr files exist in the same folder)
    param0.value = os.path.join(os.path.dirname(__file__),
                                "Fire_Station.lyr")

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

トピック説明

FeatureSet と RecordSet

FeatureSet および RecordSet オブジェクトを Python で使用する方法について説明しています。

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

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

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

パラメーターへのフィルターの適用

パラメーターにフィルターを適用すると、パラメーターの選択肢を絞ることができます。たとえば、選択肢をテキスト フィールドだけに制限するフィールド フィルターを設定できます。

ジオプロセシングは、文字列、long、double、フィーチャクラス、ファイル、フィールド、ワークスペースのタイプのパラメーターに対して、フィルターを自動的に作成します。パラメーターでフィルターを設定していない場合でも、パラメーターには空のフィルターが関連付けられています。空のフィルターは、フィルターがない場合と同じです。空のフィルターに値を追加することで、フィルターを有効化して、ユーザーの選択肢をフィルターの内容に制限することができます。

  • フィルターは、ユーザーに対してデータの参照時に有効な選択肢だけを提供します。ポイント フィーチャクラスにフィルターを設定する場合、ユーザーがデータを参照するときに、ポイント フィーチャクラスだけが表示されます。テキスト フィールドにフィルターを設定する場合、フィールドのドロップダウン リストにはテキスト フィールドだけが表示されます。
  • ユーザーが (リストやファイル ブラウザーから値を選択するのではなく) パラメーター値を入力する場合、その値がフィルターに対してチェックされます。ユーザーが不正な値 (テキスト フィールドではなく数値フィールドなど) を入力した場合、警告またはエラーが自動的に設定されます。

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

フィルターのタイプ値

値のリスト

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

範囲

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

フィーチャ クラス

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

ファイル

接尾辞のリスト (['zip', 'xml'] など)。

フィールド

使用できるフィールド タイプのリスト: Short、Long、Single、Double、Text、Date、OID、Geometry、Blob、Raster、GUID、GlobalID、XML。複数の値をフィルターに設定できます。

ワークスペース

使用できるワークスペース タイプのリスト: ファイル システム、ローカル データベース、リモート データベース。1 つまたは複数の値を設定できます。

フィルターのタイプと値

プロパティ説明

type

フィルターのタイプ (ValueList、Range、FeatureClass、File、Field、Workspace)。Long および Double のパラメーターを扱うときに、フィルターのタイプを設定できます (以下の注意をご参照ください)。その他のタイプのパラメーターの場合、フィルターの有効なタイプは 1 つだけなので、これらのパラメーターのタイプの設定は無視されます。値をフィルターしない場合は、リスト プロパティを空のリストに設定します。

list

フィルターの値の Python リスト。値をフィルターしない場合は、リスト プロパティを空のリストに設定します。

filter のプロパティ

通常、選択できるフィルターのタイプは 1 つだけです。Long と Double だけは、Value List と Range の 2 つを選択できます。

値のリスト

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

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

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input value",
        name="in_value",
        datatype="GPLong",
        parameterType="Required",
        direction="Input")
    # Set a value list of 1, 10 and 100
    param0.filter.type = "ValueList"
    param0.filter.list = [1, 10, 100]

ユーザーが複数の値を選択できるようにするには、multiValue プロパティを True に設定します。

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

範囲

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

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input range",
        name="in_range",
        datatype="GPLong",
        parameterType="Required",
        direction="Input")
    # Set an acceptable range of 1 to 10
    param0.filter.type = "Range"
    param0.filter.list = [1, 10]

フィーチャ クラス

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

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Features",
        name="in_features",
        datatype="GPFeatureLayer",
        parameterType="Required",
        direction="Input")
    param0.filter.list = ["Polygon"]

ファイル

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

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input File",
        name="in_file",
        datatype="DEFile",
        parameterType="Required",
        direction="Input")
    # To define a file filter that includes .csv and .txt extensions,
    #  set the filter list to a list of file extension names
    param0.filter.list = ['txt', 'csv']

フィールド

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

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Features",
        name="in_features",
        datatype="GPFeatureLayer",
        parameterType="Required",
        direction="Input")
    param1 = arcpy.Parameter(
        displayName="Field",
        name="field",
        datatype="Field",
        parameterType="Required",
        direction="Input")
    # Set the filter to accept only fields that are Short or Long type
    param1.filter.list = ['Short', 'Long']
    param1.parameterDependencies = [param0.name]

ワークスペース

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

ワークスペース フィルター説明

ファイル システム

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

ローカル データベース

ジオデータベース

リモート データベース

エンタープライズ データベース接続

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Workspace",
        name="in_workspace",
        datatype="DEWorkspace",
        parameterType="Required",
        direction="Input")
    # Set the filter to accept only local (personal or file) geodatabases
    param0.filter.list = ["Local Database"]

parameterDependencies

parameterDependencies プロパティには 2 つの目的があります。

  • 派生出力パラメーターの場合、parameterDependencies はツールによって変更される入力パラメーターに設定されます。
  • 入力パラメーターの場合、parameterDependencies にはデータ タイプに使用されるその他のパラメーターの名前が含まれます。

# Third parameter
param2 = arcpy.Parameter(
    displayName="Output Features",
    name="out_features",
    datatype="GPFeatureLayer",
    parameterType="Derived",
    direction="Output")
param2.parameterDependencies = [param0.name]
param2.schema.clone = True

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

入力データ タイプ従属パラメーターのデータ タイプ説明

フィールドまたは SQL 文

テーブル

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

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

INFO テーブル

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

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

カバレッジ

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

面積単位または距離単位

ジオデータセット

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

座標系

ワークスペース

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

Network Analyst 階層の設定

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

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

Geostatistical 値テーブル

Geostatistical レイヤー

Geostatistical Analyst ツールで使用されるデータセットとフィールドのテーブル

parameterDependencies のデータ タイプ

symbology

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

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Raster",
        name="in_raster",
        datatype="DERasterDataset",
        parameterType="Required",
        direction="Input")
    param1 = arcpy.Parameter(
        displayName="Output Raster",
        name="out_raster",
        datatype="DERasterDataset",
        parameterType="Required",
        direction="Output")
    # Use __file__ attribute to find the .lyr file (assuming the
    #  .pyt and .lyr files exist in the same folder).
    param1.symbology = os.path.join(os.path.dirname(__file__), 
                                    'raster_symbology.lyr')
メモ:

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

category

ツール ダイアログ ボックスのサイズを最小限に抑えるために、パラメーターをさまざまなカテゴリに配置できます。Network Analyst ツールは、次のようにカテゴリを使用しています。同じカテゴリ文字列を持つパラメーターはグループ化されます。

パラメーターのカテゴリ

カテゴリは、必ず未分類パラメーターの後ろに表示されます。必須パラメーターはカテゴリ内に配置しないでください。ツール ダイアログ ボックスに表示されなくなります。

関連トピック

  • Python ツールボックスのパラメーター データ タイプの定義
  • Python ツールボックスとは
  • スクリプト ツールのパラメーターの理解

ArcGIS Desktop

  • ホーム
  • ドキュメント
  • サポート

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • Esri ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
ご意見・ご感想をお寄せください。
Copyright © 2021 Esri. | プライバシー | リーガル