描述
返回指定为参数的网络分析图层中的网络分析类名称字典。字典关键字是网络分析类名称,值是从网络分析图层中引用的网络分析类的图层名称。图层名称在某些地理处理工具(例如添加位置和向分析图层添加字段)中作为输入信息使用。
讨论
网络分析图层由一个或多个网络分析类组成。每个网络分析类都是一个引用了要素类或表的要素图层或表视图。此函数返回这些要素类或表名称与对应的要素图层或表视图名称之间的映射。图层名称不是常量,因为最终用户可以对其进行编辑,也可以将其本地化为 ArcGIS 的其他语言版本。此函数有助于编写跨不同 ArcGIS 语言版本运行的便携脚本代码。字典关键字始终保持不变,可用于获取指定网络分析类的可变图层名称。
网络分析类具有各种特性,具体取决于网络分析图层。一些类用于存储分析期间使用的输入,一些类用于存储从求解分析图层过程中获得的输出。如果类用作网络位置并具有点、线或面或者无形状(换句话说,表)等不同的形状类型,则类还可以有位置字段或位置范围。naclass_edit_type、nalocation_type 和 shape_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) | String |
nalocation_type | 字符串将指定基于其对位置字段的支持而包含在输出目录的网络分析类。此参数值可以是下列任一字符串关键字:
(默认值为 ANY) | String |
shape_type | 字符串将基于形状类型指定包含在输出目录的网络分析类。此参数值可以是下列任一字符串关键字:
(默认值为 ANY) | String |
数据类型 | 说明 | ||||||||||||
Dictionary | 一个字典对象,其关键字是网络分析类名称,值是从网络分析图层中引用的网络分析类的图层名称。 下表显示了每种网络分析图层类型的类名称键。
|
代码示例
该示例展示了如何在消防站周围生成 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))