Report

摘要

Report 对象将引用 ArcGIS Pro 工程 (.aprx) 文件中的报表。可提供常见属性的访问权限,例如定义查询和导出。

说明

ArcGIS Pro 工程可包含多个报表。可使用 ArcGISProject 对象的 listReports 方法访问报表,这将返回 Report 对象的 Python 列表。有必要确保每个报表均具有唯一名称,因为这样可以通过其 name 轻松引用特定报表。

Report 具有数据源,该数据源可提供用于支持报表生成的数据。可以使用 referenceDataSource 属性来标识报表的当前数据源。要更改报表的数据源,可以使用 setReferenceDataSource 方法。该方法可将新数据源中的字段映射到原始数据源定义的报表字段。字段名称(非字段别名)必须为区分大小写的精确匹配。

除了报表的数据源具有定义查询之外,报表也可以具有定义查询。首先根据数据源的定义查询过滤记录,然后使用报表的 definitionQuery 属性进一步过滤记录。

可以使用 exportToPDF 方法将报表导出为 PDF 文档。

属性

属性说明数据类型
definitionQuery
(可读写)

报表的定义查询。除了报表的参考数据源定义查询之外,还会应用此属性。

String
metadata
(可读写)

获取或设置报表的元数据类信息。请注意:设置元数据取决于 isReadOnly 属性值。

Metadata
name
(可读写)

报表的名称。有必要确保工程中的所有报表都具有唯一的名称,因为这样便可通过这些唯一名称轻松对其进行引用。

String
referenceDataSource
(只读)

将报表的参考数据源连接信息返回为 Python 字典。

Dictionary

方法概述

方法说明
exportToPDF (out_pdf, {page_range_type}, {page_range}, {starting_page_number}, {total_page_number}, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {jpeg_compression_quality})

用于将报表导出为便携式文档格式 (PDF) 文件。

setReferenceDataSource (data_source)

设置报表的参考数据源。

方法

exportToPDF (out_pdf, {page_range_type}, {page_range}, {starting_page_number}, {total_page_number}, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {jpeg_compression_quality})
参数说明数据类型
out_pdf

用于表示输出导出文件的路径和文件名的字符串。

String
page_range_type

用于定义要导出的页面范围类型的字符串。默认值为 ALL。

  • ALL导出报表的所有页面。
  • LAST导出报表的最后一页。
  • EVEN导出报表的偶数页面。
  • ODD导出报表的奇数页面。
  • RANGE导出 page_range 参数中列出的页面。

(默认值为 ALL)

String
page_range

如果使用 page_range_type 参数中的 RANGE 选项,用于标识要导出的页面的字符串(例如:1、3、5-12)。如果使用任何其他 page_range_type 值,则将忽略 page_range 值。

String
starting_page_number

将偏移应用于页面编号以在报表开始处添加附加页面。默认偏移为 1。

(默认值为 1)

Integer
total_page_number

要标注的总页面数,例如,如果报表显示第 X 页,共 Y 页。这在将多个报表合并为一个报表时将非常有用。默认值为 -1,表示没有覆盖。

(默认值为 None)

Integer
resolution

用于定义导出文件分辨率的整数值,单位为每英寸点数 (dpi)。

(默认值为 96)

Integer
image_quality

定义输出图像质量的字符串。

  • BEST输出图像质量的重采样比为 1
  • BETTER输出图像质量的重采样比为 2
  • NORMAL输出图像质量的重采样比为 3
  • FASTER输出图像质量的重采样比为 4
  • FASTEST输出图像质量的重采样比为 5

(默认值为 BEST)

String
compress_vector_graphics

用于控制输出文件的矢量和文本部分压缩的布尔值。图像压缩单独定义。

(默认值为 True)

Boolean
image_compression

用于定义在输出文件中压缩图像或栅格数据时使用的压缩方案的字符串。

  • ADAPTIVE自动为页面中的每个图像选择最佳压缩类型。JPEG 适用于包含许多唯一颜色的较大图像。DEFLATE 适用于所有其它图像。
  • JPEG有损数据压缩。
  • DEFLATE无损数据压缩
  • LZWLempel-Ziv-Welch,无损数据压缩
  • NONE不应用压缩。
  • RLE游程编码压缩

(默认值为 ADAPTIVE)

String
embed_fonts

用于控制导出文件中的字体嵌入的布尔值。当在未安装所需字体的计算机上查看文档时,可通过字体嵌入正确显示文本和字符标记。

(默认值为 True)

Boolean
jpeg_compression_quality

image_compression 设置为 ADAPTIVE 或 JPEG 时,用于控制压缩质量值的数字。有效范围为 1 到 100。jpeg_compression_quality 为 100 时可提供最佳图像质量,但会创建较大的导出文件。推荐范围为 70 到 90。

(默认值为 80)

Integer

PDF 文件可在整个平台上实现一致的查看和打印效果。它们通常用于在 Web 上分发文档,并且此格式现在为内容传送的标准交换格式。PDF 文件在许多图形应用程序中均可编辑,并且它还保留了地图图层的注记、标注和属性数据。PDF 导出支持字体嵌入,即使在用户尚未安装 Esri 字体时,也可以正确显示符号系统。

setReferenceDataSource (data_source)
参数说明数据类型
data_source

支持报表的数据参考。此参数可以为 Layer 对象、Table 对象或表示外部数据源路径的字符串。

(默认值为 None)

Object

setReferenceDataSource 方法可以使用 Layer 对象、Table 对象或表示外部数据源路径的字符串来设置报表参考的数据源。

代码示例

报表示例 1

以下脚本按名称选择 Counties Report 并将其导出为 PDF。

import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\USA_States\USA_States.aprx")
report = aprx.listReports("Counties Report")[0]
report.exportToPDF(r"C:\Project\USA_States\CA_Counties_Report.pdf")
报表示例 2

以下脚本用于修复报表的已损坏数据源并保存工程。

import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\USA_States\USA_States.aprx")
report = aprx.listReports("Counties Report")[0] # has a broken data source
report.setReferenceDataSource(r"C:\Project\USA_States\usa.gdb\states")
print(report.referenceDataSource)
#{'dataset':'states', 'workspace_factory':'File Geodatabase',
# 'connection_info':{'database':'C:\\Project\\USA_States\\usa.gdb'}}
aprx.save()
报表示例 3

以下脚本可使用 PDFDocument 类将多个报表合并为一个多页 PDF。

import arcpy
pdf_name = "StatesReport.pdf"
cover_page = r"C:\path\to\StatesCoverPage.pdf"
part_one_pdf = r"C:\path\to\part_one.pdf"
part_two_pdf = r"C:\path\to\part_two.pdf"
final_pdf_path = r"C:\path\to\StatesReport.pdf"
report1 = self.aprx.listReports("States Report")[0] # Attribute List template
report2 = self.aprx.listReports("States Report Summaries")[0] # Summaries only using Basic Summary template
report1.exportToPDF(part_one_pdf, starting_page_number=2, total_page_number=13, page_range_type="RANGE",
                    page_range="1-2")
report2.exportToPDF(part_two_pdf, starting_page_number=3, total_page_number=13, page_range_type="RANGE",
                    page_range="2-11")

pdfMerge = arcpy.mp.PDFDocumentCreate(final_pdf_path) # Creates an empty PDF
pdfMerge.appendPages(cover_page)
pdfMerge.appendPages(part_one_pdf)
pdfMerge.appendPages(part_two_pdf)
pdfMerge.saveAndClose()