ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

DataDrivenPages

  • 描述
  • 说明
  • 属性
  • 方法概述
  • 方法
  • 代码示例

描述

用于提供对已启用“数据驱动页面”的地图文档内管理各个页面的方法和属性的访问。

说明

可使用 ArcMap 内的数据驱动页面 工具条来创建系列地图,而无需编写任何脚本。反之亦然:可使用 arcpy.mapping 编写系列地图的全部脚本,而无需使用 ArcMap 中的“数据驱动页面”用户界面,但将两种方法相结合的效果更优。ArcMap 的“数据驱动页面”工具条可能没有足够的选项来创建“完美的”系列地图,但启用了“数据驱动页面”的地图文档可利用其固有行为省去多行代码,例如地图文档可自动管理页面范围、比例和动态文本等内容,所以不必写入相应代码。

当文本元素的字符串信息需要使用自定义逻辑进行格式化或需要构建多个字段时,即属上述情形之一。不必为这样一个简单的自定义需求在 arcpy.mapping 中执行所有操作。可通过启用“数据驱动页面”制作地图文档,然后利用 arcpy.mapping 处理自定义的文本元素字符串需求。具体的代码示例如下。

首先必须使用 ArcMap 中的“数据驱动页面”工具条在地图文档 (.mxd) 内启用和制作数据驱动页面,然后才能通过 arcpy.mapping 引用“数据驱动页面”。

DataDrivenPages 类只有一个单独的 exportToPDF 方法,但这并不意味着不能创建其他导出文件。请参阅下面的第一个代码示例。

有关“数据驱动页面”的详细信息,请参阅以下主题:

  • 使用 ArcGIS 构建地图册
  • 创建数据驱动页面

属性

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

currentPageID 属性表示启用了“数据驱动页面”的地图文档 (.mxd) 的活动页面或当前页面。选中“显示页面”后在“数据驱动页面”工具条中显示此值;它代表 y 的第 x 页,共 x 页。

Long
dataFrame
(只读)

返回对启用了“数据驱动页面”的地图文档内索引图层所位于的数据框的引用。

DataFrame
indexLayer
(只读)

返回对启用了“数据驱动页面”的地图文档中索引图层的引用。

Layer
pageCount
(只读)

pageCount 属性返回启用了“数据驱动页面”的地图文档 (.mxd) 的总页数。选中“显示页面”后在“数据驱动页面”工具条中显示此值;它代表 y 的第 y 页,共 x 页。

Long
pageNameField
(只读)

返回字段对象,它代表设置“数据驱动页面”时在索引要素类中使用的字段。

Field
pageRow
(只读)

使用 pageRow 返回索引图层的针对活动页面或当前页面的行对象。随后可根据需要读取和/或修改此索引图层字段。

Row
selectedPages
(只读)

返回 Python 索引编号列表,它们表示启用了“数据驱动页面”的地图文档中所选的索引图层要素。

List

方法概述

方法说明
exportToPDF (out_pdf, {page_range_type}, {page_range_string}, {multiple_files}, {resolution}, {image_quality}, {colorspace}, {compress_vectors}, {image_compression}, {picture_symbol}, {convert_markers}, {embed_fonts}, {layers_attributes}, {georef_info}, {jpeg_compression_quality}, {show_selection_symbology})

将启用了“数据驱动页面”的地图文档 (.mxd)的一组指定页面导出为多页面的 PDF 文档

getPageIDFromName (page_name)

基于页面的名称返回“数据驱动页面”索引值

printPages ({printer_name}, {page_range_type}, {page_range_string}, {out_print_file}, {show_selection_symbology})

以特定打印机打印启用数据驱动页面的地图文档 (.mxd) 中的特定页面

refresh ()

刷新现有“数据驱动页面”系列

方法

exportToPDF (out_pdf, {page_range_type}, {page_range_string}, {multiple_files}, {resolution}, {image_quality}, {colorspace}, {compress_vectors}, {image_compression}, {picture_symbol}, {convert_markers}, {embed_fonts}, {layers_attributes}, {georef_info}, {jpeg_compression_quality}, {show_selection_symbology})
参数说明数据类型
out_pdf

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

String
page_range_type

此字符串值用于指定页面的打印方式,对于 PDF 文档,类似于 ArcMap 导出地图对话框中的页面选项卡。

  • ALL —导出所有页面。
  • CURRENT —导出活动页面。
  • RANGE —仅导出 page_range_string 参数中列出的页面。
  • SELECTED —导出选定的索引图层要素/页面。

(默认值为 ALL)

String
page_range_string

如果使用 page_range_type 参数中的 RANGE 选项,则此字符串用于标识要导出的页面(例如:1、3、5-12)。

String
multiple_files

用于控制如何创建输出 PDF 的选项。默认情况下,所有页面都将导出为单个多页文档。您还可以指定使用两个不同的选项导出单个单页 PDF 文档。

  • PDF_MULTIPLE_FILES_PAGE_NAME —可以使用输出文件名的页面名称导出单页文档。
  • PDF_MULTIPLE_FILES_PAGE_INDEX —可以使用输出文件名的页面索引值导出单页文档。
  • PDF_SINGLE_FILE —导出多页文档。

(默认值为 PDF_SINGLE_FILE)

String
resolution

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

(默认值为 300)

Integer
image_quality

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

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

(默认值为 BEST)

String
colorspace

用于定义导出文件颜色空间的字符串。

  • CMYK —青色、洋红色、黄色和黑色颜色模型
  • RGB —红色、绿色和蓝色颜色模型

(默认值为 RGB)

String
compress_vectors

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

(默认值为 True)

Boolean
image_compression

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

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

(默认值为 ADAPTIVE)

String
picture_symbol

用于定义是否将图片标记和图片填充转换为输出上的矢量或栅格化对象的字符串。

  • RASTERIZE_BITMAP — 使用位图标记/填充对图层进行栅格化。
  • RASTERIZE_PICTURE —使用任何图片标记/填充对图层进行栅格化。
  • VECTORIZE_BITMAP —使用位图标记/填充对图层进行矢量化。

(默认值为 RASTERIZE_BITMAP)

String
convert_markers

用于控制将基于字符的标记符号转换为面的布尔值。如果符号字体不可用或无法嵌入,则可用于正确显示符号。但是,将此参数设置为 True 将禁用所有基于字符的标记符号的字体嵌入,由此会导致其外观发生变化。

(默认值为 False)

Boolean
embed_fonts

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

(默认值为 True)

Boolean
layers_attributes

用于控制导出文件中包含的 PDF 图层和 PDF 对象数据(属性)的字符串。

  • LAYERS_ONLY —仅导出 PDF 图层。
  • LAYERS_AND_ATTRIBUTES —导出 PDF 图层和要素属性。
  • NONE —不应用设置。

(默认值为 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
show_selection_symbology

用于控制选择符号系统是否应显示在输出中的布尔值。

(默认值为 False)

Boolean

数据驱动页面导出为多页面的 PDF 文档。地图文档必须已启用“数据驱动页面”。PDF 文件可在不同的平台上实现一致的查看和打印效果。它们通常用于在 Web 上分发文档,并且此格式现在为内容传送的标准交换格式。ArcMap PDF 在许多图形应用程序中均可编辑,并且它还保留了 ArcMap 内容列表中地图图层的注记、标注和属性数据。从 ArcMap 中导出的 PDF 支持嵌入字体,因此即使用户尚未安装 Esri 字体也可以正确地显示符号。从 ArcMap 中导出的 PDF 可以通过 CMYK 值或 RGB 值定义颜色。

有关导出地图的详细信息,请参阅 ArcGIS for Desktop 帮助中的导出地图主题。

getPageIDFromName (page_name)
参数说明数据类型
page_name

与用于设置“数据驱动页面”的 Name 字段对应的索引图层中的值

String

许多“数据驱动页面”属性和方法都使用内部索引值,而不使用用于创建索引图层的页面的文字名称。索引值是根据 Name 和 Sort 字段自动生成的。哪个索引值代表特定的页面并不明显。getPageIDFromName 方法为这种转化提供了一种机制。

pageID = mxd.dataDrivenPages.getPageIDFromName("HarborView")
mxd.dataDrivenPages.currentPageID = pageID
printPages ({printer_name}, {page_range_type}, {page_range_string}, {out_print_file}, {show_selection_symbology})
参数说明数据类型
printer_name

用于表示本地计算机中的打印机名称的字符串。

(默认值为 None)

String
page_range_type

此字符串值用于指定页面的打印方式,对于 PDF 文档,类似于 ArcMap 导出地图对话框中的页面选项卡。

  • ALL —导出所有页面。
  • CURRENT —导出活动页面。
  • RANGE —仅导出 page_range_string 参数中列出的页面。
  • SELECTED —导出选定的索引图层要素/页面。

(默认值为 ALL)

String
page_range_string

如果使用 page_range_type 参数中的 RANGE 选项,则此字符串用于标识要导出的页面(例如:1、3、5-12)。

String
out_print_file

包含输出打印文件名称的路径。创建的格式取决于打印机。如果使用 PostScript 打印机,则格式将为 PostScript,并且建议提供 .ps 扩展名。如果使用 Windows 打印机,请使用 .prn 扩展名。

(默认值为 None)

String
show_selection_symbology

用于控制选择符号系统是否应显示在输出中的布尔值。

(默认值为 False)

Boolean

ListPrinterNames() 函数是获得 printer_name 参数字符串的一种简单方法。

注:

ArcGIS Server 不支持基于驱动程序的打印。对于作为地理处理服务的“数据驱动页面”打印任务,请在 DataDrivenPages 类中使用 exportToPDF 函数。有关在 Web 应用程序中进行常规打印的详细信息,请参阅在 Web 应用程序中打印。

以下脚本采用本地打印机打印一组特定“数据驱动页面”:

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\ParcelAtlas.mxd")
mxd.dataDrivenPages.printPages(r"\\olyfile\OLYCanon", "RANGE", "1,3,5-12")
refresh ()

如果出现以下情况之一,则需要使用刷新方法:(1) 在索引图层中添加了或删除了要素;(2) 对 Sort 或 Name 字段值进行了编辑;(3) 数据框范围由于缩放、平移或对地图比例进行更改而发生更改;或者 (4) 对驱动当前地理范围的索引图层要素的数据驱动页面所使用的任何字段进行了编辑。在这些情况下,数据驱动页面将保留原始设置,直到执行刷新方法为止。

代码示例

DataDrivenPages 示例 1

以下脚本将“数据驱动页面”系列的每一页导出到单个 PNG 文件中。

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\ParcelAtlas.mxd")
for pageNum in range(1, mxd.dataDrivenPages.pageCount + 1):
    mxd.dataDrivenPages.currentPageID = pageNum
    print "Exporting page {0} of {1}".format(str(mxd.dataDrivenPages.currentPageID), str(mxd.dataDrivenPages.pageCount))
    arcpy.mapping.ExportToPNG(mxd, r"C:\Project\OutPut\ParcelAtlas_Page" + str(pageNum) + ".png")
del mxd
DataDrivenPages 示例 2

以下脚本将使用页面名称列表打印一组地图页面,并使用自定义逻辑代码修改文本元素地图标题信息,该自定义逻辑只能在脚本环境中完成(也就是说,标题字符串是基于属性值自定义构建的)。脚本在各已命名页面间循环,并设置相应的 currentPageID。然后从名为 TRS 的索引图层的字段中提取值。接下来,脚本将分析这些值、去掉前导零、重新构建文本元素标题字符串,并将结果发送给打印机。

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\ParcelAtlas.mxd")
pageNameList = ["MPB", "PJB", "AFB", "ABB"]
for pageName in pageNameList:
    pageID = mxd.dataDrivenPages.getPageIDFromName(pageName)
    mxd.dataDrivenPages.currentPageID = pageID
    fieldValue = mxd.dataDrivenPages.pageRow.TSR  #example values from a field called TSR are "080102", "031400"
    TRSTitle = arcpy.mapping.ListLayoutElements(MXD, "TEXT_ELEMENT", "TRSTitle")[0]
    township, range, section = fieldValue[:2].strip("0"), fieldValue[2:-2].strip("0"), fieldValue[-2:].strip("0")
    if section != "": 
        TRSTitle.text = "Section {0} T.{1}N. R.{2}W. W.M.".format(section, township, range)
    else:
        TRSTitle.text = "T.{0}N. R.{1}W. W.M.".format(township, range)
    mxd.dataDrivenPages.printPages(r"\\olyfile\SUITE_303", "CURRENT")
del mxd
DataDrivenPages 示例 3

以下脚本仅将所选的索引页面(页面 1-10)导出到各个 PDF 文件中。生成的 PDF 文件会将索引号追加到输出文件名中。

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\ParcelAtlas.mxd")
ddp = mxd.dataDrivenPages
indexLayer = ddp.indexLayer
arcpy.SelectLayerByAttribute_management(indexLayer, "NEW_SELECTION",  
                                        '"PageNumber" >= 1 AND "PageNumber" <= 10')
for indexPage in ddp.selectedPages:
  ddp.currentPageID = indexPage
  ddp.exportToPDF(r"C:\Project\Output\Page" + str(indexPage) + ".pdf", "CURRENT")

del mxd

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2019 Esri. | 隐私政策 | 法律声明