摘要
返回地图文档 (.mxd) 布局中布局元素的 Python 列表。
讨论
ListLayoutElements 始终返回 Python 列表对象,即使仅返回一个页面元素。要返回要素对象,在列表上必须使用索引值(例如,elm = arcpy.mapping.ListLayoutElements(mxd)[0])。列表上的 For 循环提供简单的机制迭代列表中的每个项目(例如,for elm in arcpy.mapping.ListLayoutElements(mxd):)。
ListLayoutElements 仅返回来自页面布局的元素,而不是可能存在于数据框中的地图注记元素。
每个页面元素都具有 name 属性,可在 ArcMap 中的元素属性对话框(位于大小和位置选项卡内)中设置此属性. 地图文档的作者应负责确保每个页面元素被赋予唯一名称,以便可唯一识别元素。如果两个元素有相同名称,则没有办法确定要引用的是哪个元素。
ListLayoutElements 也会将元素组里的元素返回到平面列表。这使您可以方便地搜索和替换文本字符串,例如不必通过组元素结构进行浏览。
可通过传送空字符串 ("") 或输入 element_type=None 直接跳过 element_type 参数。
在 name 属性上使用通配符并且不区分大小写。通配符字符串 "*title" 将返回名为 Main Title 的页面元素。可在脚本语法中跳过通配符,实现方式包括传递空字符串 ("")、星号 (*),或输入 wildcard=None;如果通配符是语法中的最后一个可选参数,也可不输入任何内容。
有关详细信息,请参阅以下元素对象:DataFrame、GraphicElement、LegendElement、MapsurroundElement、PictureElement 和 TextElement。
语法
ListLayoutElements (map_document, {element_type}, {wildcard})
参数 | 说明 | 数据类型 |
map_document | 引用 MapDocument 对象的变量。 | MapDocument |
element_type | 代表用于过滤已返回元素列表的元素类型的字符串。
(默认值为 None) | String |
wildcard | 星号 (*) 和字符的组合可用于帮助限制生成的结果。 (默认值为 None) | String |
返回值
数据类型 | 说明 |
Object | 页面布局元素的 Python 列表。可以返回的对象类型为 DataFrame、GraphicElement、LegendElement、MapsurroundElement、PictureElement 和 TextElement。 |
代码示例
ListLayoutElements 示例 1:
此脚本将搜索具有文本值 Old String 的全部文本元素(包括组中的元素),并使用 New String 替换该值。
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.text == "Old String":
elm.text = "New String"
mxd.save()
del mxd
ListLayoutElements 示例 2:
以下脚本使用通配符来查找图片元素,然后更改图片的数据源。
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
for elm in arcpy.mapping.ListLayoutElements(mxd,"PICTURE_ELEMENT", "*logo*"):
if elm.name == "CityLogo":
elm.sourceImage = r"C:\Project\Data\Photo.bmp"
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd