Доступно с лицензией Network Analyst.
Краткая информация
Создает слой сетевого анализа для выбора маршрута транспортного средства и задает его свойства. Задача выбора маршрута транспортного средства используется при оптимизации маршрутов движения транспортных средств.
Использование
После создания слоя анализа при помощи данного инструмента, вы можете добавлять в него объекты сетевого анализа при помощи инструмента Добавить положения, выполнять анализ при помощи инструмента Расчет и сохранять результаты на диске при помощи инструмента Сохранить в файл слоя.
-
При использовании данного инструмента в моделях геообработки, если модель запускается как инструмент, то выходной слой сетевого анализа должен быть задан в качестве параметра модели, в противном случае слой не добавится в содержание карты.
Синтаксис
MakeVehicleRoutingProblemLayer_na (in_network_dataset, out_network_analysis_layer, time_impedance, {distance_impedance}, {time_units}, {distance_units}, {default_date}, {capacity_count}, {time_window_factor}, {excess_transit_factor}, {UTurn_policy}, {restriction_attribute_name}, {hierarchy}, {hierarchy_settings}, {output_path_shape})
Параметр | Объяснение | Тип данных |
in_network_dataset | Набор сетевых данных, для которого выполняется анализ маршрута транспорта. Набор сетевых данных должен содержать стоимостный атрибут на основе времени, поскольку механизм расчета задач выбора маршрута транспортного средства ориентирован на минимизацию времени. | Network Dataset Layer |
out_network_analysis_layer | Имя создаваемого слоя анализа для выбора маршрута транспортного средства. | String |
time_impedance | Атрибут стоимости времени, используемый для определения времени прохождения по элементам сети. Атрибут стоимости времени является обязательным, поскольку механизм расчета задачи выбора маршрута транспорта ориентирован на минимизацию времени. | String |
distance_impedance (Дополнительный) | Атрибут стоимости расстояния, используемый для определения длины пути по элементам сети. Атрибут стоимости расстояния является необязательным. | String |
time_units (Дополнительный) | Единицы времени, используемые в полях времени вложенных слоев и таблиц слоя анализа (классов сетевого анализа). Они не обязательно должны соответствовать единицам атрибута стоимости времени.
| String |
distance_units (Дополнительный) | Единицы расстояния, используемые в полях расстояния вложенных слоев и таблиц слоя анализа (классов сетевого анализа). Они не обязательно должны соответствовать единицам необязательного атрибута стоимости времени.
| String |
default_date (Дополнительный) |
Предполагаемая дата для значений поля времени, которые не привязаны к дате. Если поле времени для объекта заказа, например, TimeWindowStart1, имеет значение только времени, принимается дата по умолчанию. Например, если для заказа значение TimeWindowStart1 задано 9:00 AM, а дата по умолчанию 6 марта 2013 года, то полное значение времени будет иметь вид 9:00 A.M., March 6, 2013. Дата по умолчанию не влияет на значения в поле времени, для которых указана дата. День недели может также быть указан в качестве даты по умолчанию. Используются следующие даты.
Если набор сетевых данных включает данные о движении, результаты анализа могут меняться в зависимости от указанной здесь даты. Например, если маршруты начинаются в 8:00 утра в воскресенье, когда дорога не слишком загруженная, то по сравнению с ними дорога в 8:00 утра в понедельник (во время часа пик) займет больше времени. Кроме того, лучший путь может меняться в зависимости от дорожных условий. | Date |
capacity_count (Дополнительный) |
Число измерений ограничений вместимости, необходимое для описания соответствующих лимитов транспортных средств. В случае доставки заказов у каждого транспортного средства может быть ограниченный вес и объем, которые оно может перевозить одновременно, в зависимости от физических и законодательных ограничений. В этом случае при отслеживании веса и объема заказов можно использовать эти две характеристики вместимости для предотвращения перегрузки транспортных средств. Число характеристик вместимости для этого сценария равно двум (вес и объем). В зависимости от задачи может понадобиться отслеживать разные типы величин вместимости. Характеристики вместимости, которые вводятся в поля вместимости (DeliveryQuantities и PickupQuantities для класса Заказы и Capacities для класса Маршруты), представляют собой разделяемые пробелами строки чисел, которые могут содержать вплоть до максимального количества значений, указанного свойством Счетчик вместимости. Каждое измерение вместимости должно отображаться на той же позиции во всех значениях полей вместимости в одном и том же слое анализа задачи выбора маршрута транспорта. Сами характеристики вместимости не имеют имен, поэтому во избежание случайного перемещения измерений вместимости убедитесь, что разделяемые пробелами списки характеристик вместимости всегда вводятся в одинаковом порядке для всех значений полей вместимости. | Long |
time_window_factor (Дополнительный) | Этот параметр позволяет ранжировать важность учета временных окон без их нарушений. Нарушение временного окна происходит в случае прибытия транспортного средства по вызову, в гараж или на остановку после своего временного окна. Нарушение – это интервал времени между моментом окончания временного окна и моментом прибытия. Решение при выборе маршрута транспорта может меняться в соответствии с выбранным значением для параметра Важность нарушения временных окон (Time Window Violation Importance). В следующем списке перечислены значения и результаты анализа при выборе маршрута.
| String |
excess_transit_factor (Дополнительный) | Этот параметр позволяет ранжировать важность сокращения лишнего времени в пути. Избыточное время в пути – это затрачиваемое сверх необходимого время для перемещения от одного вызова к другому. Лишнее время может возникать по причине перерывов или возвращения в гараж между вызовами. Решение при выборе маршрута транспорта может меняться в соответствии с выбранным значением для параметра Значимость избыточного времени нахождения в пути. В следующем списке перечислены значения и результаты анализа при выборе маршрута.
| String |
UTurn_policy (Дополнительный) | Правила разворота на соединениях. При разрешении U-образных разворотов неявно предполагается, что механизм расчета позволяет разворот на соединении и продолжение движения по той же улице в обратную сторону. Учитывая, что соединения представляют собой пересечения улиц и тупики, различные транспортные средства могут разворачиваться на некоторых соединениях, но не на всех – это зависит от того, является ли соединение перекрестком или тупиком. Для соответствия, параметр правил разворотов в неявном виде указывает количество ребер, участвующих в соединении, что представляет собой валентность соединения. Ниже приведены допустимые значения для данного параметра; каждое из них сопровождается описанием значения в терминах валентности соединения.
Для более точного определения правил разворота можно добавить глобальный параметр задержки на повороте в сетевой атрибут стоимости или настроить его, если он уже существует, а также уделить особое внимание конфигурации обратных поворотов. Кроме того, можно задать для сетевых положений свойство CurbApproach. | String |
restriction_attribute_name [restriction_attribute_name,...] (Дополнительный) | Список атрибутов ограничений, которые будут применены во время анализа. | String |
hierarchy (Дополнительный) |
Параметр не используется, если в наборе сетевых данных, используемом для выполнения анализа, не задан атрибут иерархии. В таких случаях используйте в качестве значения параметра "#". | Boolean |
hierarchy_settings (Дополнительный) | Network Analyst Hierarchy Settings | |
output_path_shape (Дополнительный) |
| String |
Пример кода
MakeVehicleRoutingProblemLayer , пример 1 (окно Python)
Запуск инструмента с использованием только необходимых параметров.
import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeVehicleRoutingProblemLayer("Transportation/Streets_ND",
"DeliveryRoutes","Minutes")
MakeVehicleRoutingProblemLayer , пример 2 (окно Python)
Выполните инструмент с использованием всех параметров.
import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeVehicleRoutingProblemLayer("Transportation/Streets_ND",
"FridayRoutes","Minutes","Meters",
"Minutes","Miles", "1/2/1900", "1",
"High","Medium","ALLOW_DEAD_ENDS_ONLY",
["Oneway"],"USE_HIERARCHY","",
"TRUE_LINES_WITHOUT_MEASURES")
MakeVehicleRoutingProblemLayer , пример 3 (рабочий процесс)
В следующем автономном скрипте Python показано, как с помощью инструмента MakeVehicleRoutingProblemLayer можно создать маршрут для обработки набора заказов.
# Name: MakeVehicleRoutingProblemLayer_Workflow.py
# Description: Find the best routes for a fleet of vehicles, which is operated
# by a distribution company, to deliver goods from a main
# distribution center to a set of grocery stores.
# 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 = "StoreDeliveryRoute"
impedanceAttribute = "TravelTime"
distanceAttribute = "Meters"
timeUntis = "Minutes"
distanceUntis = "Miles"
inOrders = "Analysis/Stores"
inDepots = "Analysis/DistributionCenter"
inRoutes = "RoutesTable"
outLayerFile = "C:/data/output/" + outNALayerName + ".lyr"
#Create a new Vehicle routing problem (VRP) layer. Since the time-based
#attributes such as ServiceTime on orders and CostPerUnitTime on routes is
#recorded in minutes, we use minutes for time_units parameter. As we are
#using cost per unti distance in routes, we have to specify a
#distance attribute. The values for CostPerUnitDistance are in miles, so we
#specify miles for distance units parameter.
outNALayer = arcpy.na.MakeVehicleRoutingProblemLayer(inNetworkDataset, outNALayerName,
impedanceAttribute,
distanceAttribute, timeUntis,
distanceUntis, "", 1,
UTurn_policy = "NO_UTURNS",
output_path_shape = "STRAIGHT_LINES")
#Get the layer object from the result object. The VRP layer can now be
#referenced using the layer object.
outNALayer = outNALayer.getOutput(0)
#Get the names of all the sublayers within the VRP layer.
subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
#Stores the layer names that we will use later
ordersLayerName = subLayerNames["Orders"]
depotsLayerName = subLayerNames["Depots"]
routesLayerName = subLayerNames["Routes"]
#Load the store locations as orders. Using field mappings we map the
#TimeWindowStart1, TimeWindowEnd1 and DeliveryQuantities
#properties for Orders from the fields of store features and assign a value
#of 0 to MaxViolationTime1 property. The Name and ServiceTime properties have
#the correct mapped field names when using the candidate fields from store
#locations feature class.
candidateFields = arcpy.ListFields(inOrders)
orderFieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, ordersLayerName,
False, candidateFields)
orderFieldMappings["TimeWindowStart1"].mappedFieldName = "TimeStart1"
orderFieldMappings["TimeWindowEnd1"].mappedFieldName = "TimeEnd1"
orderFieldMappings["DeliveryQuantities"].mappedFieldName = "Demand"
orderFieldMappings["MaxViolationTime1"].defaultValue = 0
arcpy.na.AddLocations(outNALayer, ordersLayerName, inOrders, orderFieldMappings,"")
#Load the depots from the distribution center features. Using field mappings
#we map the Name properties for Depots from the fields of distribution
#center features and assign a value of 8 AM for TimeWindowStart1 and a value
#of 5PM for TimeWindowEnd2 properties
depotFieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, depotsLayerName)
depotFieldMappings["Name"].mappedFieldName = "Name"
depotFieldMappings["TimeWindowStart1"].defaultValue = "8 AM"
depotFieldMappings["TimeWindowEnd1"].defaultValue = "5 PM"
arcpy.na.AddLocations(outNALayer, depotsLayerName, inDepots, depotFieldMappings, "")
#Load the routes from a table containing information about routes
#In this case, since the fields on the routes table and property names for
#Routes are same, we will just use the default field mappings
arcpy.na.AddLocations(outNALayer, routesLayerName, inRoutes, "", "")
#Solve the VRP layer
arcpy.na.Solve(outNALayer)
#Save the solved VRP 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 occurred on line %i" % tb.tb_lineno
print str(e)
Параметры среды
Информация о лицензиях
- ArcGIS Desktop Basic: Да
- ArcGIS Desktop Standard: Да
- ArcGIS Desktop Advanced: Да