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中构建一个脚本,它将选择一系列用户定义的值,在这种情况下,我试图选择1784102和1784110.当我之前使用arcpy.AddWarning(taxNo)时循环,我得到输出" 1784102; 1784110"但它一次遍历一个数字,即
附加选择1
其他选择7
其他选择8
其他选择4 等
然后在击中分号时弹出错误。 taxNo的参数在ArcMap中设置为String,Multivalue,Valuelist。
答案 0 :(得分:1)
我假设您正在调用您的脚本:
python script.py 1784102;1784110
您的变量taxNo = arcpy.GetParameterAsText(0)
则是单个字符串"1784102;1784110"
。如果在字符串上使用“数组索引”(例如taxNo[0]
,taxNo[1]
等),则会从该字符串中获取单个字符,即“1”,“7”,“8”。
致电.split(';')
到您的arcpy.GetParameterAsText(0)
结果,将字符串"1784102;1784110"
拆分为两个字符串数组:["1784102", "1784110"]
。如果您需要一个数字项,即整数,请尝试this。
taxNo = arcpy.GetParameterAsText(0).split(';')