Создать слой Размещение-Распределение (Make Location-Allocation Layer) (Network Analyst)
Резюме
Создает слой сетевого анализа Размещение-Распределение и задает его свойства анализа. Слой анализа Размещение-Распределение необходим при выборе определенного количества пунктов обслуживания из набора потенциальных местоположений, например, для оптимального и эффективного распределения спроса между пунктами обслуживания.
Использование
После создания слоя анализа при помощи данного инструмента, вы можете добавлять в него объекты сетевого анализа при помощи инструмента Добавить положения (Add Locations), выполнять анализ при помощи инструмента Расчет (Solve) и сохранять результаты на диске при помощи инструмента Сохранить в файл слоя (Save To Layer File).
При использовании данного инструмента в моделях геообработки, если модель запускается, как инструмент, то выходной слой сетевого анализа должен быть задан параметром модели, в противном случае слой не добавляется в таблицу содержания ArcMap.
Синтаксис
Параметр | Объяснение | Тип данных |
in_network_dataset |
Набор сетевых данных, для которого выполняется анализ размещения-распределения. | Network Dataset Layer |
out_network_analysis_layer |
Имя создаваемого слоя сетевого анализа размещения-распределения. | String |
impedance_attribute |
Стоимостный атрибут, который будет использован в качестве импеданса в анализе. | String |
loc_alloc_from_to (дополнительно) |
Задает направление движения между пунктами обслуживания и точками спроса при расчете новой сетевой стоимости.
Этот параметр может влиять на размещение точек проса относительно пунктов обслуживания в сети с односторонними ограничениями и различными импедансами на основе направления движения. Например, пункт обслуживания может располагаться в 15 минутах езды по направлению от точки спроса к пункту, но в 10 минутах езды при движении от пункта обслуживания к точке спроса. Пожарные части, как правило, используют параметр От объекта к точке спроса (Facility to Demand), поскольку их интересует, как быстро они смогут доехать от пожарной части к месту вызова. Для магазинов розничной торговли важнее параметр От точки спроса к объекту (Demand to Facility), поскольку их интересует, как быстро покупатели смогут доехать до магазина. | String |
loc_alloc_problem_type (дополнительно) |
Тип решаемой задачи. Выбор типа задачи зависит от вида размещаемого пункта обслуживания. Различные типы пунктов обслуживания имеют различные приоритеты и ограничения.
| String |
number_facilities_to_find (дополнительно) |
Параметр задает количество пунктов обслуживания, которое должен разместить механизм расчета. Объекты, свойству FacilityType которых присвоено значение «обязательный» (Required), всегда являются частью решения, если обязательных объектов меньше, чем необходимых; Дополнительные объекты выбираются из потенциальных. Все объекты, параметру FacilityType которых задано значение «избранный» (Chosen), обрабатываются как потенциальные. В задаче обеспечения минимального количества пунктов обслуживания (MINIMIZE_FACILITIES) этот параметр не учитывается, так как механизм расчета сам определяет количество объектов для максимального покрытия. В задаче обеспечения целевой доли рынка (TARGET_MARKET_SHARE) этот параметр переопределяется, так как механизм расчета сам определяет минимальное количество пунктов обслуживания, необходимое для достижения заданной доли рынка. | Long |
impedance_cutoff (дополнительно) |
Параметр «Предельное значение импеданса» (Impedance Cutoff) указывает максимальный импеданс, при котором точка спроса назначается объекту. Максимальный импеданс измеряется на основе пути с самым низким импедансом, также называемым самым дешевым путем. Если точка спроса выходит за пределы зоны максимального импеданса, объект не рассматривается. Это свойство можно использовать для моделирования максимального расстояния, которые люди готовы преодолеть с целью посещения ваших магазинов или расстояния, на котором пожарная часть может обслуживать вызовы. Точки спроса имеют свойство Cutoff_[Impedance], которое, если ему присвоено значение, переопределяет свойство Предельное значение импеданса (Impedance Cutoff) слоя анализа. Может оказаться, что люди в сельской местности готовы преодолевать расстояние в 10 миль, чтобы попасть к объекту, а городские жители согласны преодолевать не более 2 миль. Такое поведение можно моделировать, задавая предельное значение импеданса слоя анализа, равное 10, с одновременным присвоением параметру Cutoff_Miles для точек спроса в пределах города значение 2. | Double |
impedance_transformation (дополнительно) |
Этот параметр задает уравнение для преобразования сетевой стоимости между объектами и точками спроса. Это свойство вместе со свойством Параметр импеданса (Impedance Parameter) задает, насколько сильно сетевой импеданс между объектами и точками спроса влияет на выбор объектов (пунктов обслуживания) механизмом расчета.
Точки спроса имеют свойство ImpedanceTransformation, которое, если для него задано значение, переопределяет свойство Transformation для слоя анализа. Вы можете определить различные преобразования импеданса для городских и сельских жителей. Такое поведение можно моделировать, устанавливая преобразование импеданса для слоя анализа, соответствующее преобразованию для сельских жителей, а преобразование импеданса для точек спроса в городах - соответствующее преобразованию для городских жителей. | String |
impedance_parameter (дополнительно) |
Предоставляет уравнению преобразования импеданса значение для параметра Преобразование импеданса (Impedance transformation). Если преобразование импеданса линейное, значение параметра игнорируется. Для преобразований POWER и EXPONENTIAL значение не должно быть равно нулю. Точки спроса имеют свойство ImpedanceParameter, которое, если ему присвоено значение, переопределяет свойство Параметр импеданса (Impedance Parameter) слоя анализа. Может оказаться, что для городских и сельских жителей параметры импеданса будут различными. Такое поведение можно моделировать, задавая значение преобразование импеданса слоя анализа, равное значению для сельских жителей, а значение преобразования импеданса для точек спроса в городах, как для городских жителей. | Double |
target_market_share (дополнительно) |
Устанавливает целевую долю рынка в процентах для решения, если параметр Тип задачи Размещение-Распределение (Location-Allocation Problem Type) установлен на TARGET_MARKET_SHARE. Это процент от общего веса спроса, который должны удовлетворить пункты обслуживания решения. Механизм решения выбирает количество пунктов обслуживания, необходимое для обеспечения целевой доли рынка, заданной этим числовым значением. | Double |
accumulate_attribute_name [accumulate_attribute_name,...] (дополнительно) | Список атрибутов стоимости будет суммироваться во время анализа. Эти атрибуты суммирования служат исключительно для справки; механизм расчета использует только атрибут стоимости, указанный параметром Атрибут импеданса (Impedance attribute), для вычисления маршрута. Для каждого суммируемого атрибута стоимости к маршрутам, являющимися выходными для механизма расчета, добавляется свойство Total_[Impedance]. | String |
UTurn_policy (дополнительно) |
Правила разворота на соединениях. При разрешении U-образных разворотов неявно предполагается, что механизм расчета может развернуться на соединении и продолжить движение по той же улице в обратную сторону. Учитывая, что соединения представляют собой пересечения улиц и тупики, различные транспортные средства могут разворачиваться на некоторых соединениях, но не на всех – это зависит от того, является ли соединение перекрестком или тупиком. Для соответствия, параметр правил разворотов в неявном виде указывает количество ребер, участвующих в соединении, что представляет собой валентность соединения. Ниже приведены допустимые значения для данного параметра; каждое из них сопровождается описанием значения в терминах валентности соединения.
Подсказка: При необходимости более точного определения правил разворотов, рассмотрите возможность добавления оценки задержек на универсальных поворотах к атрибуту сетевой стоимости или настройки его параметров, если таковой существует, а также обратите особое внимание на конфигурацию обратных поворотов. Кроме того, ознакомьтесь с заданным свойством CurbApproach для ваших сетевых положений. | String |
restriction_attribute_name [restriction_attribute_name,...] (дополнительно) |
Список атрибутов ограничений, которые будут применены во время анализа. | String |
hierarchy (дополнительно) |
Параметр не используется, если атрибут иерархии не задан для набора сетевых данных, используемого для выполнения анализа. В таких случаях используйте в качестве значения параметра "#". | Boolean |
output_path_shape (дополнительно) |
| String |
default_capacity (дополнительно) |
Определяет емкость пунктов обслуживания по умолчанию, если параметр Тип задачи Размещение-Распределение (Location-Allocation Problem Type) установлен равным MAXIMIZE_CAPACITATED_COVERAGE. Для всех остальных типов задач этот параметр игнорируется. Пункты обслуживания имеют свойство Емкость (Capacity), которое, если не является нулевым для данного пункта обслуживания, используется вместо параметра Емкость по умолчанию (Default Capacity). | Double |
time_of_day (дополнительно) |
Задает время и дату отправления. Время отправления может быть от пункта обслуживания или от точки спроса – в зависимости от заданного направления (от точки спроса к пункту обслуживания или наоборот). Если выбран атрибут импеданса на основе трафика, то решение будет создано с учетом заданных динамических условий трафика в указанное время суток. Дату и время можно указать в виде 5/14/2012 10:30 AM. Вместо конкретной даты может быть задан день недели при помощи следующих условных дат.
| Date |
Пример кода
Выполните инструмент с использованием только необходимых параметров.
import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeLocationAllocationLayer("Transportation/Streets_ND",
"StoreLocations","Minutes")
Выполните инструмент с использованием всех параметров.
import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeLocationAllocationLayer("Transportation/Streets_ND","NewStores",
"Minutes","DEMAND_TO_FACILITY",
"MAXIMIZE_ATTENDANCE",3,5,"POWER",2,"",
["Minutes","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
try:
#Check out the Network Analyst extension license
arcpy.CheckOutExtension("Network")
#Set environment settings
env.workspace = "C:/data/SanFrancisco.gdb"
env.overwriteOutput = True
#Set local variables
inNetworkDataset = "Transportation/Streets_ND"
outNALayerName = "NewStoreLocations"
impedanceAttribute = "TravelTime"
inFacilities = "Analysis/CandidateStores"
requiredFacility = "Analysis/ExistingStore"
inDemandPoints = "Analysis/TractCentroids"
outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
#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.
outNALayer = arcpy.na.MakeLocationAllocationLayer(inNetworkDataset,
outNALayerName,
impedanceAttribute,
"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.
outNALayer = outNALayer.getOutput(0)
#Get the names of all the sublayers within the location-allocation layer.
subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
#Stores the layer names that we will use later
facilitiesLayerName = subLayerNames["Facilities"]
demandPointsLayerName = subLayerNames["DemandPoints"]
#Load the candidate store locations as facilities using default search
#tolerance and field mappings.
arcpy.na.AddLocations(outNALayer, facilitiesLayerName, inFacilities, "", "",
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.
fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, facilitiesLayerName)
fieldMappings["FacilityType"].defaultValue = 1
arcpy.na.AddLocations(outNALayer, facilitiesLayerName, requiredFacility,
fieldMappings, "", 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.
demandFieldMappings = arcpy.na.NAClassFieldMappings(outNALayer,
demandPointsLayerName)
demandFieldMappings["Weight"].mappedFieldName = "POP2000"
arcpy.na.AddLocations(outNALayer,demandPointsLayerName ,inDemandPoints,
demandFieldMappings, "",
exclude_restricted_elements = "EXCLUDE")
#Solve the location-allocation layer
arcpy.na.Solve(outNALayer)
#Save the solved location-allocation layer as a layer file on disk with
#relative paths
arcpy.management.SaveToLayerFile(outNALayer,outLayerFile,"RELATIVE")
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)