使用arcpy迭代用户定义的列表

时间:2016-12-06 05:47:58

标签: python 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中构建一个脚本,它将选择一系列用户定义的值,在这种情况下,我试图选择1784102和1784110.当我之前使用arcpy.AddWarning(taxNo)时循环,我得到输出" 1784102; 1784110"但它一次遍历一个数字,即

附加选择1

其他选择7

其他选择8

其他选择4 等

然后在击中分号时弹出错误。 taxNo的参数在ArcMap中设置为String,Multivalue,Valuelist。

1 个答案:

答案 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(';')
相关问题