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

Сводка

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

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

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

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

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

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

Синтаксис

arcpy.na.MakeClosestFacilityLayer(in_network_dataset, out_network_analysis_layer, impedance_attribute, {travel_from_to}, {default_cutoff}, {default_number_facilities_to_find}, {accumulate_attribute_name}, {UTurn_policy}, {restriction_attribute_name}, {hierarchy}, {hierarchy_settings}, {output_path_shape}, {time_of_day}, {time_of_day_usage})
ParameterОбъяснениеТип данных
in_network_dataset

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

Network Dataset Layer
out_network_analysis_layer

Имя создаваемого слоя ближайшего пункта обслуживания.

String
impedance_attribute

Стоимостный атрибут, который будет использован в качестве импеданса в анализе.

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

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

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

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

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

Значение импеданса по умолчанию, при котором следует прекратить поиск пунктов обслуживания для данного инцидента. Значение по умолчанию можно переопределить с помощью ограничения импеданса для инцидентов при поиске маршрутов от инцидентов к пунктам обслуживания или с помощью ограничения импеданса для пунктов обслуживания при поиске маршрутов от пунктов обслуживания к инцидентам.

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

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

Long
accumulate_attribute_name
[accumulate_attribute_name,...]
(Дополнительный)

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

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

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

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

  • ALLOW_UTURNSРазвороты разрешены в соединениях с любым количеством смежных ребер. Это значение используется по умолчанию.
  • NO_UTURNSРазвороты запрещены во всех соединениях, вне зависимости от их валентности. Однако, даже если эта опция выбрана, развороты в сетевых положениях по-прежнему разрешены, но вы можете запретить развороты в отдельных сетевых положениях с помощью свойства местоположения CurbApproach.
  • ALLOW_DEAD_ENDS_ONLYРазвороты запрещены во всех соединениях, кроме тех, у которых имеется только одно смежное ребро (тупик).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLYРазвороты запрещены в соединениях с ровно двумя смежными ребрами, но разрешены на перекрестках (в соединениях с тремя смежными ребрами или более) и в тупиках (соединениях с ровно одним смежным ребром). Часто сети имеют избыточные соединения в середине сегмента дороги. Эта опция позволяет запретить развороты транспортных средств в таких местах.

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

String
restriction_attribute_name
[restriction_attribute_name,...]
(Дополнительный)

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

String
hierarchy
(Дополнительный)
  • USE_HIERARCHYПри анализе будет использоваться атрибут иерархии. Применение иерархии приводит при расчете к предпочтению ребер высшего порядка по сравнению с ребрами низшего порядка. Расчеты с иерархией выполняются быстрее, и они могут использоваться для моделирования предпочтений водителя, который скорее выберет для проезда автостраду, нежели местную дорогу – даже если это приведет к увеличению длины пути. Данная опция доступна, если входной набор сетевых данных имеет атрибут иерархии.
  • NO_HIERARCHYПри анализе не будет использоваться атрибут иерархии. Если иерархия не используется, результатом является точный маршрут для набора сетевых данных.

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

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

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

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

Network Analyst Hierarchy Settings
output_path_shape
(Дополнительный)

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

  • TRUE_LINES_WITH_MEASURESПолученные маршруты будут иметь точную форму лежащих в основе источников сети. Выходные данные содержат данные линейных измерений маршрутов. Эти измерения отсчитываются от первой остановки и записывают накапливаемый импеданс для достижения данного положения.
  • TRUE_LINES_WITHOUT_MEASURESПолученные маршруты будут иметь точную форму лежащих в основе источников сети.
  • STRAIGHT_LINESВыходной формой маршрута будет прямая линия, соединяющая каждую пару инцидента и пункта обслуживания.
  • NO_LINESДля выходных маршрутов форма не создается.

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

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

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

Если выбран атрибут импеданса на основе трафика, то решение будет создано с учетом заданных динамических условий трафика в указанное время дня. Дату и время можно указать в виде 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_of_day_usage
(Дополнительный)

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

  • START_TIMEВремя суток интерпретируется как время отправления из пункта обслуживания или с места инцидента.Если выбрана эта опция, то параметр Время дня указывает на то, что метод расчета должен выбрать лучший маршрут с учетом времени отправления.
  • END_TIMEВремя суток интерпретируется как время прибытия в пункт обслуживания или на место инцидента. Этот параметр полезен, если необходимо знать время отправления, чтобы успеть в пункт назначения к определенному времени.
  • NOT_USEDЕсли для параметра Время дня не указано значение, то будет доступна только эта опция. Если для параметра Время дня было указано значение, то эта опция будет недоступна.
String

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

NameОбъяснениеТип данных
output_layer

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

Слой Network Analyst

Пример кода

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

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

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

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

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityLayer(network, "ClosestHospitals", "TravelTime",
                                    "TRAVEL_TO", 5 ,3, ["Meters", "TravelTime"],
                                    "ALLOW_UTURNS", ["Oneway"], "USE_HIERARCHY",
                                    "", "TRUE_LINES_WITH_MEASURES")
MakeClosestFacilityLayer, пример 3 (рабочий процесс)

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

# Name: MakeClosestFacilityLayer_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:
    #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"
    impedance = "DriveTime"
    accumulate_attributes = ["Meters"]
    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. Apart from finding the drive
    #time to the closest warehouse, we also want to find the total distance, so
    #we will accumulate the "Meters" impedance attribute.
    result_object = arcpy.na.MakeClosestFacilityLayer(network, layer_name,
                                                   impedance, "TRAVEL_TO",
                                                   "", 1, accumulate_attributes,
                                                   "NO_UTURNS")

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

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы