将 arcpy.na 迁移至 ArcGIS Pro

应先对使用 arcpy.naArcGIS Desktop 中创作的 Python 脚本进行修改,然后再在 ArcGIS Pro 中运行。此外,您可能需要特别注意是否要将脚本保留为向后兼容 ArcGIS Desktop。以下部分显示了必要的更改和注意事项。

使用 Python 3

ArcGIS Pro 使用 Python 3。您可能需要修改某些标准 Python 语法。若要运行独立 Python 脚本,则需要安装 64 位 Python

创建网络分析图层

ArcGIS Pro 开始,可以使用一组新的地理处理工具来创建网络分析图层。用于创建网络分析图层的原有工具已弃用。创建路径图层工具已由创建路径分析图层工具替代,其他网络分析图层类型也将由其代替。新工具提供了一些改进功能,例如启用出行模式和使用本地网络数据集或门户服务来解决分析的功能。弃用工具将继续在 ArcGIS Pro 中使用,但是只能在需要将脚本向后与 ArcGIS DesktopArcGIS Pro 1.2 之前的版本兼容时使用。

设置工作空间环境

ArcGIS Pro 中,网络分析图层将其数据存储在文件地理数据库要素类中的磁盘上。在 Python 脚本中创建新网络分析图层时(例如,使用 arcpy.na.MakeRouteAnalysisLayer()),您必须首先使用 arcpy.env.workspace = "<path to file gdb>" 将工作空间环境显式地设置到想要存储图层数据的文件地理数据库。创建图层后,将向该文件地理数据库添加一个包含相应子图层要素类的新要素数据集。

使用图层文件

使用 ArcGIS Desktop 创作的图层文件具有 .lyr 扩展名,使用 ArcGIS Pro 创建的图层文件具有 .lyrx 扩展名。现有 .lyr 网络分析图层文件仍可用于 ArcGIS Pro 的脚本中,但他们将自动转换为新图层格式,并且其数据会保存到磁盘上的要素类。使用脚本中的 .lyr 网络分析图层文件之前,您必须使用 arcpy.env.workspace = "<path to file gdb>" 将工作空间环境显式地设置到想要存储图层数据的文件地理数据库。如果想以新的 .lyrx 格式保存现有 .lyr 网络分析图层文件,则使用 arcpy.management.SaveToLayerFile()。无论您将 .lyrx 文件保存到什么位置,图层数据都将保留在工作空间环境中指定的文件地理数据库中。

使用图层对象

arcpy.mapping 模块现为 arcpy.mp,并且这些更改将影响您使用脚本中的网络分析图层对象的方式。具体来说,该语法针对访问子图层、从图层文件检索图层对象以及将图层对象保存为图层文件操作进行了更改。

要根据现有 .lyrx(或 .lyr)网络分析图层文件创建图层对象,请使用 arcpy.mp.LayerFile(lyrxPath).listLayers()[0]。请注意,arcpy.mapping.ListLayers() 已替换为 layer_object.listLayers(),并应使用 arcpy.mp.LayerFile 来代替使用 arcpy.mapping.LayerlistLayers 方法将返回一个包含在 .lyrx 文件中的图层对象列表;第一个项目始终为网络分析图层对象,其余项目则为子图层。要将网络分析图层对象保存为 .lyrx,请使用 NA_layer_object.saveACopy("<path to output .lyrx>")

要访问网络分析图层的特定子图层,如果您知道想要访问的子图层名称,则可使用 listLayers 中的通配符过滤结果:facilities_sublayer = NA_layer_object.listLayers(facilities_layer_name)[0]。如果您不知道子图层名称,或者想要确保您的脚本适用于 ArcGIS Pro 的本地化版本,则可使用 arcpy.na.GetNAClassNames 按照 ArcGIS Desktop 中的操作方法来获取子图层名称。您不能再使用字符串路径访问子图层,例如,对名为 Route 的网络分析图层中的 Stops 子图层使用 "Route/Stops"

相关主题