0
我在模型构建器中使用迭代多值的奇怪问题。 该模型部分基于Generating a multivalue choice list示例。迭代多值字符串
我想要做的是显示过滤图层列表,其中用户将能够选择其中的一些。为此,我使用带有1个输入多值字符串参数的脚本工具和1个派生多值任意值参数。
然后在迭代多值中使用选定图层名称(多值变量),其中每个迭代值用于计算值。在ToolValidator中过滤图层。
现在,问题在于迭代多值不迭代值。相反,它只运行一个循环,并传递一个值,它是一个字符串,所有选定的图层名称以分号分隔。使用多值从脚本工具主模型通过
ToolValidator的UpdateParameters代码
if not self.params[0].altered:
mxd = arcpy.mapping.MapDocument("CURRENT")
dataframe = arcpy.mapping.ListDataFrames(mxd)[0]
layers = set()
for lyr in arcpy.mapping.ListLayers(mxd, "", dataframe):
if lyr.visible == True:
desc = arcpy.Describe(lyr.name)
if desc.dataType == "RasterLayer":
layers.add(desc.name)
self.params[0].filter.list = sorted(layers)
self.params[0].values = sorted(layers)
return
子模型。
下面是工具的输出
没有人有这种奇怪的行为的解释?我做错了什么?