2015-10-19 27 views
1

我在ArcGIS中編寫了一個python腳本,用於選擇相交的功能。它需要不斷重複,直到選擇了所有相關功能。此時選擇將停止改變。是否可以設置一個循環來保持重複,直到所選功能的數量與最後一次循環的時間相同爲止?我可以使用arcpy.GetCount_management()方法獲得選定的功能。我可以設置python while循環來運行,直到沒有任何更改?

我給自己定的選擇要素的數量是一個變量:

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") 

所以我想要做的實際上將:

while selectcount == previousselectcount: 
     do stuff 

但我不知道while循環應該如何構造

回答

1

你很接近你將如何監視功能數量的變化。考慮以下。

previousselectcount = -1 
selectcount = arcpy.GetCount_management("StreamT_StreamO1") 
while selectcount != previousselectcount: 
     do stuff 
     # update both counts at the end of what you want to do in the while loop 
     previousselectcount = selectcount 
     selectcount = arcpy.GetCount_management("StreamT_StreamO1") 

注意while循環條件中的不等號運算符(!=)。

0

python wiki

如果selectcount或previousselectcount是float類型的,你可能想要做一個範圍 又名

while selectcount >= previousselectcount+c: 
     .... 

用C正常數非常接近於零。