Создать слой анализа ближайшего пункта обслуживания (Network Analyst)

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

Создает слой ближайшего пункта обслуживания и задает свойства анализа. Слой ближайшего пункта обслуживания необходим для определения ближайшего к инциденту пункта обслуживания на основе заданного режима передвижения. Слой можно создать, используя локальный набор сетевых данных или сервис, размещенный онлайн или на портале.

Использование

  • После создания слоя анализа при помощи данного инструмента, вы можете добавлять в него объекты сетевого анализа при помощи инструмента Добавить положения, выполнять анализ при помощи инструмента Расчет и сохранять результаты на диске при помощи инструмента Сохранить в файл слоя.

  • При использовании данного инструмента в моделях геообработки, если модель запускается как инструмент, то выходной слой сетевого анализа должен быть задан в качестве параметра модели, в противном случае слой не добавится в содержание карты.

  • В ArcGIS AllSource данные слоев сетевого анализа хранятся на диске в классах пространственных объектов файловой базы геоданных. При создании слоя сетевого анализа в проекте данные слоя будут созданы в новом наборе классов объектов в среде Текущей рабочей области. При создании слоя сетевого анализа в скрипте Python вам необходимо сначала явно задать среду рабочей области для файловой базы геоданных, в которой вы собираетесь хранить данные слоя, используя arcpy.env.workspace = "<path to file gdb>". После создания слоя в файловую базу геоданных будет добавлен новый набор классов объектов, содержащий соответствующие подслои для классов пространственных объектов.

Параметры

ПодписьОписаниеТип данных
Источник сетевых данных

Набор сетевых данных или сервис, для которого выполняется сетевой анализ. Для сервиса используйте URL-адрес портала.

Network Dataset Layer;String
Имя слоя
(Дополнительный)

Имя создаваемого слоя сетевого анализа.

String
Режим передвижения
(Дополнительный)

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

Объект arcpy.na.TravelMode и строка, содержащая действительное представление JSON режима перемещения, также могут использоваться как ввод для параметра.

String
Направление движения
(Дополнительный)

Указывает направление движения между пунктами обслуживания и инцидентами.

Направление движения может повлиять на пункты обслуживания, найденные в случае, если сеть содержит односторонние улицы или импедансы, основанные на направлении движения. Например, поезда от места вызова до конкретного пункта обслуживания может занимать 10 минут, но проезд в обратном направлении – от пункта обслуживания до места вызова – займет 15 минут из-за наличия односторонних улиц или условий трафика.

  • К пунктам обслуживанияНаправление движения от инцидента к пункту обслуживания. Обычно этот параметр используют магазины розничной торговли, т.к. их интересует, насколько быстро покупатели (инциденты) смогут доехать до магазина (пункт обслуживания). Это значение по умолчанию
  • От пунктов обслуживанияНаправление движения от пункта обслуживания к инциденту. Пожарные части, как правило, используют эту настройку, поскольку их интересует, как быстро они смогут доехать от пожарной части к месту вызова.
String
Предельные значения
(Дополнительный)

Импеданс, при котором механизм расчета прекратит поиск пунктов обслуживания для данного инцидента в единицах атрибута импеданса, используемых для Режима передвижения. Это предельное значение может быть перезаписано на основе каждого инцидента путем задания отдельных предельных значений в подслое инцидентов, при установке параметра Направления движения - К пунктам обслуживания либо на основе каждого пункта обслуживания путем задания отдельных предельных значений в подслое пунктов, при установке параметра Направления движения - От пунктов обслуживания. По умолчанию для анализа предельное значение не используется.

Double
Число пунктов обслуживания для поиска
(Дополнительный)

Число ближайших пунктов обслуживания, которые нужно найти для каждого инцидента. Это значение по умолчанию можно изменить, задав значение для свойства TargetFacilityCount в подслое инцидентов. Число пунктов обслуживания по умолчанию для поиска – один.

Long
Время суток
(Дополнительный)

Время и дата начала или окончания маршрутов. Значение обозначает время начала или время окончания маршрута в зависимости от значения параметра Использование времени суток.

Если выбран атрибут импеданса на основе трафика, то решение будет создано с учетом заданных динамических условий трафика в указанное время суток. Дату и время можно указать в виде 5/14/2012 10:30 AM.

Настройте анализ для использования одной из следующих специальных дат для моделирования дня недели или текущей даты вместо конкретной статической даты:

  • Сегодня – 12/30/1899
  • Воскресенье – 12/31/1899
  • Понедельник – 1/1/1900
  • Вторник – 1/2/1900
  • Среда – 1/3/1900
  • Четверг – 1/4/1900
  • Пятница – 1/5/1900
  • Суббота – 1/6/1900

Узнать подробнее о том, как дата и время используется и интерпретируется в сетевом анализе

Date
Часовой пояс
(Дополнительный)

Часовой пояс параметра Время суток.

  • Локальное время в местоположенияхЗначение параметра Время суток относится к часовому поясу, в котором находятся пункты обслуживания или инциденты. Это значение по умолчанию
    • Если для параметра Использование времени суток задано Время начала, а в качестве Направления движенияОт пунктов обслуживания, то это будет часовой пояс пунктов обслуживания.
    • Если для параметра Использование времени суток задано Время начала, а для Направления движения задано К пунктам обслуживания, то это будет часовой пояс инцидентов.
    • Если для параметра Использование времени суток установлено Время окончания, а в качестве Направления движенияОт пунктов обслуживания, то это будет часовой пояс инцидентов.
    • Если для параметра Использование времени суток задано Время окончания, а в качестве Направления движенияК пунктам обслуживания, то это будет часовой пояс пунктов обслуживания.
  • UTCЗначения параметра Время суток указываются во Всемирном координированном времени (UTC). Используйте эту опцию, если хотите найти ближайшие пункты обслуживания для конкретного момента времени, например, текущего, но не знаете, в каком часовом поясе будут находиться пункты обслуживания или инциденты.
String
Использование времени дня
(Дополнительный)

Указывает, является ли значение параметра Время суток временем отправления или временем прибытия для маршрутов или маршрута.

  • Начальное времяЗначение параметра Время суток интерпретируется как время отправления из пункта обслуживания или с места инцидента. Это значение по умолчаниюЕсли выбрана эта опция, то параметр Время суток указывает на то, что метод расчета должен выбрать лучший маршрут с учетом времени отправления.
  • Конечное времяЗначения параметра Время суток интерпретируется как время прибытия в пункт обслуживания или на место инцидента.Эта опция полезна, если необходимо знать время отправления из местоположения, чтобы успеть в пункт назначения ко времени, заданному в параметре Время суток.
String
Линейная геометрия
(Дополнительный)

Определяет тип формы, который будет использоваться для объектов маршрута, получаемых в результате анализа.

Независимо от выбранного типа формы на выходе наилучший маршрут всегда определяется по сетевому импедансу и никогда – по евклидовому расстоянию. Это значит, что различаются только формы маршрута, а не соответствующее им прохождение сети.

  • По сетиПолученные маршруты будут иметь точную форму лежащих в основе источников сети. Выходные данные содержат данные линейных измерений маршрутов. Значения измерений увеличиваются от первой остановки и сохраняют общий импеданс до достижения заданного положения.
  • Без линийДля выходных маршрутов форма не создается.
  • Прямые линииВыходной формой маршрута будет прямая линия, соединяющая остановки.
String
Атрибуты накопления
(Дополнительный)

Список атрибутов стоимости, который будет суммироваться во время анализа. Эти накопленные атрибуты могут использоваться только для сведения; алгоритм решения при выполнении анализа использует только атрибут стоимости в соответствии с используемым режимом передвижения.

Для каждого из накопленных атрибутов стоимости в выходных объектах сетевого анализа добавляется параметрTotal_ [Impedance].

Этот параметр недоступен, если источником сетевых данных является сервис ArcGIS Online или сервис в версии Portal for ArcGIS, не поддерживающей накопление.

String
Построить путевой лист при расчете
(Дополнительный)

Указывает, будет ли создаваться путевой лист.

  • Отмечено – при расчете будет создан пошаговый путевой лист.
  • Не отмечено – во время расчета не будет создаваться пошаговый путевой лист. Это значение по умолчанию

Для анализа, в котором не требуется генерировать пошаговый путевой лист, если этот параметр не установлен, это сократит время, необходимое для анализа.

Boolean
Игнорировать неверные местоположения в течение времени расчета
(Дополнительный)

Указывает, будут ли игнорироваться неверные входные местоположения. Обычно неверными считаются местоположения, которые не обнаружены в сети. Если неверные местоположения игнорируются, механизм расчета пропускает их и выполняет анализ с оставшимися местоположениями.

  • Отмечено - неверные входные местоположения будут игнорироваться, используются только допустимые местоположения. Это значение по умолчанию
  • Не отмечено - все входные местоположения будут использоваться. Неверные входные местоположения приводят к сбою анализа.
Boolean

Производные выходные данные

ПодписьОписаниеТип данных
Слой Network Analyst

Только что созданный слой сетевого анализа.

Network Analyst Layer

arcpy.management.MakeClosestFacilityAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {travel_direction}, {cutoff}, {number_of_facilities_to_find}, {time_of_day}, {time_zone}, {time_of_day_usage}, {line_shape}, {accumulate_attributes}, {generate_directions_on_solve}, {ignore_invalid_locations})
ИмяОписаниеТип данных
network_data_source

Набор сетевых данных или сервис, для которого выполняется сетевой анализ. Для сервиса используйте URL-адрес портала.

Network Dataset Layer;String
layer_name
(Дополнительный)

Имя создаваемого слоя сетевого анализа.

String
travel_mode
(Дополнительный)

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

Объект arcpy.na.TravelMode и строка, содержащая действительное представление JSON режима перемещения, также могут использоваться как ввод для параметра.

String
travel_direction
(Дополнительный)

Указывает направление движения между пунктами обслуживания и инцидентами.

  • TO_FACILITIESНаправление движения от инцидента к пункту обслуживания. Обычно этот параметр используют магазины розничной торговли, т.к. их интересует, насколько быстро покупатели (инциденты) смогут доехать до магазина (пункт обслуживания). Это значение по умолчанию
  • FROM_FACILITIESНаправление движения от пункта обслуживания к инциденту. Пожарные части, как правило, используют эту настройку, поскольку их интересует, как быстро они смогут доехать от пожарной части к месту вызова.

Направление движения может повлиять на пункты обслуживания, найденные в случае, если сеть содержит односторонние улицы или импедансы, основанные на направлении движения. Например, поезда от места вызова до конкретного пункта обслуживания может занимать 10 минут, но проезд в обратном направлении – от пункта обслуживания до места вызова – займет 15 минут из-за наличия односторонних улиц или условий трафика.

String
cutoff
(Дополнительный)

Импеданс, при котором механизм расчета прекратит поиск пунктов обслуживания для данного инцидента в единицах атрибута импеданса, используемых для travel_mode. Это предельное значение может быть перезаписано на основе каждого инцидента путем задания отдельных предельных значений в подслое инцидентов, при значении travel_direction = 'TO_FACILITIES' либо на основе каждого пункта обслуживания путем задания отдельных предельных значений в подслое пунктов, при значении travel_direction = 'FROM_FACILITIES' По умолчанию, для анализа предельное значение не используется.

Double
number_of_facilities_to_find
(Дополнительный)

Число ближайших пунктов обслуживания, которые нужно найти для каждого инцидента. Это значение по умолчанию можно изменить, задав значение для свойства TargetFacilityCount в подслое инцидентов. Число пунктов обслуживания по умолчанию для поиска – один.

Long
time_of_day
(Дополнительный)

Время и дата начала или окончания маршрутов. Интерпретация этого значения зависит от того, обозначает ли time_of_day_usage время начала или время окончания маршрута.

Если выбран атрибут импеданса на основе трафика, то решение будет создано с учетом заданных динамических условий трафика в указанное время суток. Дату и время можно указать в виде 5/14/2012 10:30 AM.

Настройте анализ для использования одной из следующих специальных дат для моделирования дня недели или текущей даты вместо конкретной статической даты:

  • Сегодня – 12/30/1899
  • Воскресенье – 12/31/1899
  • Понедельник – 1/1/1900
  • Вторник – 1/2/1900
  • Среда – 1/3/1900
  • Четверг – 1/4/1900
  • Пятница – 1/5/1900
  • Суббота – 1/6/1900

Узнать подробнее о том, как дата и время используется и интерпретируется в сетевом анализе

Date
time_zone
(Дополнительный)

Указывает часовой пояс параметра time_of_day.

  • LOCAL_TIME_AT_LOCATIONSПараметр time_of_day обращается к часовому поясу, в котором расположены пункты обслуживания или инциденты. Это значение по умолчанию
    • Если time_of_day_usage установлен на START_TIME, а travel_directionFROM_FACILITIES, то это будет часовой пояс пунктов обслуживания.
    • Если time_of_day_usage установлен на START_TIME, а travel_direction - TO_FACILITIES, то это будет часовой пояс инцидентов.
    • Если time_of_day_usage установлен на END_TIME, а travel_direction - FROM_FACILITIES, то это будет часовой пояс инцидентов.
    • Если time_of_day_usage установлен на END_TIME, а travel_directionTO_FACILITIES, то это будет часовой пояс пунктов обслуживания.
  • UTCЗначения параметра time_of_day определяются в формате Всемирного координированного времени (UTC). Используйте эту опцию, если хотите найти ближайшие пункты обслуживания для конкретного момента времени, например, текущего, но не знаете, в каком часовом поясе будут находиться пункты обслуживания или инциденты.
String
time_of_day_usage
(Дополнительный)

Определяет, на что указывает параметр time_of_day – на прибытие или на отправление для маршрутов или маршрута.

  • START_TIMEЗначение параметр time_of_day интерпретируется как время отправления из пункта обслуживания или с места инцидента. Это значение по умолчаниюЕсли выбрана эта опция, то параметр time_of_day указывает на то, что метод расчета должен выбрать лучший маршрут с учетом времени отправления.
  • END_TIMEЗначения параметра time_of_day интерпретируется как время прибытия в пункт обслуживания или на место инцидента.Этот параметр можно использовать для того, чтобы узнать, в какое время необходимо выехать, чтобы прибыть в пункт назначения в момент времени, заданный параметром time_of_day.
String
line_shape
(Дополнительный)

Определяет тип формы, который будет использоваться для объектов маршрута, получаемых в результате анализа.

Независимо от выбранного типа формы на выходе наилучший маршрут всегда определяется по сетевому импедансу и никогда – по евклидовому расстоянию. Это значит, что различаются только формы маршрута, а не соответствующее им прохождение сети.

  • ALONG_NETWORKПолученные маршруты будут иметь точную форму лежащих в основе источников сети. Выходные данные содержат данные линейных измерений маршрутов. Значения измерений увеличиваются от первой остановки и сохраняют общий импеданс до достижения заданного положения.
  • NO_LINESДля выходных маршрутов форма не создается.
  • STRAIGHT_LINESВыходной формой маршрута будет прямая линия, соединяющая остановки.
String
accumulate_attributes
[accumulate_attributes,...]
(Дополнительный)

Список атрибутов стоимости, который будет суммироваться во время анализа. Эти накопленные атрибуты могут использоваться только для сведения; алгоритм решения при выполнении анализа использует только атрибут стоимости в соответствии с используемым режимом передвижения.

Для каждого из накопленных атрибутов стоимости в выходных объектах сетевого анализа добавляется параметрTotal_ [Impedance].

Этот параметр недоступен, если источником сетевых данных является сервис ArcGIS Online или сервис в версии Portal for ArcGIS, не поддерживающей накопление.

String
generate_directions_on_solve
(Дополнительный)

Определяет, будут ли создаваться путевые листы в процессе анализа.

  • DIRECTIONSПри расчете будет создан пошаговый путевой лист.
  • NO_DIRECTIONSПри расчете не будет создаваться пошаговый путевой лист. Это значение по умолчанию

Для анализа, где не требуется создание пошаговых путевых листов, используйте опцию по умолчанию NO_DIRECTIONS, для уменьшения времени выполнения анализа.

Boolean
ignore_invalid_locations
(Дополнительный)

Указывает, будут ли игнорироваться неверные входные местоположения. Обычно неверными считаются местоположения, которые не обнаружены в сети. Если неверные местоположения игнорируются, механизм расчета пропускает их и выполняет анализ с оставшимися местоположениями.

  • SKIPНеверные входные местоположения будут игнорироваться, используются только допустимые местоположения. Это значение по умолчанию
  • HALTВсе входные местоположения будут использоваться. Неверные входные местоположения приводят к сбою анализа.
Boolean

Производные выходные данные

ИмяОписаниеТип данных
out_network_analysis_layer

Только что созданный слой сетевого анализа.

Network Analyst Layer

Пример кода

MakeClosestFacilityAnalysisLayer, пример 1 (окно Python)

Запустите инструмент с использованием только обязательных параметров.

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestFireStations")
MakeClosestFacilityAnalysisLayer, пример 2 (окно Python)

Запустите инструмент с использованием всех параметров.

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestHospitals",
                                "Driving Time", "TO_FACILITIES", 5, 3,
                                "1/1/1900 9:00 AM", "UTC", "START_TIME",
                                "ALONG_NETWORK", ["Meters", "TravelTime"])
MakeClosestFacilityAnalysisLayer, пример 3 (автономный скрипт)

В следующем автономном скрипте Python показано, как с помощью функции MakeClosestFacilityAnalysisLayer можно выполнять поиск ближайшего склада относительно местоположений магазинов.

# Name: MakeClosestFacilityAnalysisLayer_Workflow.py
# Description: Find the closest warehouse from the store locations and save the
#              results to a layer file on disk.
# Requirements: Network Analyst Extension

#Import system modules
import arcpy
from arcpy import env
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
    env.workspace = os.path.join(output_dir, "Output.gdb")
    env.overwriteOutput = True

    #Set local variables
    input_gdb = "C:/Data/Paris.gdb"
    network = os.path.join(input_gdb, "Transportation", "ParisMultimodal_ND")
    layer_name = "ClosestWarehouse"
    travel_mode = "Driving Time"
    facilities = os.path.join(input_gdb, "Analysis", "Warehouses")
    incidents = os.path.join(input_gdb, "Analysis", "Stores")
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    #Create a new closest facility analysis layer. 
    result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(network,
                                    layer_name, travel_mode, "TO_FACILITIES",
                                    number_of_facilities_to_find=1)

    #Get the layer object from the result object. The closest facility layer can
    #now be referenced using the layer object.
    layer_object = result_object.getOutput(0)

    #Get the names of all the sublayers within the closest facility layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    #Stores the layer names that we will use later
    facilities_layer_name = sublayer_names["Facilities"]
    incidents_layer_name = sublayer_names["Incidents"]

    #Load the warehouses as Facilities using the default field mappings and
    #search tolerance
    arcpy.na.AddLocations(layer_object, facilities_layer_name,
                            facilities, "", "")

    #Load the stores as Incidents. Map the Name property from the NOM field
    #using field mappings
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                    incidents_layer_name)
    field_mappings["Name"].mappedFieldName = "NOM"
    arcpy.na.AddLocations(layer_object, incidents_layer_name, incidents,
                          field_mappings, "")

    #Solve the closest facility layer
    arcpy.na.Solve(layer_object)

    #Save the solved closest facility layer as a layer file on disk
    layer_object.saveACopy(output_layer_file)

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