许多地理处理工具都具有接受多值的参数。 任何多值参数(接受数据类型的多个值)或值表(将两种或多种数据类型组合成类似表的结构的参数数据类型)都接受多个值。
多值和值表参数可指定为以下方式:
- 列表 - 值是列表中的元素。
- 字符串 - 用分号分隔多个值。
- ValueTable 对象 - 值存储在虚拟表的行和列中。
在工具参考页面的 Python 选项卡上,多值和值表参数将在参数名称下方的方括号 ([]) 中显示。 例如,删除字段工具有一个多值字段参数,参数用法显示为 [drop_field, ...]。 联合工具有一个接受输入数据集和等级值的值表参数。 其参数用法显示为 [[in_features, {rank}], ...]。
作为列表
在 Python 中,多值和值表参数可表示为列表。 列表会用括号括起来,并且是灵活的 Python 类型。
DeleteField 函数使用 drop_field 参数的列表。
import arcpy
arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.management.DeleteField('roads', ['STREET_NAM', 'LABEL', 'CLASS'])
Union 函数使用值表 in_features 参数的列表。
import arcpy
arcpy.env.workspace = 'C:/base/data/gdb'
arcpy.analysis.Union([['counties', 2],['parcels', 1]], 'state_landinfo')
作为字符串
多值和值表参数可表示为字符串。 在多值参数中,用分号分隔值。 在值表参数中,每行用分号分隔,行内的值用空格分隔。
DeleteField 函数使用多值 drop_field 参数的字符串。
import arcpy
arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.management.DeleteField('roads', 'STREET_NAM;LABEL;CLASS')
Union 函数使用值表 in_features 参数的字符串。
import arcpy
arcpy.env.workspace = 'C:/base/data/gdb'
arcpy.analysis.Union('counties 2;parcels 1', 'state_landinfo')
作为值表
ValueTable 允许您将值组织到虚拟表的行和列中。 创建值表时,您可以指定列数。 默认为单列。
DeleteField 函数使用多值 drop_field 参数的 ValueTable 对象。
import arcpy
arcpy.env.workspace = 'C:/base/county.gdb'
value_table = arcpy.ValueTable()
value_table.addRow('STREET_NAM')
value_table.addRow('LABEL')
value_table.addRow('CLASS')
arcpy.management.DeleteField('roads', value_table)
Union 函数使用值表 in_features 参数的 ValueTable 对象。
import arcpy
arcpy.env.workspace = 'C:/base/data/gdb'
value_table = arcpy.ValueTable(2)
value_table.addRow(['counties', 2])
value_table.addRow(['parcels', 1])
arcpy.analysis.Union(value_table, 'state_landinfo')