-2

ArcMAP で「属性による選択」を使用してスクリプトを作成しようとしています。私がやりたいことは、Select by Attribute 式に値を渡す for ループを作成することです。私は次の行に沿って何かを考えていました: (x=シェープファイル内のポリゴンの数)

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」が気に入らないようです。

全体的な目標は、ポリゴンを分離し、位置による選択を使用して交差するポリゴンを見つけ、2 つの領域を見つけ、分割して 2 番目のポリゴンがカバーするメイン ポリゴンのパーセンテージを取得することです。

願わくば、この説明が助けを得るのに十分明確であることを願っています

4

2 に答える 2

0

I don't know anything about ArcMap, but you're passing the literal string "j" as a comparison, rather than the value of the variable j. You probably mean:

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 に答える