所以我得到的是我正在使用Python的arcpy for ArcGIS。在循环期间更改变量,Python
我的循环之外有几个变量指向我的ArcMap MXD文档中的文本字段。
然后我执行遍历缓冲层的每一行的循环,然后按位置选择位于所述缓冲区内的任何点层。
然后,我想从这些点图层中取值,并填充之前声明的文本字段。
我的麻烦是我想迭代变量,以便每次循环运行时它们指向不同的文本字段。
我的代码:
指着我的MXD文件
HarbName1 = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "HarbourName1")[0]
HarbName2 = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "HarbourName2")[0]
HarbName3 = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "HarbourName3")[0]
第一循环
for row in rows_dfA_Asset:
whereClause = '"HARB_CODE" = ' + str(row.getValue("Harb_Code"))
arcpy.MakeFeatureLayer_management(dfA_Buffer, output, whereClause, "", "")
arcpy.SelectLayerByLocation_management(dfA_Layer, "WITHIN", output, "", "NEW_SELECTION")
test = arcpy.SearchCursor(dfA_Layer, fields="Harb_Code; NAME; CAPACACITY; HIGH_BERTH; HarbHiPerc; AvgBerth; HarbAvgPer; CLSD_DET; CLSD_NUM_M; Tot_Num_As; Num_SCH_As; PROV; GOV_SCORE; MAN_SCORE")
第二个循环这是问题
for field in test:
count = count + 1
print count
HarbName(count) = str(field.getValue("NAME"))
的文本元素
因此,归结起来,我需要迭代变量名称,它将与指向文本元素的全局变量相匹配。
如果有人可以想办法做到这一点,将不胜感激。我知道我的代码并不是最伟大的,我不是贸易程序员。
对你想要做什么感到困惑,但从我猜你想要一个Python字典。 – user2097159 2014-12-02 19:17:30
@Andrew第二个循环嵌套在第一个循环中吗?如果没有,在第一个循环中迭代一些数据结构,计算一个结果('test'),然后将它扔掉,除了最后一次迭代......这是你真正想要得到的结果吗? – gboffi 2014-12-02 20:39:25
@gbofii是的,我的第二个循环嵌套在我的第一个循环中 – Andrew 2014-12-02 20:52:06