使用Python中的“for”循环将变量传递给Select By Attributes

时间:2013-07-17 13:43:54

标签: python arcmap

我正在尝试使用ArcMAP中的“按属性选择”编写脚本。我想要做的是创建一个for循环,将值传递给Select by Attribute表达式。我正在思考以下问题: (x = shapefile中的多边形数量)

for j in range(0,x,1):
  arcpy.MakeFeatureLayer_management ("layer", "temp") 
  arcpy.SelectLayerByAttribute_management ("temp","NEW_SELECTION",""" "ID" > j""")
  arcpy.CopyFeatures_management("temp","SlopeG5")

我应该能够处理的其余脚本,但是当我运行它时,我得到错误代码000358,说表达式无效。 ArcMap似乎不喜欢select by attributes中的'j'。

总体目标是隔离多边形,使用按位置选择来查找相交的多边形,找到两者的面积,然后除以得到第二个所覆盖的主多边形的百分比。

希望这个描述足够清楚,以获得一些帮助

2 个答案:

答案 0 :(得分:0)

我对ArcMap一无所知,但你传递文字字符串“j”作为比较,而不是变量j的值。你可能意味着:

arcpy.SelectLayerByAttribute_management ("temp","NEW_SELECTION", "ID > %s" % j)

答案 1 :(得分:0)

看起来这就是您打算做的事情 - 将j的值插入字符串中:

for j in range(0,x,1):
  arcpy.MakeFeatureLayer_management ("layer", "temp") 
  arcpy.SelectLayerByAttribute_management ("temp","NEW_SELECTION",'"ID" > %s' % j)
  arcpy.CopyFeatures_management("temp","SlopeG5")