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
子模型。
下面是工具的輸出
沒有人有這種奇怪的行爲的解釋?我做錯了什麼?