arcpy.mapping 教程入门 (arcpy.mapping)
本教程将引导您了解一些非常常见的 arcpy.mapping 工作流,同时还将介绍一些重要概念。目的是为 Python 脚本和 arcpy.mapping 的全新用户提供帮助。这些步骤是通用的,适用于任何数据和许可级别。
![注 注](rsrc/note.png)
唯一的要求是在开始本教程之前需具有一个要素图层文件 (.lyr)。
以下步骤从总体上概括了 arcpy.mapping。在本教程中,提供了许多具体帮助主题的链接,对涉及到的概念给出了详细解释。而且,这些主题基本上都附有示例代码片段。
Python 窗口
要学习 arcpy.mapping,首先应从 Python 窗口着手。Python 窗口是 ArcMap 框架的一部分,它所提供的自动完成功能使您能够轻松读取函数参数的名称和顺序。以下步骤显示了如何设置 Python 窗口,以实现令人满意的最终用户体验并使其与本文档中的屏幕截图一致。
- 在 ArcMap 中打开一个新的空地图文档。
- 单击地理处理 > Python。
- 单击 Python 窗口的标题栏,并按住鼠标左键。
- 将 Python 窗口拖动至位于 ArcMap 应用程序底部的停靠锚点,然后释放鼠标键。
- 在 Python 窗口的代码窗格(具有 >>> 字符)中单击。您会看到一些帮助文本出现在右侧的帮助窗格中。
- 右键单击代码窗格并选择帮助放置 > 底部。帮助即会出现在代码窗格的下方。您可能需要调整两个窗格之间的分割器以便有足够的空间来输入代码和查看帮助。
- 现在输入以下语句(请注意,Python 区分大小写):
- 右键单击代码窗格,然后单击全部清除以清除代码窗格。
如果是第一次打开 Python 窗口,它在应用程序中将显示为漂浮状态。接下来的步骤介绍如何停靠 Python 窗口以及修改帮助的放置位置。
>>> arcpy.mapping.ExportToPDF(
![ExportToPDF 语法的屏幕截图 ExportToPDF 语法的屏幕截图](00s3/GUID-7E9B335E-9C01-4E4E-AC55-9294150FF085-web.png)
引用现有地图文档
通常,通过 arcpy.mapping 脚本执行的首要操作之一即引用要处理的现有地图文档 (.mxd) 或图层文件 (.lyr)。在本节中,您将了解如何引用地图文档。
引用地图文档的方法有两种。第一种方法是通过提供 .mxd 文件的路径在磁盘上进行引用。如果要构建将在 ArcGIS 环境外部运行的脚本,则必须使用地图文档的路径对其进行引用。第二种方法是引用当前加载至 ArcMap 应用程序中的地图文档(在这种情况下,指的是 untitled.mxd)。在 ArcMap 内的 Python 窗口中进行操作时,引用当前加载的地图文档十分方便,因为在应用程序中可直接看到对地图文档执行的更改。以下步骤将介绍如何引用当前加载至 ArcMap 中的地图文档。
- 在 Python 窗口中输入以下内容,完成输入后按 ENTER:
- 在 Python 窗口中,输入以下内容:
- 在 Python 窗口中输入以下内容,完成输入后按 ENTER:
- 在 ArcMap 中,单击文件 > 地图文档属性。
- 完成地图文档属性 对话框后,单击取消。
- 在 Python 窗口中输入以下内容,完成输入后按 ENTER:
- 在 Python 窗口中输入以下内容,完成输入后按 ENTER:
>>> mxd = arcpy.mapping.MapDocument("CURRENT")
>>> mxd.
>>> mxd.author = "YOUR NAME GOES HERE"
>>> mxd.save()
>>> print mxd.filePath
![Python 窗口中 mxd.filePath 结果的屏幕截图 Python 窗口中 mxd.filePath 结果的屏幕截图](00s3/GUID-D6590E30-C9F6-4F21-80A8-E2C2A76EE49A-web.png)
将图层文件添加到地图文档中
现在您已引用地图文档,接下来要做的是向地图文档中添加图层文件 (.lyr)。此操作可通过 arcpy.mapping AddLayer 函数完成。
- 在 Python 窗口中,输入以下内容:
- 在 Python 窗口中,按 Backspace 移除 AddLayer 函数,输入以下内容,完成输入后按 ENTER:
- 在 Python 窗口中输入以下内容,完成输入后按 ENTER。您提供的路径很可能与以下示例不同。
- 在 Python 窗口中输入以下内容,完成输入后按 ENTER:
>>> arcpy.mapping.AddLayer(
![Python 窗口中 AddLayer 语法的屏幕捕获 Python 窗口中 AddLayer 语法的屏幕捕获](00s3/GUID-70FDD60B-A311-4D25-AD55-D8DDB73CCA62-web.png)
>>> df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
![注 注](rsrc/note.png)
对于以下步骤,需要定位现有图层文件。如果没有图层文件,则需要制作一个。
>>> lyrFile = arcpy.mapping.Layer(r"C:\Project\data\Rivers.lyr")
>>> arcpy.mapping.AddLayer(df, lyrFile)
![Python 窗口中 AddLayer 结果的屏幕截图 Python 窗口中 AddLayer 结果的屏幕截图](00s3/GUID-63592499-E6D5-49C9-B6DA-D20AFBF8810A-web.png)
将地图文档导出至 PDF
将地图文档导出至 PDF 极其容易,仅需要单行代码。您在教程开始处已看过 ExportToPDF 函数的语法。现在将完成该语法。
- 在 Python 窗口中输入以下内容,完成输入后按 ENTER。您提供的路径很可能与以下示例不同。
>>> arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Doc1.pdf")
![Python 窗口中 ExportToPDF 结果的屏幕截图 Python 窗口中 ExportToPDF 结果的屏幕截图](00s3/GUID-29EA642F-02E9-4C03-B337-0B45B647EA5E-web.png)
使用 ListLayers 函数引用图层,并更改图层属性
有许多属性和方法可用于处理地图文档中的图层。您之前已将图层文件中的图层添加至地图文档。创建的名为 lyrFile 的变量即引用添加至地图文档的图层。使用此变量,可修改已添加图层的某些属性。
- 在 Python 窗口中,输入以下内容:
- 在 Python 窗口中,按 Backspace 删除当前文本,输入以下内容,然后按 ENTER:
- 在 Python 窗口中输入以下两行,在每行后面按 ENTER:
- 在 Python 窗口中输入以下两行,在每行后面按 ENTER:
>>> lyrFile.
>>> lyr = arcpy.mapping.ListLayers(mxd)[0]
>>> lyr.name = "Some New Name"
>>> lyr.visible = False
>>> arcpy.RefreshTOC()
>>> arcpy.RefreshActiveView()
![注 注](rsrc/note.png)
如果在 ArcMap 外部运行独立脚本,则不需要这些附加函数。
![Python 窗口中刷新结果的屏幕截图 Python 窗口中刷新结果的屏幕截图](00s3/GUID-AB9EA61D-46F9-46C3-A970-503442A4969B-web.png)
更改数据框范围
在本节中,您将更改数据框范围以使其与所选要素的范围相符。在脚本中,通常使用类似 SelectlayerByAttribute 的函数来完成此操作。为了简化操作,您将以图形的方式选择一些要素。首先需要使用 Python 再次开启图层可见性。
- 在 Python 窗口中输入以下三行,在每行后面按 ENTER:
- 在 ArcMap 中,以图形方式选择图层中的一个或多个要素。
- 在 Python 窗口中输入以下两行,在每行后面按 ENTER:
>>> lyr.visible = True
>>> arcpy.RefreshTOC()
>>> arcpy.RefreshActiveView()
>>> lyrExtent = lyr.getSelectedExtent()
>>> df.extent = lyrExtent
![Python 窗口中 df.extent 结果的屏幕截图 Python 窗口中 df.extent 结果的屏幕截图](00s3/GUID-11FE9626-FB66-4DA6-8186-63C4B8742A44-web.png)
将地图文档(再次)导出至 PDF
将再次导出至 PDF。这次将另外创建一个 PDF 文档,该文档最终将与第一个文档一起追加到新文档中。
- 在 Python 窗口中输入以下内容,完成输入后按 ENTER。您提供的路径很可能与以下示例不同。
>>> arcpy.mapping.ExportToPDF(mxd, r"C:\Project\Doc2.pdf")
![Python 窗口中 ExportToPDF 结果的屏幕截图 Python 窗口中 ExportToPDF 结果的屏幕截图](00s3/GUID-D6F1CBBA-0783-42C5-B286-7267DF567BB9-web.png)
新建 PDF 文档并追加两页
arcpy.mapping 模块包含一些 PDF 文档管理函数,这对于创建多页文档十分理想。例如,完整的地图册除包含数据驱动页面生成的标准参考地图页面以外,往往还包含一些其他页面。arcpy.mapping 的使用对于构建完整地图册来说是必要的步骤。
教程本部分将模拟多页报告的创建过程。首先要新建一个 PDF 文档,然后追加在先前步骤中创建的 PDF。假设这些 PDF 文档只是构成地图册的单个文档。例如,Doc1.pdf 可以是表示标题页和内容列表等的多页 PDF。第二个 PDF 文档可以是将所有数据驱动页面地图页面导出至单个多页 PDF 的结果。
第一步是新建 PDF 文档。
- 在 Python 窗口中输入以下内容,完成输入后按 ENTER:
- 在 Python 窗口中输入以下三行,在每行后面按 ENTER:
>>> PDFdoc = arcpy.mapping.PDFDocumentCreate(r"C:\Project\Final.pdf")
>>> PDFdoc.appendPages(r"C:\Project\Doc1.pdf")
>>> PDFdoc.appendPages(r"C:\Project\Doc2.pdf")
>>> PDFdoc.saveAndClose()
![Python 窗口中 saveAndClose 结果的屏幕截图 Python 窗口中 saveAndClose 结果的屏幕截图](00s3/GUID-7D504641-1CB6-4278-919D-096443E15C6C-web.png)
至此,您已使用 arcpy.mapping 完成了一个十分简单但常用的工作流。接下来的步骤是将这些工作流应用于您自己的地图文档和图层。另外,建议您花费一些时间深入了解一下 arcpy.mapping 帮助主题。每个主题末尾提供了上百种小代码示例,可轻松将其复制并粘贴到 Python 窗口中。还可以在资源中心中搜索 arcpy.mapping,以查找更高级的 arcpy.mapping 应用程序。