Сводка
Создает слой ближайшего пункта обслуживания и задает свойства анализа. Слой ближайшего пункта обслуживания необходим для определения ближайшего к инциденту пункта обслуживания на основе заданных сетевых затрат.
Прежние версии:
Это устаревший инструмент. Это функция была передана инструменту Создать слой анализа ближайшего пункта обслуживания.
Использование
-
После создания слоя анализа при помощи данного инструмента, вы можете добавлять в него объекты сетевого анализа при помощи инструмента Добавить положения, выполнять анализ при помощи инструмента Расчет и сохранять результаты на диске при помощи инструмента Сохранить в файл слоя.
При использовании данного инструмента в моделях геообработки, если модель запускается как инструмент, то выходной слой сетевого анализа должен быть задан в качестве параметра модели, в противном случае слой не добавится в содержание карты.
Синтаксис
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 (Дополнительный) | Указывает направление движения между пунктами обслуживания и инцидентами.
Этот параметр позволяет найти различные пункты обслуживания в сети с односторонними ограничениями и различными импедансами на основе направления движения. Например, объект может располагаться в 10 минутах езды по направлению от инцидента к пункту обслуживания, но в 15 минутах езды при движении от пункта обслуживания до инцидента из-за другого времени в пути в обратном направлении. | String |
default_cutoff (Дополнительный) | Значение импеданса по умолчанию, при котором следует прекратить поиск пунктов обслуживания для данного инцидента. Значение по умолчанию можно переопределить с помощью ограничения импеданса для инцидентов при поиске маршрутов от инцидентов к пунктам обслуживания или с помощью ограничения импеданса для пунктов обслуживания при поиске маршрутов от пунктов обслуживания к инцидентам. | Double |
default_number_facilities_to_find (Дополнительный) | Количество ближайших пунктов обслуживания для инцидента, которые необходимо найти. Значение по умолчанию можно переопределить путем задания значения свойству TargetFacilityCount для инцидентов. | Long |
accumulate_attribute_name [accumulate_attribute_name,...] (Дополнительный) | Список атрибутов стоимости, который будет суммироваться во время анализа. Эти атрибуты суммирования служат исключительно для справки; механизм расчета использует только атрибут стоимости, указанный параметром Атрибут импеданса для вычисления маршрута. Для каждого из накопленных атрибутов стоимости к маршрутам, рассчитанным алгоритмом решения, добавляется параметр Total_[Impedance]. | String |
UTurn_policy (Дополнительный) | Определяет правила разворотов, которые будут использоваться на перекрестках. Разрешение разворотов подразумевает возможность развернуться на перекрестке и продолжить движение назад по той же улице. Учитывая, что перекрестки бывают с улицами и тупиками, разные транспортные средства могут разворачиваться на одних перекрестках, но не могут – на других; это зависит от того, является ли данный перекресток пересечением с улицей или с тупиком. Чтобы учесть это, поведение при развороте неявно определяется числом ребер, которые соединяются с соединением, т.е. валентностью соединения. Ниже приведены допустимые значения для данного параметра; каждое из них сопровождается описанием значения в терминах валентности соединения.
Для более точного определения правил разворота можно добавить глобальный параметр задержки на повороте в сетевой атрибут стоимости или настроить его, если он уже существует, а также уделить особое внимание конфигурации обратных поворотов. Кроме того, для сетевых положений можно задать свойство CurbApproach. | String |
restriction_attribute_name [restriction_attribute_name,...] (Дополнительный) | Список атрибутов ограничения, которые будут применяться во время анализа. | String |
hierarchy (Дополнительный) |
Параметр не используется, если в наборе сетевых данных, используемом для выполнения анализа, не задан атрибут иерархии. | Boolean |
hierarchy_settings (Дополнительный) | Прежние версии:До версии 10 данный параметр позволял изменять ранги иерархии для анализа, относительно рангов по умолчанию, установленных в наборе сетевых данных. В версии 10 данный параметр больше не поддерживается и должен быть указан в виде пустой строки. Чтобы изменить ранги иерархии для анализа, обновите ранги иерархии по умолчанию в наборе сетевых данных. | Network Analyst Hierarchy Settings |
output_path_shape (Дополнительный) | Определяет тип формы для объектов маршрута, получаемых в результате анализа.
Независимо от выбранного типа выходной формы, наилучший маршрут всегда определяется по сетевому импедансу и никогда – по евклидову расстоянию. Это значит, что различаются только формы маршрута, а не соответствующее им прохождение сети. | String |
time_of_day (Дополнительный) | Указывает время и дату начала или окончания маршрутов. Значение обозначает время начала или время окончания маршрута в зависимости от значения параметра Использование времени суток. Если выбран атрибут импеданса на основе трафика, то решение будет создано с учетом заданных динамических условий трафика в указанное время дня. Дату и время можно указать в виде 5/14/2012 10:30 AM. Вместо конкретной даты может быть задан день недели, при помощи следующих условных дат:
| Date |
time_of_day_usage (Дополнительный) | Определяет, что указывает параметр Время суток – прибытие или отправление.
| String |
Производные выходные данные
Name | Объяснение | Тип данных |
output_layer | Только что созданный слой сетевого анализа. | Слой Network Analyst |
Пример кода
Запуск инструмента с использованием только необходимых параметров.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityLayer(network, "ClosestFireStations", "TravelTime")
Выполните инструмент с использованием всех параметров.
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")
В следующем автономном скрипте 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))
Environments
Информация о лицензиях
- Basic: Да
- Standard: Да
- Advanced: Да