Доступно с лицензией Network Analyst.
Сводка
Создает слой сетевого анализа Размещение-Распределение и задает его свойства анализа. Слой анализа Размещение-Распределение необходим при выборе определенного количества пунктов обслуживания из набора потенциальных местоположений, например, для оптимального и эффективного распределения спроса между пунктами обслуживания.
Прежние версии:
Это устаревший инструмент. Это функция была передана инструменту Создать слой анализа Размещения-распределения.
Использование
После создания слоя анализа при помощи данного инструмента, вы можете добавлять в него объекты сетевого анализа при помощи инструмента Добавить положения, выполнять анализ при помощи инструмента Расчет и сохранять результаты на диске при помощи инструмента Сохранить в файл слоя.
При использовании данного инструмента в моделях геообработки, если модель запускается как инструмент, то выходной слой сетевого анализа должен быть задан в качестве параметра модели, в противном случае слой не добавится в содержание карты.
Синтаксис
arcpy.na.MakeLocationAllocationLayer(in_network_dataset, out_network_analysis_layer, impedance_attribute, {loc_alloc_from_to}, {loc_alloc_problem_type}, {number_facilities_to_find}, {impedance_cutoff}, {impedance_transformation}, {impedance_parameter}, {target_market_share}, {accumulate_attribute_name}, {UTurn_policy}, {restriction_attribute_name}, {hierarchy}, {output_path_shape}, {default_capacity}, {time_of_day})
Parameter | Объяснение | Тип данных |
in_network_dataset | Набор сетевых данных, для которого выполняется анализ размещения-распределения. | Network Dataset Layer |
out_network_analysis_layer | Имя создаваемого слоя сетевого анализа размещения-распределения. | String |
impedance_attribute | Стоимостный атрибут, который будет использован в качестве импеданса в анализе. | String |
loc_alloc_from_to (Дополнительный) | Задает направление движения между пунктами обслуживания и точками спроса при расчете новой сетевой стоимости.
Этот параметр может влиять на размещение точек проса относительно пунктов обслуживания в сети с односторонними ограничениями и различными импедансами на основе направления движения. Например, пункт обслуживания может располагаться в 15 минутах езды по направлению от точки спроса к пункту, но в 10 минутах езды при движении от пункта обслуживания к точке спроса. | String |
loc_alloc_problem_type (Дополнительный) | Тип решаемой задачи. Выбор типа задачи зависит от вида размещаемого пункта обслуживания. Различные типы пунктов обслуживания имеют различные приоритеты и ограничения.
| String |
number_facilities_to_find (Дополнительный) | Параметр задает количество пунктов обслуживания, которое должен разместить механизм расчета. Пункты обслуживания со значением FacilityTypeсвойства Обязательный, всегда являются частью решения, если обязательных пунктов обслуживания меньше, чем необходимых, дополнительные пункты обслуживания выбираются из кандидатов. Все пункты обслуживания со значением FacilityType в поле Выбрано, заданным до решения, во время решения рассматриваются как кандидаты. В задаче MINIMIZE_FACILITIES этот параметр не учитывается, так как механизм расчета сам определяет количество пунктов обслуживания для обеспечения максимального покрытия. В задаче TARGET_MARKET_SHARE этот параметр переопределяется, так как механизм расчета сам определяет минимальное количество пунктов обслуживания, необходимое для достижения заданной доли рынка. | Long |
impedance_cutoff (Дополнительный) |
Предельное значение импеданса указывает максимальный импеданс, при котором точка спроса назначается пункту обслуживания. Максимальный импеданс измеряется на основе пути с самым низким импедансом, также называемым самым дешевым путем. Если точка спроса выходит за пределы зоны максимального импеданса, объект не рассматривается. Это свойство можно использовать для моделирования максимального расстояния, которые люди готовы преодолеть с целью посещения ваших магазинов или расстояния, на котором пожарная часть может обслуживать вызовы. Точки спроса имеют свойство Cutoff_[Impedance], которое, если ему присвоено значение, имеет приоритет над свойством Impedance Cutoff в слое анализа. Может оказаться, что люди в сельской местности готовы преодолевать расстояние в 10 миль, чтобы попасть к пункту обслуживания, а городские жители согласны преодолевать не более 2 миль. Такое поведение можно моделировать, задавая предельное значение импеданса слоя анализа, равное 10, с одновременным присвоением параметру Cutoff_Miles для точек спроса в пределах города значение 2. | Double |
impedance_transformation (Дополнительный) | Этот параметр задает уравнение для преобразования сетевой стоимости между пунктами обслуживания и точками спроса. Это свойство вместе со свойством Параметр импеданса задает, насколько сильно сетевой импеданс между пунктами обслуживания и точками спроса влияет на выбор пунктов обслуживания механизмом расчета.
Точки спроса имеют свойство ImpedanceTransformation, которое, если для него задано значение, переопределяет свойство Transformation для слоя анализа. Вы можете определить различные преобразования импеданса для городских и сельских жителей. Такое поведение можно моделировать, устанавливая преобразование импеданса для слоя анализа, соответствующее преобразованию для сельских жителей, а преобразование импеданса для точек спроса в городах – соответствующее преобразованию для городских жителей. | String |
impedance_parameter (Дополнительный) | Предоставляет уравнению преобразования импеданса значение для параметра Преобразование импеданса. Если используется преобразование импеданса LINEAR, значение параметра игнорируется. Для преобразований импеданса POWER и EXPONENTIAL значение не должно быть равно нулю. Точки спроса имеют свойство ImpedanceParameter, которое, если ему присвоено значение, имеет приоритет над свойством Параметр импеданса слоя анализа. Может оказаться, что для городских и сельских жителей параметры импеданса будут различными. Такое поведение можно моделировать, устанавливая преобразование импеданса для слоя анализа, соответствующее преобразованию для сельских жителей, а преобразование импеданса для точек спроса в городах – соответствующее преобразованию для городских жителей. | Double |
target_market_share (Дополнительный) | Устанавливает целевую долю рынка в процентах для расчета, если для параметра Тип задачи Размещение-Распределение выбрано TARGET_MARKET_SHARE. Это процент от общего веса спроса, который должны удовлетворить пункты обслуживания решения. Механизм решения выбирает количество пунктов обслуживания, необходимое для обеспечения доли на целевом рынке, заданной этим числовым значением. | Double |
accumulate_attribute_name [accumulate_attribute_name,...] (Дополнительный) | Список атрибутов стоимости, который будет суммироваться во время анализа. Эти атрибуты суммирования служат исключительно для справки; механизм расчета использует только атрибут стоимости, указанный параметром Атрибут импеданса для вычисления маршрута. Для каждого из накопленных атрибутов стоимости к маршрутам, рассчитанным алгоритмом решения, добавляется параметр Total_[Impedance]. | String |
UTurn_policy (Дополнительный) | Определяет правила разворотов, которые будут использоваться на перекрестках. Разрешение разворотов подразумевает возможность развернуться на перекрестке и продолжить движение назад по той же улице. Учитывая, что перекрестки бывают с улицами и тупиками, разные транспортные средства могут разворачиваться на одних перекрестках, но не могут – на других; это зависит от того, является ли данный перекресток пересечением с улицей или с тупиком. Чтобы учесть это, поведение при развороте неявно определяется числом ребер, которые соединяются с соединением, т.е. валентностью соединения. Ниже приведены допустимые значения для данного параметра; каждое из них сопровождается описанием значения в терминах валентности соединения.
Подсказка:Для более точного определения правил разворота можно добавить глобальный параметр задержки на повороте в сетевой атрибут стоимости или настроить его, если он уже существует, а также уделить особое внимание конфигурации обратных поворотов. Кроме того, для сетевых положений можно задать свойство CurbApproach. | String |
restriction_attribute_name [restriction_attribute_name,...] (Дополнительный) | Список атрибутов ограничения, которые будут применяться во время анализа. | String |
hierarchy (Дополнительный) |
Параметр не используется, если в наборе сетевых данных, используемом для выполнения анализа, не задан атрибут иерархии. | Boolean |
output_path_shape (Дополнительный) |
| String |
default_capacity (Дополнительный) | Определяет емкость пунктов обслуживания по умолчанию, если для параметра loc_alloc_problem_type указано значение MAXIMIZE_CAPACITATED_COVERAGE. Для всех остальных типов задач этот параметр игнорируется. Пункты обслуживания имеют свойство Capacity, и если используется не нулевое значение, он имеет приоритет над параметром default_capacity для этого пункта обслуживания. | Double |
time_of_day (Дополнительный) | Задает время и дату отправления. Время отправления может быть от пункта обслуживания или от точки спроса – в зависимости от заданного направления (от точки спроса к пункту обслуживания или наоборот). Если выбран атрибут импеданса на основе трафика, то решение будет создано с учетом заданных динамических условий трафика в указанное время дня. Дату и время можно указать в виде 5/14/2012 10:30 AM. Вместо конкретной даты может быть задан день недели, при помощи следующих условных дат:
| Date |
Производные выходные данные
Name | Объяснение | Тип данных |
output_layer | Только что созданный слой сетевого анализа. | Слой Network Analyst |
Пример кода
Запуск инструмента с использованием только необходимых параметров.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationLayer(network, "StoreLocations", "TravelTime")
Выполните инструмент с использованием всех параметров.
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationLayer(network, "NewStores", "TravelTime",
"DEMAND_TO_FACILITY", "MAXIMIZE_ATTENDANCE",
3, 5, "POWER", 2, "",
["TravelTime", "Meters"], "ALLOW_UTURNS",
["Oneway"], "NO_HIERARCHY",
"STRAIGHT_LINES", "", "9 AM")
В следующем автономном скрипте Python показано, как с помощью инструмента MakeLocationAllocationLayer можно выполнить размещение розничных магазинов с целью обеспечения максимальной прибыльности торговой сети.
# Name: MakeLocationAllocationLayer_Workflow.py
# Description: Choose the store locations that would generate the most business
# for a retail chain. For this scenario we will perform the
# location-Allocation analysis using maximize attendance problem
# type.
# 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/SanFrancisco.gdb"
network = os.path.join(input_gdb, "Transportation", "Streets_ND")
layer_name = "NewStoreLocations"
impedance = "TravelTime"
facilities = os.path.join(input_gdb, "Analysis", "CandidateStores")
required_facility = os.path.join(input_gdb, "Analysis", "ExistingStore")
demand_points = os.path.join(input_gdb, "Analysis", "TractCentroids")
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
#Create a new location-allocation layer. In this case the demand travels to
#the facility. We wish to find 3 potential store locations out of all the
#candidate store locations using the maximize attendance model.
result_object = arcpy.na.MakeLocationAllocationLayer(network, layer_name,
impedance,
"DEMAND_TO_FACILITY",
"MAXIMIZE_ATTENDANCE", 3,
5, "LINEAR")
#Get the layer object from the result object. The location-allocation layer
#can now be referenced using the layer object.
layer_object = result_object.getOutput(0)
#Get the names of all the sublayers within the location-allocation layer.
sublayer_names = arcpy.na.GetNAClassNames(layer_object)
#Stores the layer names that we will use later
facilities_layer_name = sublayer_names["Facilities"]
demand_points_layer_name = sublayer_names["DemandPoints"]
#Load the candidate store locations as facilities using default search
#tolerance and field mappings.
arcpy.na.AddLocations(layer_object, facilities_layer_name, facilities, "",
"", exclude_restricted_elements = "EXCLUDE")
#Load the existing store location as the required facility. Use the field
#mappings to set the facility type to requried. We need to append this
#required facility to existing facilities.
field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
facilities_layer_name)
field_mappings["FacilityType"].defaultValue = 1
arcpy.na.AddLocations(layer_object, facilities_layer_name,
required_facility, field_mappings, "",
append="APPEND",
exclude_restricted_elements="EXCLUDE")
#Load the tract centroids as demand points using default search tolerance
#Use the field mappings to map the Weight property from POP2000 field.
demand_field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
demand_points_layer_name)
demand_field_mappings["Weight"].mappedFieldName = "POP2000"
arcpy.na.AddLocations(layer_object, demand_points_layer_name, demand_points,
demand_field_mappings, "",
exclude_restricted_elements="EXCLUDE")
#Solve the location-allocation layer
arcpy.na.Solve(layer_object)
#Save the solved location-allocation 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: Да