0

arcpy を使用したマップの自動化に取り組んでいます。

mxd に追加されたレイヤーに基づいて、マップ レイアウトに凡例を追加する必要があります。以下のコードを使用しています (チュートリアルにあるように)。

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd)[0]
lyrFile = arcpy.mapping.Layer(r"C:\Project\Data\Rivers.lyr")
arcpy.mapping.AddLayer(df, lyrFile, "TOP")
styleItem = arcpy.mapping.ListStyleItems("USER_STYLE", "Legend Items",                "NewDefaultLegendStyle")[0]
legend = arcpy.mapping.ListLayoutElements(mxd, "LEGEND_ELEMENT")[0]
legend.updateItem(lyrFile, styleItem)

しかし、このコードを実行するたびに、次のエラーが発生します。

Runtime error 
   Traceback (most recent call last):
   File "<string>", line 1, in <module>
   AttributeError: 'list' object has no attribute 'updateItem'

このエラーが表示される原因は何ですか?

4

2 に答える 2

0

このエラーが表示される原因は何ですか?

まあ、私はarcpyに精通していませんが、返されるものの0番目の要素は、実際にはメソッドListLayoutElements()を持たないリストであるようです。updateItem()

リストに追加したい.append()場合や、別のタイプのオブジェクトが必要な場合があります。

于 2014-01-12T09:56:19.820 に答える
0

あなたのコードは、 ArcGISヘルプの例と同じ です。

ところで、自分のコードを貼り付けていたのではないかと思います。そうしないと、最後の行ではなく、2、4、6 行目で問題が発生する可能性があります。

user2357112 が示唆したように、きれいなコードでもう一度試してみてください。または、行の
直前で変数「凡例」のタイプを確認できます print type(legend) legend.updateItem(lyrFile, styleItem)

于 2014-01-12T11:43:38.957 に答える