2
我有一個應該選擇功能,並不斷循環,直到它不再選擇新的功能爲什麼不讓我的python while循環停止?
arcpy.SelectLayerByLocation_management("antiRivStart","INTERSECT","polygon")
previousselectcount = -1
selectcount = arcpy.GetCount_management("StreamT_StreamO1")
while True:
#selectCount = arcpy.GetCount_management("StreamT_StreamO1")
mylist = []
with arcpy.da.SearchCursor("antiRivStart","ORIG_FID") as mycursor:
for feat in mycursor:
mylist.append(feat[0])
liststring = str(mylist)
queryIn1 = liststring.replace('[','(')
queryIn2 = queryIn1.replace(']',')')
arcpy.SelectLayerByAttribute_management('StreamT_StreamO1',"ADD_TO_SELECTION",'OBJECTID IN '+ queryIn2)
arcpy.SelectLayerByLocation_management("antiRivStart","INTERSECT","StreamT_StreamO1","","ADD_TO_SELECTION")
previousselectcount = selectcount
selectcount = arcpy.GetCount_management("StreamT_StreamO1")
print str(selectcount), str(previousselectcount)
if selectcount == previousselectcount:
break
據我估計,一旦它開始打印名稱數量的兩倍,應立即停止循環,但它不,它一直重複印刷「15548 15548」。它是否在中斷或者是否符合條件?
我也試圖與
while selectcount != previousselectcount:
但是這給了我同樣的結果
我對Gis一無所知,所以我要求的確是'int'類型的'selectcount'?如果不是,當你使用'repr'而不是'str'時它會打印什麼? –
「它是否打破了休息」 - 顯然不是。 「如果條件沒有得到滿足」 - 好吧,情況就是如此。檢查這些變量的類型。 –
在這裏,看看:http://gis.stackexchange.com/questions/55246/cast-arcpy-result-as-an-integer-instead-arcpy-getcount-management。你的問題是,selectcount總是收到一個新的**不同的**對象,即使底層數字是相同的。因此他們永遠不會平等。 –