複数値入力の操作

多くのジオプロセシング ツールには、複数の値を受け入れる入力パラメーターが存在します。ツールのリファレンス ページやツールの使用法が Python ウィンドウに表示されているときに、パラメーターが大括弧 [ ] で囲まれていれば、そのパラメーターに値のリストを指定できることを示しています。たとえば、[フィールドの削除 (Delete Field)] ツールは削除するフィールドのリストを受け入れるので、パラメーターの使用法は [drop_field, ...] のように表示されます。[ユニオン (Union)] ツールの input_features パラメーターなど、一部のパラメーターには、リストのリストを指定できます。このパラメーターの使用法は、[[in_features, {Rank}], ...] のように表示されます。

値のリスト (または値のリストのリスト) を受け入れるパラメーターは、複数値パラメーター、つまり 1 つ以上の値を受け入れるパラメーターです。複数値パラメーターを指定する方法には、次の 3 つがあります。

  1. リストとして (それぞれの値がリスト内の要素である)
  2. 文字列として (値はセミコロンで区切られる)
  3. ValueTable として (値は行と列からなる仮想テーブルに格納される)

次に、それぞれの例を示します。

リストとして指定

スクリプト内では、複数値入力はリストとして受け渡すことができます。リストは大括弧で囲んで指定し、その値は柔軟性のある Python タイプです。

drop_field パラメーターに Python リストを使用した DeleteFields

import arcpy 

arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.DeleteField_management('roads', ['STREET_NAM', 'LABEL', 'CLASS'])

in_features パラメーターに Python リストを使用した Union

import arcpy

arcpy.env.workspace = 'C:/base/data/gdb' 
arcpy.Union_analysis([['counties', 2],['parcels', 1]], 'state_landinfo')

文字列として指定

複数値文字列がツールの出力値として返されたり、スクリプトの入力パラメーターとして渡されたりする場合があるので、スクリプトで複数値文字列を使用する必要が生じることがあります。

drop_field パラメーターに複数値文字列を使用した DeleteFields

import arcpy 

arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.DeleteField_management('roads', 'STREET_NAM;LABEL;CLASS')

in_features パラメーターに複数値文字列を使用した Union

import arcpy 

arcpy.env.workspace = 'C:/base/data/gdb' 
arcpy.Union_analysis('counties 2;parcels 1', 'state_landinfo')

ValueTable の使用

ValueTable を使用すると、行と列からなる仮想テーブルに値を編成できます。値テーブルを作成する際には、列の数を指定します。デフォルトは 1 列です。

drop_field パラメーターに ValueTable を使用した DeleteFields

import arcpy 

arcpy.env.workspace = 'C:/base/county.gdb'

vt = arcpy.ValueTable()
vt.addRow('STREET_NAM')
vt.addRow('LABEL')
vt.addRow('CLASS')

arcpy.DeleteField_management('roads', vt)

in_features パラメーターに ValueTable を使用した Union

import arcpy 

arcpy.env.workspace = 'C:/base/data/gdb' 

vt = arcpy.ValueTable(2)
vt.addRow('counties 2')
vt.addRow('parcels 1')

arcpy.Union_analysis(vt, 'state_landinfo')