使用多值输入
很多地理处理工具的输入参数可接受多个值。在 Python 窗口中查看工具引用页面或工具用法时,用括号 [ ] 括起来的参数表示其可接受值列表。例如,删除字段工具可接受要删除的字段列表,参数用法为 [drop_field, ...]。有些参数(例如,联合工具的 input_features 参数)可接受列表的列表,其用法为 [[in_features, {Rank}], ...]。
任何可接受值列表(或值列表的列表)的参数即为多值 参数 - 可接受一个或多个值。可通过三种方式来指定多值参数:
- 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 允许将值组织到一个由行和列组成的虚拟表中。创建值表时需指定列数。默认为单列。
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")
相关主题
5/10/2014