ArcGIS Pro Layout
Layout
描述
Layout 对象将引用 ArcGIS Pro 工程 (.aprx) 中的单个页面布局。可用于访问常见属性(如页面大小)和多个不同的导出方法。
说明
ArcGIS Pro 工程可包含多个页面布局。可使用 ArcGISProject 对象的 listLayouts 方法访问布局,这将返回 Layout 对象的 Python 列表。有必要确保每个布局均具有唯一名称,因为这样可以通过 name 轻松引用特定页面布局。
listLayouts 方法可用于访问页面布局上的所有元素:GraphicElement、LegendElement、MapFrameElement、MapSurroundElement、PictureElement 和 TextElement。
通过 Layout 对象可访问多个 exportTo 方法。如果想要导出整个页面布局,可使用 Layout 导出方法。如果只想要导出单个地图框的内容,还可使用 MapFrame 类中提供的相似的一组导出方法。
布局可以包括单个 MapSeries。如果 mapSeries 属性返回 None,则表明尚未在布局中创建地图系列。在尝试操作地图系列属性之前,应先检查地图系列是否为 enabled。
属性
属性 | 说明 | 数据类型 |
mapSeries
(可读写)
|
如果布局定义了地图系列,则将返回 MapSeries 对象。确认地图系列已启用 enabled属性。 |
MapSeries |
name
(可读写)
|
布局名称。有必要确保所有布局都具有唯一的名称,因为这样便可通过这些唯一名称轻松对其进行引用。 |
String |
pageHeight
(可读写)
|
布局的页面高度取决于当前的 pageUnits。 |
Double |
pageUnits
(可读写)
|
布局的页面单位。下面是设置页面单位时可使用的有效字符串列表。
|
String |
pageWidth
(可读写)
|
布局的页面宽度取决于当前的 pageUnits。 |
Double |
方法概述
方法 | 说明 |
exportToBMP (out_bmp, {resolution}) |
将页面布局导出为 Microsoft Windows 位图 (BMP) 格式。 |
exportToEMF (out_emf, {resolution}) |
将页面布局导出为增强型图元文件 (EMF) 格式。 |
exportToEPS (out_eps, {resolution}) |
将页面布局导出为 Encapsulated PostScript (EPS) 格式。 |
exportToGIF (out_gif, {resolution}) |
将页面布局导出为图形交换格式 (GIF)。 |
exportToJPEG (out_jpg, {resolution}, {jpeg_color_mode}, {jpeg_quality}) |
将页面布局导出为联合图像专家组 (JPEG) 格式文件。 |
exportToPDF (out_pdf, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {layers_attributes}, {georef_info}, {jpeg_compression_quality}, {clip_to_elements}, {output_as_image}) |
将页面布局导出为便携文档格式 (PDF)。 |
exportToPNG (out_png, {resolution}, {color_mode}) |
将页面布局导出为便携式网络图形 (PNG) 格式文件。 |
exportToSVG (out_svg, {resolution}, {compress_to_svgz}) |
将页面布局导出为可伸缩矢量图形 (SVG) 格式。 |
exportToTGA (out_tga, {resolution}) |
将页面布局导出为 Truevision 图形适配器 (TGA) 格式。 |
exportToTIFF (out_tif, {resolution}, {color_mode}, {tiff_compression}) |
将页面布局导出为标记图像文件格式 (TIFF) 文件。 |
getDefinition (cim_version) |
获取布局的 CIM 定义。 |
listElements ({element_type}, {wildcard}) |
返回 Layout 对象包含的页面布局元素的 Python 列表。 |
setDefinition (definition_object) |
设置布局的 CIM 定义。 |
方法
exportToBMP (out_bmp, {resolution})
参数 | 说明 | 数据类型 |
out_bmp
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
BMP 文件属于本地 Windows 栅格图像。BMP 可以使用多个位深度存储像素数据。BMP 图像的大小通常比 JPEG 或 PNG 等格式的图像大很多。
exportToEMF (out_emf, {resolution})
参数 | 说明 | 数据类型 |
out_emf
|
用于表示输出导出文件的系统路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
EMF 文件属于本地 Windows 图形文件,其中既包含矢量数据又包含栅格数据。这些文件非常适合于嵌入 Windows 文档,因为 EMF 的矢量部分可以调整大小,而又不会降低质量。但是,由于 EMF 不支持字体嵌入并且属于 Windows 专用格式,因此并不常用作用户之间的交换格式。
exportToEPS (out_eps, {resolution})
参数 | 说明 | 数据类型 |
out_eps
|
用于表示输出导出文件的系统路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
EPS 文件将通过 PostScript 页面描述语言描述矢量对象和栅格对象。PostScript 是高端图形文件、制图和打印的出版行业标准。许多绘图应用程序中都可编辑 EPS 文件,也可将此类文件作为图形置于大多数页面布局应用程序中。EPS 文件支持字体嵌入,因此即使用户尚未安装 Esri 字体也可以查看正确的符号。
exportToGIF (out_gif, {resolution})
参数 | 说明 | 数据类型 |
out_gif
|
用于表示输出导出文件的系统路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
GIF 文件属于 Web 中使用的旧的栅格格式。GIF 无法显示 256 种以上的颜色(每像素 8 位),并且使用的是可选的无损压缩,因此,此类文件的大小比其他格式的文件要小。
exportToJPEG (out_jpg, {resolution}, {jpeg_color_mode}, {jpeg_quality})
参数 | 说明 | 数据类型 |
out_jpg
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
jpeg_color_mode
|
该值可指定用于描述颜色的位数。
(默认值为 24-BIT_TRUE_COLOR) |
String |
jpeg_quality
|
此值 (0–100) 用于控制应用于输出图像的压缩程度。对于 JPEG 图像来说,压缩程度越大,图像质量越低。质量设置越高(最高为 100),生成的图像越清晰且文件大小更大。质量设置越低,产生的图像伪影越多且文件大小更小。 (默认值为 80) |
Integer |
JPEG 文件属于经过压缩的图像文件。它支持 24 位颜色并且是 Web 上流行的使用格式,因为 JPEG 文件大小通常要比许多其他图像格式小很多。但是,JPEG 压缩算法会有损质量,多数地图图像中都不推荐使用,因为线绘图以及文本或图标图形会因压缩产生的伪影而变得模糊。因此,通常 PNG 格式才是地图图像的首选。
exportToPDF (out_pdf, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {layers_attributes}, {georef_info}, {jpeg_compression_quality}, {clip_to_elements}, {output_as_image})
参数 | 说明 | 数据类型 |
out_pdf
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 300) |
Integer |
image_quality
|
用于指定输出图像质量、作为栅格绘制的地图图层的绘制分辨率的字符串。
(默认值为 BEST) |
String |
compress_vector_graphics
|
用于控制输出文件的矢量和文本部分压缩的布尔值。图像压缩单独定义。 (默认值为 True) |
Boolean |
image_compression
|
用于指定在输出文件中压缩图像或栅格数据时使用的压缩方案的字符串。
(默认值为 ADAPTIVE) |
String |
embed_fonts
|
用于控制导出文件中的字体嵌入的布尔值。当在未安装所需字体的计算机上查看文档时,可通过字体嵌入正确显示文本和字符标记。 (默认值为 True) |
Boolean |
layers_attributes
|
用于指定导出文件中是否将包含 PDF 图层和 PDF 对象数据(属性)的字符串。
(默认值为 LAYERS_ONLY) |
String |
georef_info
|
用于将每个数据框的坐标系信息导出到输出 PDF 文件中的布尔值。 (默认值为 True) |
Boolean |
jpeg_compression_quality
|
当 image_compression 设置为 ADAPTIVE 或 JPEG 时,用于控制压缩质量值的数字。有效范围为 1 到 100。jpeg_compression_quality 为 100 时可提供最佳图像质量,但会创建较大的导出文件。推荐范围为 70 到 90 之间。 (默认值为 80) |
Integer |
clip_to_elements
|
如果设置为 True,则布局将被裁剪为包含所有布局元素的最小边界框。 (默认值为 False) |
Boolean |
output_as_image
|
如果设置为 True,则矢量内容可以另存为图像。如果地图或布局包含具有高密度顶点的矢量图层,则选择此选项可减小输出文件的大小。如果导出为 PDF 并将此选项设置为 True,则无法在输出中查看 PDF 图层。 (默认值为 False) |
Boolean |
PDF 文件可在不同的平台上实现一致的查看和打印效果。它们常用于在 Web 上分发文档,并且此格式现在属于文档交换的 ISO 官方标准。PDF 在许多图形应用程序中均可编辑,并会保留地图的地理配准信息、注记、标注和要素属性数据。PDF 导出支持字体嵌入,即使在用户尚未安装 Esri 字体时,也可以正确显示符号系统。
查看 PDFDocument 类以了解更多关于如何管理 PDF 文件的方法,如追加、插入以及设置属性。
exportToPNG (out_png, {resolution}, {color_mode})
参数 | 说明 | 数据类型 |
out_png
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
color_mode
|
该值可指定用于描述颜色的位数。
(默认值为 24-BIT_TRUE_COLOR) |
String |
PNG 文件属于通用型栅格格式文件,可在各种 Web 浏览器上显示并且还可插入其他文档。它支持高位深度颜色并使用无损压缩。对于地图而言,PNG 通常是最佳的栅格格式,因为无损压缩可防止产生 JPEG 格式中的那种压缩伪影,从而使文本和线作业始终清晰可辨。PNG 文件还可定义透明颜色。
exportToSVG (out_svg, {resolution}, {compress_to_svgz})
参数 | 说明 | 数据类型 |
out_svg
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
compress_to_svgz
|
如果设置为 True,则会压缩输出。 (默认值为 False) |
Boolean |
SVG 是一种基于 XML 的文件格式,专门适用于在 Web 上进行查看。SVG 可以同时包含矢量信息和栅格信息。某些 Web 浏览器可能需要安装插件才能查看 SVG 文件。较早版本的浏览器可能根本无法查看 SVG 文件。SVG 支持字体嵌入,因此即使用户尚未安装 Esri 字体也可以使用正确符号系统查看导出的 SVG 文件。也可以选择生成压缩的 SVG 文件。如果启用此选项,则文件扩展名将变为 *.svgz。
exportToTGA (out_tga, {resolution})
参数 | 说明 | 数据类型 |
out_tga
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
TGA 文件以往用于其他应用程序中的内容(例如,动画游戏的 Image Sprites),许多受欢迎的图形艺术应用程序均可对该文件进行读取和写入。
exportToTIFF (out_tif, {resolution}, {color_mode}, {tiff_compression})
参数 | 说明 | 数据类型 |
out_tif
|
用于表示输出导出文件的路径和文件名的字符串。 |
String |
resolution
|
用于定义导出文件分辨率的数字,单位为每英寸点数 (dpi)。 (默认值为 96) |
Integer |
color_mode
|
该值可指定用于描述颜色的位数。
(默认值为 24-BIT_TRUE_COLOR) |
String |
tiff_compression
|
此值表示压缩方案。
(默认值为 LZW) |
String |
TIFF 文件最适合导入图像编辑应用程序,同时它也属于一种常用的 GIS 栅格数据格式。但是却无法通过 Web 浏览器在本地查看这些文件。
getDefinition (cim_version)
参数 | 说明 | 数据类型 |
cim_version
|
用于表示 CIM 的主要版本的字符串。 |
String |
在版本 2.4 中引入了对其他对象属性的 CIM 级别访问权限。Esri 遵循语义版本规范。这意味着,在允许突破性 API 更改的下一个主要版本(例如,3.0)之前,与 cim_version 搭配使用的值为 V2。发布 3.0 之后,新 V3 选项将可用。如果可能在新版本中引入突破性更改,Python 脚本作者可通过该选项控制执行期间将使用的 CIM 版本。
有关使用 CIM 和示例的详细信息,请参阅 Python CIM 访问。
listElements ({element_type}, {wildcard})
参数 | 说明 | 数据类型 |
element_type
|
代表用于过滤已返回元素列表的元素类型的字符串。
(默认值为 None) |
String |
wildcard
|
通配符基于元素名称且不区分大小写。星号 (*) 和字符的组合可用于帮助限制生成的结果。 (默认值为 None) |
String |
数据类型 | 说明 |
List |
页面布局元素的 Python 列表。可以返回的对象类型为 GraphicElement、LegendElement、MapFrame、MapsurroundElement、PictureElement 和 TextElement。 |
每个页面元素均具有 name 属性,该属性可在“元素属性”对话框中进行设置。布局作者应负责确保每个页面元素被赋予唯一名称,以便可以唯一标识这些元素。如果两个元素有相同名称,则没有办法确保它就是您要引用的元素。
listElements 方法会将元素组里的元素返回到平面列表。这使您可以方便地搜索和替换文本字符串,例如不必通过组元素结构进行浏览。
可通过传送空字符串或添加所跳过参数后面的所有参数的参数名称跳过 element_type 参数。例如
elm = lyt.listElements("", "Title")[0]
#or
elm = lyt.listElements(wildcard="Title")[0]
setDefinition (definition_object)
参数 | 说明 | 数据类型 |
definition_object
|
使用 getDefinition 最初检索的已修改 CIM 定义对象。 |
Object |
有关使用 CIM 和示例的详细信息,请参阅 Python CIM 访问。
代码示例
布局示例 1下面的脚本使用了关键字 current,因此可从 Python 窗口运行此脚本。此脚本打印了工程及其图层中每个地图的名称,以及每个布局的名称及其页面大小。
aprx = arcpy.mp.ArcGISProject("CURRENT")
for m in aprx.listMaps():
print("Map: " + m.name)
for lyr in m.listLayers():
print(" " + lyr.name)
print("Layouts:")
for lyt in aprx.listLayouts():
print(f" {lyt.name} ({lyt.pageHeight} x {lyt.pageWidth} {lyt.pageUnits})")
下面的脚本会通过缩放至每个属于名为约塞米蒂国家公园的地图的书签来更新地图框的感兴趣区域,并将结果导出至各个 PDF 文档。
import arcpy, os
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
lyt = aprx.listLayouts("Main Attractions*")[0]
mf = lyt.listElements("MAPFRAME_ELEMENT", "Yosemite National Park*")[0]
bkmks = mf.map.listBookmarks()
for bkmk in bkmks:
mf.zoomToBookmark(bkmk)
lyt.exportToPDF(os.path.join(r"C:\Projects\YosemiteNP", f"{bkmk.name}.pdf"))
del aprx
下面的脚本将检查是否存在地图系列,然后将其两个页面导出为 PDF。
import arcpy
import os
import sys
relpath = os.path.dirname(sys.argv[0])
p = arcpy.mp.ArcGISProject(relpath + "\\MapSeries\\US_States.aprx")
l = p.listLayouts()[0]
if not l.mapSeries is None:
ms = l.mapSeries
if ms.enabled:
ms.currentPageNumber = ms.getPageNumberFromName("Rhode Island")
ms.exportToPDF(relpath + "\\Output\\Ex1_RI.pdf", "CURRENT", resolution=300)
ms.currentPageNumber = ms.getPageNumberFromName("Washington")
ms.exportToPDF(relpath + "\\Output\\Ex1_WA.pdf", "CURRENT")