我在 ArcGIS 中编写了一个 python 脚本,用于选择相交的要素。它需要不断重复,直到选择所有相关特征。此时选择将停止更改。是否可以设置一个循环不断重复,直到所选特征的数量与上次循环相同?我可以使用 arcpy.GetCount_management()
方法获取选定的功能。
我已将所选功能的数量设置为变量:
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 循环应该如何构建
最佳答案
您非常接近如何监控功能数量的变化。考虑以下。
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 循环条件中的不等于运算符 (!=
)。
关于python - 我可以设置一个 python while 循环运行直到没有任何变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33219424/