用于地图文档管理和输出的地理处理脚本
arcpy.mapping 地理处理模块简介
arcpy.mapping 模块是一个 Python 脚本库,可用于打开和操作 ArcMap 地图文档 (.mxd) 与图层文件 (.lyr)。通过调用 arcpy.mapping 地理处理脚本,您可打开地图文档和图层;查询和更改内容;以及打印、导出或保存已修改的文档。
arcpy.mapping 脚本中的函数可逼真地模拟 ArcMap 应用程序中执行的操作。请考虑一个简单的 ArcMap 工作流:
- 打开位于 C:\GIS\TownCenter_2009.mxd 的地图文档。
- 查找任一读取了 GIS Services Division 2009 的布局文本元素,然后将其更改为读取 GIS Services Division 2010。
- 将更新的地图布局导出至 PDF。
arcpy.mapping 脚本将以如下方式表示这些步骤:
这一简单的查找和替换脚本会将 2009 更改为 2010,然后将布局导出到 PDF 文件中。
mxd = arcpy.mapping.MapDocument(r"C:\GIS\TownCenter_2009.mxd") for textElement in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"): if textElement.text == "GIS Services Division 2009": textElement.text = "GIS Services Division 2010" arcpy.mapping.ExportToPDF(mxd, r"C:\GIS\TownCenterUpdate_2010.pdf") del mxd
arcpy.mapping 地理处理模块可供需要实现 ArcMap 工作流自动化的任何人使用。尽管这看起来与编程非常相似,而且是由功能强大的 Python 编程语言驱动的,但您实际上并不必须是一位 GIS 软件开发人员也可以非常方便地调用 arcpy.mapping 脚本。arcpy.mapping 的目的是自动化那些繁琐的任务流,从而使您能够集中精力从事重要的创造性工作和分析工作。
arcpy.mapping 和典型脚本方案的目的
arcpy.mapping 模块的创建目的是自动化地图管理和输出(打印和导出)工作流。它所提供的函数将侧重于修改现有地图图层和布局元素,而不是作为完整的地图编译系统。交互式和高度可视化的 ArcMap 环境是创建新的地图文档以及创建地图图层和布局所强力推荐的。但是,如果使用了正确的方案,arcpy.mapping 的图层和布局元素修改功能则可用于动态创建地图产品。要成功完成这些工作流,需要您认真地制作地图以准备 arcpy.mapping 脚本中会调用的组成部分,以确保按照正确方式结合使用 arcpy.mapping 和 ArcMap 上确实可提供一个自动化的地图生产系统。
通过描述 arcpy.mapping 所执行的方案来了解这一模块的功能可能会更容易些。以下是 arcpy.mapping 脚本可执行的几种方案:
- 创建一系列包含了多个引用了某个数据源的图层的地图。
- 更新或修复地图文档中所有图层的数据源连接。
- 创建一个有关包含在文档中的信息(例如图层、数据源和图层类型)的报告。
- 将一组地图文档保存为之前的 ArcGIS 版本,以便分配给其他用户。
- 打开并分析地图文档的内容,以根据内容分析来更新文档的元数据(例如,关键字和摘要)信息。然后,便可在 ArcGIS 搜索实用程序和 ArcGIS.com 中查找地图文档元数据并创建元数据的索引。
- 使用地图导出命令批量创建地理数据,例如,由地图中的一列要素驱动的一系列 GeoTIFF 图像。
- 构建多种 PDF 地图册:
- 具有标题页、多个地图页和支持内容(如表格式报表和联系人列表)的众多附加页的专题地图册
- 基于数据驱动页面的参考地图册
有关详细信息,请参阅主题通过 ArcGIS 构建地图册。
地理处理、arcpy.mapping 和扩展 ArcMap 应用程序
arcpy.mapping 模块是地理处理框架的一部分。因此,arcpy.mapping 脚本可使用 ArcGIS 提供的所有地理处理工具,而使用 arcpy.mapping 编写的所有脚本都可自行转换为地理处理脚本工具以在 ArcToolbox 和模型构建器中使用。
作为地理处理框架的一部分,arcpy.mapping 旨在用作批处理工具,而不仅仅是用作自定义 ArcMap 应用程序的框架。因为 arcpy.mapping 可用于针对地图创建您自己的处理系统,因此,公平地说,这是使用新工具扩展 ArcMap 的一种方式。但地理处理不允许完全自定义 ArcMap 用户界面,并且全套 ArcMap 对象和函数将无法通过 arcpy.mapping 进行访问。
ArcObjects SDK 可用于访问全套对象和函数。ArcObjects SDK 和地理处理是互补的;两者可同时使用,而不会相互影响。作为一个常规表达式,ArcObjects 可通过新的行为来扩展 ArcGIS,而地理处理则是专为自动执行任务而设计的。可使用 ArcObjects 执行诸如添加新的用户界面、向要素类添加自定义行为或创建特殊制图渲染器之类的操作。地理处理可在正常运行框架的限制范围内自动执行任务。
使用和部署脚本
可部署调用了 arcpy.mapping 的脚本,并可通过与任何地理处理脚本相同的方式对其进行执行。您所选择的运行脚本的方式将取决于您想要执行脚本的方式和时间:
- 地图册导出脚本可和脚本工具一样正常运行。您可编写脚本以处理用于定义所要包括的地图文档和要导出输出文件的位置的输入。工具箱用户界面提供了可交互定义输入的良好用户界面。
- 一个在每天早晨设定的时间点打印地图的脚本是作为 Windows 计划任务运行的很好的备选方案。
- 一个列出了损坏的数据源连接的脚本可在 ArcMap 的 Python 窗口执行,在此窗口中,您可轻松查看通过脚本打印的消息,并决定下一个适合的操作过程。
有关 arcpy.mapping 类和函数的完整列表,请参阅以下内容: