2013-07-17 20 views
-2

我想在ArcMAP中使用'按属性选择'编写脚本。我想要做的是创建一个for循环,它将一个值传递给Select by Attribute表达式。我在想沿着线的东西: (X =多边形的shape文件数)在Python中使用'for'循环传递变量以按属性选择

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属性中似乎不喜欢'j'。

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

希望这个描述是非常明显的得到一些帮助

+3

什么是'“””‘ID’> J‘’ “”应该是什么意思? – Izkata

+0

@interjay我知道它是什么,但你的意图是什么? – Izkata

回答

0

我不知道ArcMap中任何东西,但你传递文本字符串“J”作为比较,而不是变量j的价值。你大概的意思是:

arcpy.SelectLayerByAttribute_management ("temp","NEW_SELECTION", "ID > %s" % j) 
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")