【发布时间】:2016-01-19 03:35:00
【问题描述】:
我有一个循环应该选择特征并继续循环,直到它不再选择新特征
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”。是忽略中断还是不满足 if 条件?
我也试过
while selectcount != previousselectcount:
但这给了我同样的结果
【问题讨论】:
-
我对 Gis 一无所知,所以我想问的是真的
selectcount类型为int吗?如果没有,当您使用repr而不是str时会打印什么? -
“它是否忽略了休息” - 显然不是。 “是 if 条件没有得到满足” - 嗯,必须是这样。检查这些变量的类型。
-
这里,看那个:gis.stackexchange.com/questions/55246/…。您的问题是 selectcount 总是收到一个新的 different 对象,即使基础数字是相同的。因此,他们永远不会平等。
标签: python loops while-loop arcgis break