Skip to main content

GetNAClassNames

Краткая информация

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

Обсуждение

Слой сетевого анализа состоит из одного или нескольких классов сетевого анализа. Каждый класс сетевого анализа – это слой пространственных объектов или табличное представление, ссылающиеся на класс пространственных объектов или таблицу. Эта функция сопоставляет имена этого класса объектов или таблицы с именами соответствующих слоев объектов или табличных представлений. Имена слоев не являются константами, поскольку могут быть отредактированы конечным пользователем или локализованы в версии 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—Включить все классы из слоя сетевого анализа. Это значение по умолчанию.

  • 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 – Полигональные барьеры

Доставка до двери

  • Orders – Заказы

  • Depots – Станции

  • Routes – Маршруты

  • DepotVisits – Посещения станций

  • Zones – Зоны

  • OrderSpecialties – Специальные требования заказа

  • RouteSpecialties – Специальные требования маршрута

  • Barriers – Точечные барьеры

  • PolylineBarriers – Линейные барьеры

  • PolygonBarriers – Полигональные барьеры

Сбор отходов

  • Stops – Остановки

  • Depots – Станции

  • Routes – Маршруты

  • RouteLines - Линии маршрута

  • Renewals - Обновления

  • RouteRenewals – Обновления маршрутов

  • RenewalVisits - Обновленные визиты

  • Barriers – Точечные барьеры

  • PolylineBarriers – Линейные барьеры

  • PolygonBarriers – Полигональные барьеры

Пример кода

GetNAClassNames, пример (рабочий процесс)

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

Прежние версии:

Функция GetNASublayer может использоваться для извлечения подслоев слоя сетевого анализа. Она появилась в ArcGIS Pro 2.7. В более ранних версиях программного обеспечения лучшим способом извлечения объекта подслоя слоя сетевого анализа было использование метода listLayers объекта сетевого анализа Layer, использующего имя подслоя в качестве подстановочного знака.

# 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:
    # 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))