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 对象。该对象可以源自地图文档中的现有图层或向网络分析图层文件指定目录路径作为 Layer 类的参数。可以使用 Layer 对象上的 isNetworkAnalystLayer 属性来确认某个给定的 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

一个字典对象,其关键字是网络分析类名称,值是从网络分析图层中引用的网络分析类的图层名称。

代码示例

GetNAClassNames 示例(工作流)

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

# 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
from arcpy import env
import os

try:

    #Check out the Network Analyst extension license

    #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/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 = SA_layer_object.listLayers(na_classes["SAPolygons"])[0]
    
    #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))

相关主题