複数値入力の操作
多くのジオプロセシング ツールには、複数の値を受け入れる入力パラメータが存在します。ツールのリファレンス ページやツールの使用法が Python ウィンドウに表示されているときに、パラメータが大括弧 [ ] で囲まれていれば、そのパラメータに値のリストを指定できることを示しています。たとえば、[フィールド削除] ツールは削除するフィールドのリストを受け入れるので、パラメータの使用法は [drop_field, ...] のように表示されます。Union ツールの input_features パラメータなど、一部のパラメータにはリストのリストを指定できます。このパラメータの使用法は、[[in_features, {Rank}], ...] のように表示されます。
値のリスト(または値のリストのリスト)を受け入れるパラメータは、複数値パラメータ、つまり 1 つ以上の値を受け入れるパラメータです。複数値パラメータを指定する方法には、次の 3 つがあります。
- Python リストとして(それぞれの値がリスト内の要素である)
- 文字列として(値はセミコロンで区切られる)
- ValueTable として(値は行と列からなる仮想テーブルに格納される)
次に、それぞれの例を示します。
Python リストとして指定
スクリプト内では、複数値入力は Python リストとして受け渡すことができます。リストは大括弧で囲んで指定し、その値は柔軟性のある Python タイプです。
drop_field パラメータに Python リストを使用した DeleteFields
import arcpy from arcpy import env env.workspace = "C:/base/county.gdb" arcpy.DeleteField_management("roads", ["STREET_NAM", "LABEL", "CLASS"])
in_features パラメータに Python リストを使用した Union
import arcpy from arcpy import env env.workspace = "C:/base/data/gdb" arcpy.Union_analysis([["counties", 2],["parcels", 1]], "state_landinfo")
文字列として指定
複数値文字列がツールの出力値として返されたり、スクリプトの入力パラメータとして渡されたりする場合があるので、スクリプトで複数値文字列を使用する必要が生じることがあります。
drop_field パラメータに複数値文字列を使用した DeleteFields
import arcpy from arcpy import env env.workspace = "C:/base/county.gdb" arcpy.DeleteField_management("roads", "STREET_NAM;LABEL;CLASS")
in_features パラメータに複数値文字列を使用した Union
import arcpy from arcpy import env env.workspace = "C:/base/data/gdb" arcpy.Union_analysis("counties 2;parcels 1", "state_landinfo")
ValueTable の使用
ValueTable を使用すると、行と列からなる仮想テーブルに値を編成できます。値テーブルを作成する際には、列の数を指定します。デフォルトは 1 列です。
drop_field パラメータに ValueTable を使用した DeleteFields
import arcpy from arcpy import env 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 from arcpy import env env.workspace = "C:/base/data/gdb" vt = arcpy.ValueTable(2) vt.addRow("counties 2") vt.addRow("parcels 1") arcpy.Union_analysis(vt, "state_landinfo")