GetNAClassNames

摘要

返回指定为参数的网络分析图层中的网络分析类名称字典。字典关键字是网络分析类名称,值是从网络分析图层中引用的网络分析类的图层名称。图层名称在某些地理处理工具(例如添加位置向分析图层添加字段)中作为输入信息使用。

说明

网络分析图层由一个或多个网络分析类组成。每个网络分析类都是一个引用了要素类或表的要素图层或表视图。此函数返回这些要素类或表名称与对应的要素图层或表视图名称之间的映射。图层名称不是常量,因为最终用户可以对其进行编辑,也可以将其本地化为 ArcGIS 的其他语言版本。此函数有助于编写跨不同 ArcGIS 语言版本运行的便携脚本代码。字典关键字始终保持不变,可用于获取指定网络分析类的可变图层名称。

网络分析类具有各种特性,具体取决于网络分析图层。一些类用于存储分析期间使用的输入,一些类用于存储从求解分析图层过程中获得的输出。如果类用作网络位置并具有点、线或面或者无形状(换句话说,表)等不同的形状类型,则类还可以有位置字段或位置范围。naclass_edit_typenalocation_typeshape_type 参数可用于进一步过滤网络分析类的列表。例如,添加位置工具中的 Sub Layer 参数仅列出支持输入编辑模式的网络分析类,因此可使用 INPUT 作为 naclass_edit_type 参数的值来获得此类列表。

语法

GetNAClassNames (network_analyst_layer, {naclass_edit_type}, {nalocation_type}, {shape_type})
参数说明数据类型
network_analyst_layer

网络分析图层对象或图层名称。

Layer
naclass_edit_type

字符串将指定基于其在网络分析图层中的编辑模式包含在输出目录的网络分析类。此参数值可以是下列任一字符串关键字:

  • ANY包含来自网络分析图层的所有类。这是默认设置。
  • INPUT仅包含那些在网络分析图层中支持输入模式的类。此选项将包含支持输入和输出模式的类。
  • OUTPUT仅包含那些在网络分析图层中支持输出模式的类。此选项将包含支持输入和输出模式的类。

(默认值为 ANY)

String
nalocation_type

字符串将指定基于其对位置字段的支持而包含在输出目录的网络分析类。此参数值可以是下列任一字符串关键字:

  • ANY包含网络分析图层中的类,而无论它们是否支持位置字段。这是默认设置。
  • LOCATION仅包含网络分析图层中支持位置字段或位置范围的那些类。
  • NOT_LOCATION仅包含网络分析图层中不支持位置字段或位置范围的那些类。

(默认值为 ANY)

String
shape_type

字符串将基于形状类型指定包含在输出目录的网络分析类。此参数值可以是下列任一字符串关键字:

  • ANY包含网络分析图层中的所有形状类型类。这是默认设置。
  • POINT仅包含网络分析图层中的点类。
  • LINE仅包含网络分析图层中的线类。
  • POLYGON仅包含网络分析图层中的面类。
  • NULL仅包含网络分析图层中的表。

(默认值为 ANY)

String
返回值
数据类型说明
Dictionary

一个字典对象,其关键字是网络分析类名称,值是从网络分析图层中引用的网络分析类的图层名称。 下表显示了每种网络分析图层类型的类名称键。

最近设施点

  • Facilities - 设施点
  • Incidents - 事件点
  • CFRoutes - 路径
  • Barriers - 点障碍
  • PolylineBarriers - 线障碍
  • PolygonBarriers - 面障碍

位置分配

  • Facilities - 设施点
  • DemandPoints - 请求点
  • LALines - 线
  • Barriers - 点障碍
  • PolylineBarriers - 线障碍
  • PolygonBarriers - 面障碍

起点 - 目的地成本矩阵

  • Origins - 起点
  • Destinations - 目的地
  • ODLines - 线
  • Barriers - 点障碍
  • PolylineBarriers - 线障碍
  • PolygonBarriers - 面障碍

路径

  • Stops - 停靠点
  • Routes - 路径
  • Barriers - 点障碍
  • PolylineBarriers - 线障碍
  • PolygonBarriers - 面障碍

服务区

  • Facilities - 设施点
  • SAPolygons - 面
  • SALines - 线
  • Barriers - 点障碍
  • PolylineBarriers - 线障碍
  • PolygonBarriers - 面障碍

车辆配送问题

  • Orders - 停靠点
  • Depots - 站点
  • Routes - 路径
  • Breaks - 休息点
  • DepotVisits - 站点访问
  • RouteZones - 按区域配送
  • OrderPairs - 停靠点对
  • RouteRenewals - 货物补给点
  • OrderSpecialties - 停靠点特殊要求
  • RouteSpecialties - 路径特殊要求
  • Barriers - 点障碍
  • PolylineBarriers - 线障碍
  • PolygonBarriers - 面障碍

代码示例

GetNAClassNames 示例(工作流)

该示例展示了如何在消防站周围生成 1 分钟、2 分钟和 3 分钟服务区域面,并将这些服务区域导出为地理数据库中的要素类。它说明了如何使用 GetNAClassNames 函数来获取可用作其他 ArcPy 函数输入的值。

旧版本:

GetNASublayer 功能可用于检索网络分析图层的子图层。 它是在 ArcGIS Pro 2.7 中引入的。 在以前的软件版本中,用于检索网络分析图层的子图层对象的最佳方法是使用网络分析 Layer 对象的 listLayers 方法,该方法将子图层名称用作通配符。

# Name: GetNAClassNames_01.py
# Description: Create service areas around fire stations. Use GetNAClassNames
#              to find the names of the Service Area sublayers.
# Requirements: Network Analyst Extension

# Import system modules
import arcpy
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.")

    # Set environment settings
    output_dir = "C:/Data"
    # The NA layer's data will be saved to the workspace specified here
    arcpy.env.workspace = os.path.join(output_dir, "Output.gdb")
    arcpy.env.overwriteOutput = True

    # Set local variables
    input_gdb = "C:/Data/SanFrancisco.gdb"
    network = os.path.join(input_gdb, "Transportation", "Streets_ND")
    facilities = os.path.join(input_gdb, "Analysis", "FireStations")  
    output_polygons = os.path.join(output_dir, "Output.gdb",
                                                    "FireStationServiceAreas")

    # Make a new service area layer
    SA_layer_object = arcpy.na.MakeServiceAreaAnalysisLayer(network,
                                                    "FireStationServiceAreas",
                                                    "Driving Time",
                                                    "FROM_Facilities",
                                                    [1, 2, 3]).getOutput(0)

    # Get the network analysis class names from the service area layer
    na_classes = arcpy.na.GetNAClassNames(SA_layer_object)

    # Load fire stations as facilities
    arcpy.na.AddLocations(SA_layer_object, na_classes["Facilities"], facilities)

    # Solve the service area layer
    arcpy.na.Solve(SA_layer_object)

    # Get the polygons sublayer from the service area layer
    polygonsSublayer = arcpy.na.GetNASublayer(SA_layer_object, "SAPolygons")

    # Export the polygons sublayer as a feature class
    arcpy.management.CopyFeatures(polygonsSublayer, output_polygons)

    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 occured on line %i" % tb.tb_lineno)
    print(str(e))