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,但似乎ListLayoutElements()返回的第 0 个元素是一个确实没有updateItem()方法的列表。

您可能想要.append()列表,或者您可能想要不同类型的对象。

于 2014-01-12T09:56:19.820 回答
0

您的代码与 ArcGIS 帮助示例相同, http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#//00s30000006z000000 我测试了示例代码,它运行正常。

顺便说一句,我想知道您是否粘贴了自己的代码。否则,您可能会在第 2、4、6 行而不是最后一行遇到问题。

正如 user2357112 所建议的,你最好用干净的代码再试一次。
或者您可以 print type(legend)在行前 确认变量“legend”的类型 legend.updateItem(lyrFile, styleItem)

于 2014-01-12T11:43:38.957 回答