摘要
用于访问 ArcGIS Pro 工程方法和属性。大多数地图自动化工作流都需要引用此对象。
说明
ArcGISProject 对象用于访问 ArcGIS Pro 应用程序中找到的众多工程属性和方法。ArcGISProject 对象通常是最先引用的对象(这些对象是在地图自动化脚本中创建的)之一,因为它是访问几乎所有其他 ArcGIS 工程对象的主要入口点。
引用 ArcGISProject 对象后,您可以使用 listMaps 方法访问地图或使用 listLayouts 方法访问布局。引用 Map 对象后,您可以访问 Layer 或 Table 对象,或访问 Layout 对象后,您可以访问 GraphicElement、LegendElement、MapFrame、MapSurroundElement、pictureElement 和 TextElement 等布局元素。您可以从这些对象访问工程中的其他对象。ArcGISProject 对象还可以用于管理工程设置,如 defaultGeodatabase 和 defaultToolbox。
importDocument 方法允许您将地图文档 (.mxd)、globe 文档 (.3dd) 和 scene 文档 (.sxd) 导入到工程中。此操作提供了用于将这些文档类型自动转换为 ArcGIS Pro 工程的机制。importDocument 方法还允许您将地图文件 (.mapx)、布局文件 (.pagx) 或报表文件 (.rptx) 导入到现有工程中。
activeMap 属性将返回与活动布局视图上活动地图视图或活动地图框关联的地图。如果地图视图处于活动状态,则 activeView 属性将返回 MapView 对象,如果布局视图处于活动状态,则其将返回 Layout 对象。这两种属性均适用于要在应用程序中执行的脚本,例如在 Python 窗格中运行的脚本或者与脚本工具相关联的脚本。如果没有活动视图,则两种属性都将返回 None。当脚本在应用程序外部运行时,这些属性将始终返回 None 值,因为视图仅在应用程序打开时才会相关。从 activeView 属性返回的 MapView 是更改与地图视图相关联的范围的唯一方法。MapView 类提供多个函数,允许您更改范围,例如 camera 属性、panToExtent、ZoomToAllLayers 和 ZoomToBookmarks。
属性
属性 | 说明 | 数据类型 |
activeMap (只读) | 返回与应用程序内部焦点视图相关联的地图对象。如果布局视图处于活动状态,则其将返回与活动地图框相关联的地图。 注:该属性旨在通过使用脚本工具或 Python 窗口内的应用程序来执行。如果脚本在应用程序外部运行,则将始终返回 None。 | Map |
activeView (只读) | 将返回 MapView 或 Layout,具体取决于当前视图。如果 ArcGIS Pro 工程未打开视图,或者活动视图为地图视图或布局视图之外的其他内容(例如,图表、表格、Model Builder 视图等),则将返回 None。 注:该属性旨在通过使用脚本工具或 Python 窗口内的应用程序来执行。如果脚本在应用程序外部运行,则将始终返回 None。 | Object |
dateSaved (只读) | 返回报告上次工程保存日期的 Python datetime 对象。 | DateTime |
defaultGeodatabase (可读写) | 工程的默认地理数据库位置。此字符串必须包含地理数据库的完整路径和文件名称。 | String |
defaultToolbox (可读写) | 工程的默认工具箱位置。此字符串必须包含工具箱的完整路径和文件名称。 | String |
documentVersion (只读) | 根据上次保存文档的时间返回文档版本。执行 save 或 saveACopy 将更新文档版本,以匹配应用程序版本。 | String |
filePath (只读) | 返回报告完全限定的工程路径和文件名的字符串值。 | String |
homeFolder (可读写) | 工程的主目录文件夹位置。此字符串必须包含所需位置的完整路径。 | String |
metadata (可读写) | 获取或设置工程的元数据类信息。请注意:设置元数据取决于 isReadOnly 属性值。 | Metadata |
方法概述
方法 | 说明 |
closeViews ({view_type}) | 用于关闭当前在 ArcGIS Pro 中打开的视图窗格。 |
importDocument (document_path, {include_layout}, {reuse_existing_maps}) | 将地图文档 (.mxd)、globe 文档 (.3dd) 和 scene 文档 (.sxd) 导入到 ArcGIS Pro 工程中。还可以导入地图文件 (.mapx)、布局文件 (.pagx) 和报表文件 (.rptx) 的内容。 |
listBrokenDataSources () | |
listColorRamps ({wildcard}) | listColorRamps 方法将引用工程中的可用色带。 |
listLayouts ({wildcard}) | 返回 ArcGIS 工程 (.aprx) 中的 Layout 对象的 Python 列表。 |
listMaps ({wildcard}) | 返回 ArcGIS 工程 (.aprx) 中的 Map 对象的 Python 列表。 |
listReports ({wildcard}) | 返回 ArcGIS 工程 (.aprx) 中的报表对象的 Python 列表。 |
save () |
将更改保存至 ArcGISProject (.aprx)。 |
saveACopy (file_name) | 将 ArcGISProject (.aprx) 保存到新文件路径或另存为新文件名。 |
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case}) | 使用工作空间字典或路径替换连接属性。 |
方法
closeViews ({view_type})
参数 | 说明 | 数据类型 |
view_type | A constant that determines the type of views to be closed in the application.
(默认值为 MAPS_AND_LAYOUTS) | String |
importDocument (document_path, {include_layout}, {reuse_existing_maps})
参数 | 说明 | 数据类型 |
document_path | 包含(.mxd、.3dd 或 .sxd)文档或地图文件 (.mapx)、布局文件 (.pagx) 或报表文件 (.rptx) 的系统路径和名称的字符串。 | String |
include_layout | 指示是否导入地图文档中的布局 (.mxd) 的布尔型参数。如果设置为 True,则将导入布局和全部数据框。如果设置为 False,则仅导入数据框。对于其他文件类型,可忽略此参数。 (默认值为 True) | Boolean |
reuse_existing_maps | 默认情况下,导入布局文件 (.pagx) 会复制布局引用的所有地图。如果工程中已存在地图,则可以将 reuse_existing_maps 设置为 True,由此可检查工程中布局文件中引用的地图,并仅复制工程中不存在的地图。这样可以避免在工程中复制地图。对于其他文件类型,可忽略此参数。 (默认值为 False) | Boolean |
此方法一次只能导入一个文档。要导入多个文档,请对每个文档执行一次此方法。地图文档 (.mxd) 始终具有布局。迁移地图文档时,您可能并不总是想要导入布局。如果是这种情况,请设置 include_layout=False。
listBrokenDataSources ()
数据类型 | 说明 |
List |
listBrokenDataSources 方法始终返回 Python 列表对象,即使返回一个损坏的图层或表。
listColorRamps ({wildcard})
参数 | 说明 | 数据类型 |
wildcard | 通配符将基于色带名称显示在应用程序中。星号 (*) 和字符的组合可用于帮助限制生成的列表。 (默认值为 None) | String |
数据类型 | 说明 |
List | 将返回 ColorRamp 对象列表。 |
在一个工程中,可能会有多个色带使用相同的名称。创作工程时,采用可通过唯一名称轻松进行搜索的色带名称非常重要。索引编号可用于返回一个特定的色带。例如,以下行可以返回列表中的第一个色带对象:cr = aprx.listColorRamps("Black*")[0]。
listLayouts ({wildcard})
参数 | 说明 | 数据类型 |
wildcard | 通配符基于布局名称且不区分大小写。星号 (*) 和字符的组合可用于帮助限制生成的列表。 (默认值为 None) | String |
数据类型 | 说明 |
List | ArcGIS 工程中的 Layout 对象的 Python 列表。 |
返回 ArcGIS 工程 (.aprx) 中的 Layout 对象的 Python 列表。
listMaps ({wildcard})
参数 | 说明 | 数据类型 |
wildcard | 通配符基于地图名称且不区分大小写。星号 (*) 和字符的组合可用于帮助限制生成的列表。 (默认值为 None) | String |
数据类型 | 说明 |
List | ArcGIS 工程中的 Map 对象的 Python 列表。 |
返回 ArcGIS 工程 (.aprx) 中的 Map 对象的 Python 列表。
listReports ({wildcard})
参数 | 说明 | 数据类型 |
wildcard | 通配符基于报表名称且不区分大小写。星号 (*) 和字符的组合可用于帮助限制生成的列表。 (默认值为 None) | String |
数据类型 | 说明 |
List | ArcGIS 工程中的报表对象的 Python 列表。 |
返回 ArcGIS 工程 (.aprx) 中的报表对象的 Python 列表。
save ()
将更改保存至 ArcGISProject (.aprx)。已保存此项目,同时项目变量继续引用原始 ArcGISProject 对象。
saveACopy (file_name)
参数 | 说明 | 数据类型 |
file_name | 用来将 ArcGISProject (.aprx) 保存到新文件路径或另存为新文件名的字符串。 | String |
该方法会创建新输出工程文件,但工程变量继续引用原始 ArcGISProject 对象。并不会复制工程文件夹中的所有内容。
updateConnectionProperties (current_connection_info, new_connection_info, {auto_update_joins_and_relates}, {validate}, {ignore_case})
参数 | 说明 | 数据类型 |
current_connection_info | 用于表示工作空间路径或 Python 字典(包含要更新的源的连接属性)的字符串。 | String |
new_connection_info | 用于表示包含连接属性与新源信息的工作空间路径或 Python 字典的字符串。 | String |
auto_update_joins_and_relates | 如果设置为 True,则 updateConnectionProperties 方法还将更新相关连接或关联的连接。 (默认值为 True) | Boolean |
validate | 如果设置为 True,则仅在 new_connection_info 值为有效连接时,才会更新连接属性。如果为无效连接,则不会替换连接。如果设置为 False,则无论匹配是否有效,此方法都会将所有连接设置为匹配 new_connection_info。在这种情况下,如果匹配不存在,则将损坏数据源。 (默认值为 True) | Boolean |
ignore_case | 确定搜索是否区分大小写。默认情况下,查询区分大小写。要执行不区分大小写的查询,请将 ignore_case 设置为 True。 (默认值为 False) | Boolean |
有关详细说明、参数信息、案例和代码示例,请参阅更新和修复数据源帮助主题。
代码示例
下面的脚本演示了如何将文档导入到现有 ArcGIS Pro 工程。同时还设置了一些默认工程设置并将结果保存到新文件。
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\blank.aprx")
aprx.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite.mxd")
aprx.importDocument(r"C:\Projects\YosemiteNP\Documents\Yosemite_ScenicViews.3dd")
aprx.defaultGeodatabase = r"C:\Projects\YosemiteNP\Data_Vector\YosemiteData.gdb"
aprx.defaultToolbox = r"C:\Projects\YosemiteNP\Analysis\AnalysisTools.tbx"
aprx.saveACopy(r"C:\Projects\YosemiteNP\Yosemite.aprx")
下面的脚本使用了关键字 current,因此可从 Python 窗口运行此脚本。此脚本打印了工程及其图层中每个地图的名称,以及每个布局的名称及其页面大小。
aprx = arcpy.mp.ArcGISProject("CURRENT")
for m in aprx.listMaps():
print("Map: " + m.name)
for lyr in m.listLayers():
print(" " + lyr.name)
print("Layouts:")
for lyt in aprx.listLayouts():
print(f" {lyt.name} ({lyt.pageHeight} x {lyt.pageWidth} {lyt.pageUnits})")