2016-12-06 33 views
-1
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),I得到輸出「1784102; 1784110」,但它通過它一個迭代數在時間即通過與ArcPy中

附加選擇1

附加選擇7

附加的選擇8

其他選擇4 等

然後彈出一個錯誤,當它擊中分號。 taxNo的參數在ArcMap中設置爲字符串,多值,Valuelist。

回答

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(';')