访问分析输出

使用 arcpy.nax 模块执行网络分析的最重要部分之一就是访问分析输出。 在使用 solve 方法求解分析时,将返回一个求解程序结果对象,该结果对象具有多种可通过以下方式检索输出的方法:

  • 使用 export 方法将分析结果保存到要素类。
  • 使用 searchCursor 方法直接读取结果。
  • 将分析结果保存到可在其他应用程序(例如 ArcGIS Navigator)中使用的 .zip 文件。
  • 出于调试目的,将分析结果保存到图层文件或包。

本主题将更加详细地介绍每个选项,以便您选择适合您需要的选项。

注:

本主题以路径分析为例;但是,此处提供的信息可以应用于任何类型的网络分析。

使用 export 方法将结果保存到要素类

要将求解程序返回的分析结果直接保存到磁盘上,请使用 export 方法。 将包含指定输出类型的所有字段和行。

以下代码片段显示了如何使用 export 方法将分析结果保存到磁盘上。

# Solve the analysis
result = route.solve()

# Save results to disk using the export method
output_feature_class = "C:/data/io.gdb/Routes"
result.export(arcpy.nax.RouteOutputDataType.Routes, output_feature_class)

有关路径分析的 export 方法的详细信息,请参阅 RouteResult 对象文档的“方法”部分。

请参阅路径分析的分析输出类型及其方案的完整列表

使用 searchCursor 方法读取结果

searchCursor 方法可用于直接逐行访问输出。 如果仅需从输出中检索特定字段,或者要将结果直接插入到其他某些系统,而不将整个输出表保存到磁盘,则该方法将非常有用。

例如,也许在您的路径分析中,您只需检索每个路径的总行驶里程,则可将该信息包含在报表中。 使用 searchCursor 方法检索每一行的 Total_Miles 字段。

以下代码片段显示了如何使用 searchCursor 方法在输出中检索某些字段的值。 在本示例中,可将超过 10 英里路径的名称打印到控制台。

# Solve the analysis
result = route.solve()

# Retrieve specific fields of interest using a searchCursor
for row in result.searchCursor(arcpy.nax.RouteOutputDataType.Routes, ["Name", "Total_Miles"]):
    # Retrieve the name and mileage for each route
    route_name = row[0]
    route_miles = row[1]
    # Print the route's name if the route's total mileage is greater than 10 miles
    if route_miles > 10:
        print(route_name)

可以使用一些特殊形状令牌访问输出的几何。 例如,使用 SHAPE@JSON 令牌可以检索形状的 JSON 表示。 使用 SHAPE@XY 令牌可以检索由求解程序结果对象的 spatialReference 属性指定的空间参考中的点的一组 X 和 Y 坐标。

提示:

使用结果对象的 fieldNames 方法可以检索分析输出类中包含的字段列表。 有关路径分析输出的 fieldNames 方法的详细信息,请参阅 RouteResult 对象文档的“方法”部分。

有关路径分析的 searchCursor 方法的详细信息,请参阅 RouteResult 对象文档的“方法”部分。

了解有关 SolverResultSearchCursor 对象的详细信息

请参阅路径分析的分析输出类型及其方案的完整列表

使用 saveRouteData 方法检索路径数据 .zip 文件

对于“路径”、“最近设施点”和“车辆配送”分析,可以将结果导出到路径数据 .zip 文件。 可以使用共享为路径图层工具将 .zip 文件共享为 ArcGIS OnlineArcGIS Enterprise 中的路径图层项目。

路径图层项目可供各种应用程序使用(例如 ArcGIS Navigator)来为外业工作人员提供路径指引,可供 Map Viewer 中的方向窗格来进一步自定义路径图层中包含的路径,或可供 ArcGIS Pro 基于路径图层来创建新的路径分析图层。

以下代码片段显示了如何使用 saveRouteData 方法保存路径数据 .zip 文件,并使用 ShareAsRoute Layers 功能将其共享至您的门户。

# Solve the analysis
result = route.solve()

# Export the results to a route data .zip file
out_zip = "C:/data/RouteData.zip"
result.saveRouteData(out_zip)

# Share the route data zip file as route layers to your portal
arcpy.nax.ShareAsRouteLayers(
    out_zip,
    summary='Tuesday restaurant inspection routes', 
    tags='Tuesday',
    route_name_prefix='TuesdayRestaurants', 
    portal_folder_name='RouteLayers',
    share_with='MYGROUPS',
    groups='Drivers'
)
警告:

要成功运行 saveRouteData 方法,必须将求解程序对象上的 allowSaveRouteData 属性设置为 True

有关路径分析的 saveRouteData 方法的详细信息,请参阅 RouteResult 对象文档的“方法”部分。

使用 saveAsLayerFile 方法保存图层文件或包

可以使用 saveAsLayerFile 方法将分析设置和结果保存到图层文件或图层包,然后在 ArcGIS Pro 中打开并检查生成的图层。 这主要用于调试分析。

可以选择另存为与 ArcGIS DesktopArcGIS Pro 兼容的 .lyr 图层文件或者仅与 ArcGIS Pro 兼容的 .lpkx 图层包。 输出类型取决于您在指定方法的 file_name 参数时所使用的文件扩展名。 图层包中包含分析数据,但不包含网络数据源。

旧版本:

具有 .lyr 扩展名的图层文件没有出行模式属性。 构成出行模式的各个设置将保留在已保存的图层中,但是用于分析的出行模式的名称将丢失。

以下代码片段显示了如何使用 saveAsLayerFile 方法将分析结果另存为图层包。

# Solve the analysis
result = route.solve()

# Save the results to a layer package for debugging purposes
out_lpkx = "C:/data/RouteAnalysis.lpkx"
result.saveAsLayerFile(out_lpkx)
注:

要成功运行 saveAsLayerFile 方法,必须将求解程序对象上的 allowSaveLayerFile 属性设置为 True

有关路径分析的 saveAsLayerFile 方法的详细信息,请参阅 RouteResult 对象文档的“方法”部分。