共享为路径图层 (Network Analyst)

摘要

将网络分析的结果共享为门户中的路径图层项目。 路径图层包含路径的全部信息,例如分配至路径的停靠点或由路径提供服务的停靠点,以及出行方向等。

路径图层项目可用于各种应用程序,例如在 ArcGIS Navigator 中用于为移动工作人员提供路径指引,在 Map Viewer 经典版方向窗格中对路径图层包含的路径进行进一步自定义,以及在 ArcGIS AllSource 中用于基于路径图层创建路径分析图层。

使用情况

  • 该工具会在指定为活动门户的门户中创建并共享路径图层项目。 活动门户必须为 ArcGIS OnlineArcGIS Enterprise 10.5.1 或更高版本。

  • 登录活动门户的用户必须具有运行空间分析和创建内容所需的权限

  • 如果指定文件夹中存在同名路径图层项目,则将新建同名项目。 要避免创建重复项目,一种方法为在使用此工具创建路径图层时使用唯一路径名称前缀值。

  • Python 脚本中使用此工具时,上次访问 ArcGIS AllSource 的活动门户为用于创建路径图层的门户。

  • 可创建的最大路径图层数量为 1,000。 如果输入路径数据包含超过 1,000 条路径,任务将失败并显示错误消息。

参数

标注说明数据类型
输入网络分析图层或路径数据

将创建路径图层项目的网络分析图层。 网络分析图层应已求解。

支持路径、最近设施点、车辆配送和最后一公里配送网络分析图层作为此参数的有效输入。

输入还可以是包含通过 arcpy.nax 求解器结果对象saveRouteData() 方法或 REST API 中的服务参数创建的路径数据的 .zip 文件,这些数据返回具有正确方案的路径数据的压缩地理数据库。

File; Network Analyst Layer
汇总
(可选)

路径图层项目将使用的汇总。 汇总将显示为路径图层项目的一部分项目信息。 如果未提供值,则将使用默认汇总文本(<路径名称> 的路径和方向),其中 <路径名称> 将替换为路径图层表示的路径的名称。

String
标签
(可选)

这些标签将用于描述和标识路径图层项目。 各个标签以逗号分隔。 路径名称始终包含为标签,即使未提供其他值时也是如此。

String
路径名称前缀
(可选)

此限定符将添加至每个路径图层项目的标题。 例如,Monday morning deliveries 的路径名称前缀可用于对路径分析创建的所有路径图层项目进行分组,该路径分析由将于星期一上午运行的配送执行。 如果未指定值,则将仅使用路径名称创建路径图层项目的标题。

String
门户文件夹名称
(可选)

个人在线工作空间中将创建路径图层项目的文件夹。 如果不存在具有提供名称的文件夹,则将创建一个文件夹。 如果存在具有提供名称的文件夹,则将在现有文件夹中创建项目。 如果未提供值,则将在您的在线工作空间的根文件夹中创建路径图层项目。

String
共享给
(可选)

指定可以访问路径图层项目的用户。

  • 所有人路径图层项目将为公共项目,可供具有项目 URL 的任何人进行访问。
  • 不共享路径图层项目将仅与项目所有者(该用户在运行该工具时已连接到门户)进行共享。 因此,只有项目所有者可以访问路径图层。 这是默认设置。
  • 以下群组路径图层项目将与已连接用户所属的群组及其成员进行共享。 群组使用群组参数进行指定。
  • 组织路径图层项目将与组织内已身份验证的所有用户进行共享。
String
群组
(可选)

将与之共享路径图层项目的群组列表。 仅当共享对象参数设置为以下群组时,此参数才适用。

String

派生输出

标注说明数据类型
路径图层项目

在门户中共享的路径图层项目。

String

arcpy.management.ShareAsRouteLayers(in_network_analysis_layer, {summary}, {tags}, {route_name_prefix}, {portal_folder_name}, {share_with}, {groups})
名称说明数据类型
in_network_analysis_layer

将创建路径图层项目的网络分析图层。 网络分析图层应已求解。

支持路径、最近设施点、车辆配送和最后一公里配送网络分析图层作为此参数的有效输入。

输入还可以是包含通过 arcpy.nax 求解器结果对象saveRouteData() 方法或 REST API 中的服务参数创建的路径数据的 .zip 文件,这些数据返回具有正确方案的路径数据的压缩地理数据库。

File; Network Analyst Layer
summary
(可选)

路径图层项目将使用的汇总。 汇总将显示为路径图层项目的一部分项目信息。 如果未提供值,则将使用默认汇总文本(<路径名称> 的路径和方向),其中 <路径名称> 将替换为路径图层表示的路径的名称。

String
tags
(可选)

这些标签将用于描述和标识路径图层项目。 各个标签以逗号分隔。 路径名称始终包含为标签,即使未提供其他值时也是如此。

String
route_name_prefix
(可选)

此限定符将添加至每个路径图层项目的标题。 例如,Monday morning deliveries 的路径名称前缀可用于对路径分析创建的所有路径图层项目进行分组,该路径分析由将于星期一上午运行的配送执行。 如果未指定值,则将仅使用路径名称创建路径图层项目的标题。

String
portal_folder_name
(可选)

个人在线工作空间中将创建路径图层项目的文件夹。 如果不存在具有提供名称的文件夹,则将创建一个文件夹。 如果存在具有提供名称的文件夹,则将在现有文件夹中创建项目。 如果未提供值,则将在您的在线工作空间的根文件夹中创建路径图层项目。

String
share_with
(可选)

指定可以访问路径图层项目的用户。

  • EVERYBODY路径图层项目将为公共项目,可供具有项目 URL 的任何人进行访问。
  • MYCONTENT路径图层项目将仅与项目所有者(该用户在运行该工具时已连接到门户)进行共享。 因此,只有项目所有者可以访问路径图层。 这是默认设置。
  • MYGROUPS路径图层项目将与已连接用户所属的群组及其成员进行共享。 群组使用群组参数进行指定。
  • MYORGANIZATION路径图层项目将与组织内已身份验证的所有用户进行共享。
String
groups
[groups,...]
(可选)

将与之共享路径图层项目的群组列表。 仅在 share_with 参数设置为 MYGROUPS 时,此参数适用。

String

派生输出

名称说明数据类型
route_layer_items

在门户中共享的路径图层项目。

String

代码示例

ShareAsRouteLayers 示例(Python 窗口)

以下示例演示了如何仅使用所需参数将已求解路径分析作为路径图层共享到活动门户。

arcpy.na.ShareAsRouteLayers('Route')
ShareAsRouteLayers 示例 2(独立脚本)

以下示例演示了如何通过指定路径图层项目的汇总和标签将已求解路径分析共享为路径图层。 路径图层项目的名称必须以前缀 Wednesday Route for Food Inspection 开头。 路径图层将在活动门户中名为 RouteLayers 的文件夹中创建并与门户中名为 Drivers 的群组共享。

arcpy.na.ShareAsRouteLayers('Route', 'Share route solve result as route layers', 
                            'Food inspection', 'Wednesday Route for Food Inspection', 
                            'RouteLayers', 'MYGROUPS', 'Drivers')
ShareAsRouteLayers 示例 3(独立脚本)

以下独立 Python 脚本演示了如何使用 ShareAsRouteLayers 函数将已求解 Closest Facilities 网络分析图层共享到活动门户。

# Name: ShareAsRouteLayers_Workflow.py
# Description: Find the closest warehouse from the store locations and share the
#              results as route layers.
# Requirements: Network Analyst Extension

# Import system modules
import arcpy
from arcpy import env
import os


try:
    # Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")

    # Check if logged into active Portal. Fail if not logged into actiave portal.
    if arcpy.GetSigininToken() is None:
        raise arcpy.ExecuteError("Please sign in to your active portal in ArcGIS Pro.")
    
    # Set environment settings
    output_dir = "C:/Data"
    # The NA layer's data will be saved to the workspace specified here
    env.workspace = os.path.join(output_dir, "Output.gdb")
    env.overwriteOutput = True

    # Set local variables
    input_gdb = "C:/Data/Paris.gdb"
    network = os.path.join(input_gdb, "Transportation", "ParisMultimodal_ND")
    layer_name = "ClosestWarehouse"
    travel_mode = "Driving Time"
    facilities = os.path.join(input_gdb, "Analysis", "Warehouses")
    incidents = os.path.join(input_gdb, "Analysis", "Stores")

    # Create a new closest facility analysis layer. 
    result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(network,
                                    layer_name, travel_mode, "TO_FACILITIES",
                                    number_of_facilities_to_find=1)

    # Get the layer object from the result object. The closest facility layer can
    # now be referenced using the layer object.
    layer_object = result_object.getOutput(0)

    # Get the names of all the sublayers within the closest facility layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    # Stores the layer names that we will use later
    facilities_layer_name = sublayer_names["Facilities"]
    incidents_layer_name = sublayer_names["Incidents"]

    # Load the warehouses as Facilities using the default field mappings and
    # search tolerance
    arcpy.na.AddLocations(layer_object, facilities_layer_name,
                            facilities, "", "")

    # Load the stores as Incidents. Map the Name property from the NOM field
    # using field mappings
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                    incidents_layer_name)
    field_mappings["Name"].mappedFieldName = "NOM"
    arcpy.na.AddLocations(layer_object, incidents_layer_name, incidents,
                          field_mappings, "")

    # Solve the closest facility layer
    arcpy.na.Solve(layer_object)

    # Share the routes from the closest facility analysis as route layers
    arcpy.na.ShareAsRouteLayers(layer_object, "Share closest facility solve result as route layers")

    print("Script completed successfully")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))