使用 arcpy 遍历用户定义的列表

iterating through a user defined list with arcpy

taxNo = arcpy.GetParameterAsText(0)
thisMap = arcpy.mapping.MapDocument("CURRENT")
myDF = arcpy.mapping.ListDataFrames(thisMap)[0]
myLayers = arcpy.mapping.ListLayers(myDF)
for lyr in myLayers:
if lyr.name == "Address Numbers":
    arcpy.SelectLayerByAttribute_management(lyr,"NEW_SELECTION","EKEY = " + taxNo[0])
    for tax in taxNo:
        arcpy.SelectLayerByAttribute_management(lyr,"ADD_TO_SELECTION","EKEY = " + tax)
        arcpy.AddWarning("Additional Selection " + tax)

我正在尝试在 ArcGIS 中构建一个脚本,它将 select 一系列用户定义的值,在这种情况下,我正在尝试 select 1784102 和 1784110。当我使用 arcpy.AddWarning(taxNo) 在循环之前,我得到输出“1784102;1784110”,但它一次迭代一个数字,即

附加选择 1

追加选择 7

追加选择 8

附加选择4 等等

然后碰到分号就报错。 taxNo 的参数在 ArcMap 中设置为字符串、多值、值列表。

我假设您是这样调用脚本的:

python script.py 1784102;1784110

你的变量 taxNo = arcpy.GetParameterAsText(0) 那么是一个字符串 "1784102;1784110"。如果您在字符串上使用 "array indexes"(例如 taxNo[0]taxNo[1] 等),您将从该字符串中获取单个字符,即 "1"、"7"、"8" 。 ..

对您的 arcpy.GetParameterAsText(0) 结果调用 .split(';') 以将字符串 "1784102;1784110" 拆分为两个字符串的数组:["1784102", "1784110"]。如果您需要数字项,即整数,也可以尝试 this

taxNo = arcpy.GetParameterAsText(0).split(';')