GetNAClassNames (arcpy.na)

Резюме

Возвращает словарь имен классов сетевого анализа из слоя сетевого анализа, указанного в качестве аргумента. Ключами словаря являются имена классов сетевого анализа, а значениями – имена слоев, ссылающихся на классы сетевого анализа из слоя сетевого анализа. Имена слоев используются в качестве входных данных в некоторых инструментах геообработки, таких как Добавить положения (Add Locations) и Добавить поле в слой анализа (Add Field To Analysis Layer).

Обсуждение

Слой сетевого анализа состоит из одного или нескольких классов сетевого анализа. Каждый класс сетевого анализа – это слой пространственных объектов или табличное представление, ссылающиеся на класс пространственных объектов или таблицу. Эта функция сопоставляет имена этого класса объектов или таблицы с именами соответствующих слоев объектов или табличных представлений. Имена слоев не являются константами, поскольку могут быть отредактированы конечным пользователем или локализованы в версии ArcGIS на иностранном языке. Эта функция помогает написать переносимый код скрипта для его выполнения в различных языковых версиях ArcGIS. Ключи словаря никогда не меняются и могут использоваться для получения переменного имени слоя для данного класса сетевого анализа.

Классы сетевого анализа имеют различные характеристики, зависящие от слоя сетевого анализа. Некоторые классы используются для хранения входных данных, используемых в процессе анализа, другие используются для хранения выходных данных, полученных в результате решения задачи сетевого анализа в слое. Классы могут содержать также поля местоположения или диапазоны местоположения, если служат для определения сетевых положений и имеют различную геометрию, такую как точки, линии или полигоны, или не имеют геометрии (другими словами, являются таблицами). Аргументы naclass_edit_type, nalocation_type и shape_type можно использовать для применения дополнительных фильтров к списку классов сетевого анализа. Например, список значений параметра Sub Layer в инструменте Добавить местоположения (Add Locations) содержит только те классы сетевого анализа, которые поддерживают режим редактирования ввода, поэтому этот список можно получить, задав INPUT в качестве аргумента naclass_edit_type.

Синтаксис

GetNAClassNames (network_analyst_layer, {naclass_edit_type}, {nalocation_type}, {shape_type})
ПараметрОбъяснениеТип данных
network_analyst_layer

Переменная, ссылающаяся на объект Layer, полученный из слоя сетевого анализа. Она может быть получена из существующих слоев в документе карты, либо путем указания пути к файлу слоя сетевого анализа в качестве аргумента класса Layer. Свойство isNetworkAnalystLayer объекта Layer можно использовать для определения, является ли данный объект 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 (рабочий процесс)

В этом примере показано, как создать полигоны одно-, двух- и трехминутной области обслуживания для пожарных станций и экспортировать области обслуживания в виде класса пространственных объектов в базу геоданных. Он иллюстрирует использование функции GetNAClassNames для получения входных значений для других функций ArcPy.

import arcpy

#Set up the environment
arcpy.env.overwriteOutput = True
arcpy.CheckOutExtension("network")

#Set up variables
networkDataset = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
facilities = "C:/Data/SanFrancisco.gdb/Analysis/FireStations"
outputPolygons = "C:/Data/SanFrancisco.gdb/FireStationServiceAreas"

#Make a new service area layer
serviceAreaLayer = arcpy.na.MakeServiceAreaLayer(networkDataset, "FireStationServiceAreas",
                                                 "TravelTime", "TRAVEL_FROM",
                                                 "1 2 3").getOutput(0)

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

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

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

#Get the polygons sublayer from the service area layer
polygonsSublayer = arcpy.mapping.ListLayers(serviceAreaLayer,
                                            naClasses["SAPolygons"])[0]

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

arcpy.AddMessage("Completed")

Связанные темы

9/11/2013