-2

我正在尝试使用 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 属性中的“j”。

总体目标是隔离一个多边形,使用 select by location 找到相交的多边形,找到两者的面积,然后除以得到第二个覆盖的主要多边形的百分比。

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

4

2 回答 2

0

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

arcpy.SelectLayerByAttribute_management ("temp","NEW_SELECTION", "ID > %s" % j)
于 2013-07-17T13:57:06.763 回答
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")
于 2013-07-17T13:57:57.603 回答