我正在使用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'
什么可能导致出现此错误?
答案 0 :(得分:0)
什么可能导致出现此错误?
嗯,我不熟悉arcpy,但似乎任何ListLayoutElements()
返回的第0个元素都是一个确实没有updateItem()
方法的列表。
您可能希望.append()
到列表中,或者您可能希望拥有不同类型的对象。
答案 1 :(得分: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)