教程:arcpy.mp 入门

复杂程度: 初级数据要求: 使用自备的数据 目标: 本教程的目的是向您介绍 arcpy.mp 基础知识。将使用 Python 连接到工程并引用工程项,然后将布局导出为 PDF。

本教程将引导您了解一些常见 arcpy.mp 工作流,同时还将介绍一些重要概念。其目的在于帮助初识 Python 脚本和 arcpy.mp 的用户。本教程中的步骤适用于任何数据及所有许可级别。

注:

以下步骤从总体上概括了 arcpy.mp。在本教程中,提供了许多具体帮助主题的链接,对涉及到的概念给出了详细解释。而且,这些主题基本上都附有示例代码片段。

教程设置

您需要设置一个包含单个地图和布局的基本工程。

  1. 打开新的空白工程。
  2. 插入选项卡的工程组中,单击新建地图并在下拉菜单中再次选择新建地图
  3. 确保地图名称为 Map。稍后在本教程中您将通过此名称引用地图。
  4. 插入选项卡上,单击新建布局并从图库中选择布局。
  5. 确保布局名称为 Layout。稍后在本教程中您将通过此名称引用地图。
  6. 插入选项卡的地图框组中,从地图框下拉菜单的工程中选择地图并将其添加到布局。
  7. 工程选项卡上,单击保存

Python 窗口

开始学习 arcpy.mp 的最简单方法是从 Python 窗口入手。这允许您执行基于 Python 的小型工作流,并且在大型脚本中进行细化之前可使您直接了解应用程序中的概念。Python 窗口是 ArcGIS Pro 应用程序框架的一部分,提供 intelliSense、自动完成和命令语法,因此您可以按正确顺序快速输入相应的参数信息。

  1. 分析选项卡上,单击 Python
  2. 默认情况下,Python 窗口将停靠在应用程序的底部。

  3. 在显示在此处输入 Python 代码的代码窗格中单击。
  4. 随即将显示闪烁的指针,可在此处输入代码。

引用现有工程

通常,通过 arcpy.mp 脚本执行的首要操作之一即引用要处理的现有工程 () 或图层文件(.lyrx.lyr)。在本节中,您将引用工程。

引用工程的方法有两种。第一种方法是通过提供 .aprx 文件的路径在磁盘上进行引用。如果要构建将在 ArcGIS 环境外部运行的脚本,则必须使用工程的完整系统路径才能对其进行引用。第二种方法是引用当前加载到 ArcGIS Pro 应用程序中的工程。在 Python 窗口中进行操作时,引用当前加载的工程十分方便,因为在应用程序中可直接看到对其执行的更改。以下步骤将介绍如何引用当前加载至 ArcGIS Pro 中的工程。

  1. 在 Python 窗口中,输入以下代码行,然后按 Enter。切记,Python 语法区分大小写。
  2. >>> aprx = arcpy.mp.ArcGISProject("CURRENT")
    ArcGISProject 函数为名为 aprx 的变量返回一个 ArcGISProject 对象参考。字符串是用于引用当前已加载工程的关键字。您也可以提供工程文件 (.aprx) 的路径来代替 CURRENT
  3. 在 Python 窗口中,输入以下内容:
  4. >>> aprx.
    输入点之后,您会看到对 ArcGISProject 对象可用的方法和属性的长列表。
  5. 在 Python 窗口中,继续输入以下内容,然后按 Enter。需要提供到自己现有地理数据库的路径。
  6. >>> aprx.defaultGeodatabase = r"path to a geodatabase of yours"  #### for example, aprx.defaultGeodatabase = r"C:\Projects\YosemiteNP\Data\Yosemite.gdb")
    默认情况下,创建新工程时,其默认地理数据库将被设置为空地理数据库(名称与工程名称相同)且存放在同一文件夹位置中。您刚刚更改了现有地理数据库的位置。
    请注意,路径字符串的前面有一个小写 r。这是 Python 中的特殊字符,代表 raw。这表示要按原样解释该字符串并忽略字符串中的其他任何特殊字符。之所以要使用小写的 r,是因为路径字符串中含有反斜线。在 Python 中,反斜线也是特殊字符。例如,字符串中的 \t 将转换至选项卡,且 \n 将转换至新线。在以上示例中,您不想使用特殊字符,而想使用原始的文本字符串。还有其他两种等效的方法可用于在 Python 中输入相同的路径。第一种,使用正斜线(例如,"C:/Project/States.lyr")。Python 支持使用正斜线;这是跨平台标准。第二种,使用双反斜线(例如,"C:\\Project\\Lakes.lyr")。第一个反斜线抵消了第二个反斜线。记住小写 r 方法很重要,因为在 Windows 平台上复制系统路径时带有反斜线。
  7. 若要查看您刚对工程做出的更改,请单击工程选项卡并选择选项
  8. 第一个面板将显示您对默认地理数据库做出的更改。
  9. 单击取消
  10. 在 Python 窗口中输入以下内容,然后按 Enter
  11. >>> aprx.save()

    检查文件的时间戳。应将其更新到当前日期和时间。

    save() 方法不含任何参数,但由于它是一种方法,因此必须包含括号。要验证工程保存的位置,请执行以下操作:
  12. 在 Python 窗口中输入以下内容,然后按 Enter
  13. >>> print(aprx.filePath)
    将工程路径输出到代码窗格。

将图层文件添加到地图

此时,您已引用了工程,接下来便可将图层文件(.lyr.lyrx)添加到地图。首先,引用工程中的地图,其次引用磁盘上的图层文件;最后向地图添加图层文件。

注:
对于以下步骤,需要定位现有图层文件。如果没有图层文件,则需要创作一个。

  1. 在 Python 窗口中,输入以下内容:
  2. >>> m = aprx.listMaps("Map")[0]
    所有 ArcPy 列表函数将返回 Python 列表对象。在列表中返回的这些项从零开始,这表示列表中的第一个项的索引值为 0,第二个项为 1,依此类推,一直到 n-1。由于要让 m 变量引用 Map 对象而不是 Python 列表对象,因此必须在函数后追加索引号。在函数末尾追加 [0] 会返回列表中的第一个地图。在此案例中,该地图应该是列表中仅有的地图,因为您同时提供的地图名称为 wildcard 参数。如果您为工程中地图的命名是唯一的并且使用适当的 wildcard 值隔离项目,您应始终返回仅有一个项目的列表,索引 [0] 将生效。
    接下来,您需要引用图层文件才能使用 addLayer 方法。引用图层文件与引用工程的过程相同,但使用的是 Map 对象上的 addLayer方法,而不是 ArcGISProject 函数。
  3. 在 Python 窗口中,输入以下内容:
  4. >>> m.addLayer(
    “自动完成”显示需要一个名为 add_layer_or_layerfile 必填参数和一个名为 add_position 的选填参数(以 { } 括号括起)。第一个参数可引用工程或图层文件中的现有图层。第二个参数是可选参数,用于控制内容列表中图层的放置。
    添加该图层之前,您需要引用想要添加的图层文件。
  5. 在 Python 窗口中,按 Backspace 删除 addLayer 方法,输入以下内容,然后按 Enter
  6. >>> lyrFile = arcpy.mp.LayerFile(r"path to a layer file")  ### for example, lyrFile = arcpy.mp.LayerFile(r"C:\Projects\YosemiteNP\LYRS\rivers.lyrx")
    在以上步骤中,创建了对现有图层文件的引用,该引用存储在名为 lyrFile 的变量中。
  7. 在 Python 窗口中输入以下内容,然后按 Enter
  8. >>> m.addLayer(lyrFile, "TOP")
    图层随即添加到地图中。它还将显示在布局中,因为地图在布局中与地图框架相关联。

将布局导出为 PDF

将布局导出为 PDF 只需一对代码行。首先,引用要导出的布局并调用 exportToPDF 方法。

  1. 在 Python 窗口中输入以下内容,然后按 Enter
  2. >>> lyt = aprx.listLayouts("Layout")[0]
    lyt 变量将引用工程中名为 Layout 的第一个布局。在此案例中,该布局是工程中仅有的布局,因此不必为 wildcard 参数提供布局名称。但最好始终提供名称。例如,可输入以下信息:
    >>> lyt = aprx.listLayouts()[0]
    其作用相同。如果您向工程中插入其他布局,则无法确定要导出的布局。如果您提供了名称,则可确定。
  3. 在 Python 窗口中输入以下内容,然后按 Enter。您提供的路径很可能与以下示例不同。
  4. >>> lyt.exportToPDF(r"C:\Projects\YosemiteNP\Output\Page1.pdf")
    检查 PDF 文件是否创建在指定位置。

至此,您已使用 arcpy.mp 完成了一个常见工作流。接下来的步骤是将此工作流应用至您自己的工程和图层。另请参阅 arcpy.mp 帮助主题。每个主题末尾都提供了多种小代码示例,可轻松将其复制并粘贴到 Python 窗口中。

相关主题