使用多值输入

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

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

  1. Python 列表形式,每个值都是列表的元素
  2. 字符串形式,各个值用分号进行分隔
  3. 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