使用多值输入

很多地理处理工具的输入参数可接受多个值。在 Python 窗口中查看工具引用页面或工具用法时,用括号 [ ] 括起来的参数表示其可接受值列表。例如,删除字段工具可接受要删除的字段列表,参数用法为 [drop_field, ...]。某些参数(如联合工具的 input_features 参数)接受列表的列表。其用法显示为 [[in_features, {Rank}], ...]

任何可接受值列表(或值列表的列表)的参数即为多值参数;可接受一个或多个值。可通过三种方式来指定多值参数:

  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 允许将值组织到一个由行和列组成的虚拟表中。创建值表时需指定列数。默认为单列。

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')