ListLayoutElements (arcpy.mapping)

摘要

返回地图文档 (.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;如果通配符是语法中的最后一个可选参数,也可不输入任何内容。

有关详细信息,请参考各个元素对象:DataFrameGraphicElementLegendElementMapsurroundElementPictureElementTextElement

语法

ListLayoutElements (map_document, {element_type}, {wildcard})
参数说明数据类型
map_document

A variable that references a MapDocument object.

MapDocument
element_type

A string that represents the element type that will be used to filter the returned list of elements.

  • DATAFRAME_ELEMENTDataframe element
  • GRAPHIC_ELEMENTGraphic element
  • LEGEND_ELEMENTLegend element
  • MAPSURROUND_ELEMENTMapsurround element
  • PICTURE_ELEMENTPicture element
  • TEXT_ELEMENTText element

(默认值为 None)

String
wildcard

A combination of asterisks (*) and characters can be used to help limit the results.

(默认值为 None)

String
返回值
数据类型说明
Object

页面布局元素的 Python 列表。可返回的对象类型是:DataFrameGraphicElementLegendElementMapsurroundElementPictureElementTextElement

代码实例

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
5/10/2014