Skip to main content

将 arcpy.na 迁移至 ArcGIS Pro

使用 arcpy.na 在 ArcGIS Desktop 中编写的 Python 脚本必须经过修改,才能在 ArcGIS Pro 中运行。 此外,如果您需要脚本保持与 ArcGIS Desktop 的向后兼容性,可能需要特殊考虑。 以下各节重点介绍了必要的更改和注意事项。

使用 Python 3

ArcGIS Pro 使用 Python 3。 您可能需要修改一些标准的 Python 语法。 如果希望运行独立的 Python 脚本,则必须安装 64 位 Python

创建网络分析图层

从 ArcGIS Pro 开始,可以使用一套全新的地理处理工具来创建网络分析图层。 用于创建网络分析图层的旧工具已被弃用。 创建路径图层工具已被创建路径分析图层工具取代,其他网络分析图层类型也进行了类似的更换。 新工具提供了增强的功能,例如能够使用“出行模式”,以及使用本地网络数据集或门户服务来求解分析。 被弃用的工具在 ArcGIS Pro 中仍可继续工作,但只有在脚本需要与 ArcGIS Desktop 或 1.2 之前的 ArcGIS Pro 版本向后兼容时,才应使用它们。

设置工作空间环境

在 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>" 将工作空间环境显式地设置到想要存储图层数据的文件地理数据库。 如果您希望将现有的 .lyr 网络分析图层文件保存为新的 .lyrx 格式,请使用 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 的本地化版本上正常运行,可以像在 ArcGIS Desktop 中那样,使用 arcpy.na.GetNAClassNames 来获取子图层名称。 您不能再通过字符串路径访问子图层,例如对于名为 Route 的网络分析图层中的 Stops 子图层,不能再使用 "Route/Stops" 进行访问。