Сводка
Создает слой сетевого анализа для выбора маршрута транспортного средства и задает его свойства. Слой анализа задачи выбора маршрута транспортного средства используется при оптимизации маршрутов движения транспортных средств. Слой можно создать, используя локальный набор сетевых данных или сервис, размещенный онлайн или на портале.
Инструменты Создать слой анализа задачи выбора маршрута транспорта и Расчет задачи выбора маршрута транспорта похожи, но предназначены для различных целей. Если вы настраиваете сервис геообработки, используйте инструмент Расчет задачи выбора маршрута транспорта; это упростит процесс. В противном случае используйте инструмент Создать слой анализа задачи выбора маршрута транспорта.
Использование
После создания слоя анализа при помощи данного инструмента, вы можете добавлять в него объекты сетевого анализа при помощи инструмента Добавить положения, выполнять анализ при помощи инструмента Расчет и сохранять результаты на диске при помощи инструмента Сохранить в файл слоя.
При использовании данного инструмента в моделях геообработки, если модель запускается как инструмент, то выходной слой сетевого анализа должен быть задан в качестве параметра модели, в противном случае слой не добавится в содержание карты.
Синтаксис
MakeVehicleRoutingProblemAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {time_units}, {distance_units}, {default_date}, {time_zone_for_time_fields}, {line_shape}, {time_window_factor}, {excess_transit_factor}, {generate_directions_on_solve}, {spatial_clustering})
Parameter | Объяснение | Тип данных |
network_data_source | Набор сетевых данных или сервис, для которого выполняется сетевой анализ. Для сервиса используйте URL-адрес портала. | Network Dataset Layer; String |
layer_name (Дополнительный) | Имя создаваемого слоя анализа для выбора маршрута транспортного средства. | String |
travel_mode (Дополнительный) | Имя режима передвижения для выполнения анализа. Режим передвижения представляет собой набор сетевых настроек, например, ограничений передвижения и правил разворотов, определяющих, как пешеход, легковой или грузовой автомобиль или другое средство транспорта передвигается по сети. Режимы передвижения определяются вашим источником сетевых данных. Объект arcpy.na.TravelMode и строка, содержащая действительное представление JSON режима перемещения, также могут использоваться как ввод для параметра. | String |
time_units (Дополнительный) | Задает единицы времени, используемые в полях времени вложенных слоев и таблиц слоя анализа (классов сетевого анализа). Это значение не обязательно должно соответствовать единицам атрибута стоимости времени. Более подробно о атрибутах стоимости
| String |
distance_units (Дополнительный) | Задает единицы расстояния, используемые в полях расстояния вложенных слоев и таблиц слоя анализа (классов сетевого анализа). Это значение не обязательно должно соответствовать дополнительным единицам атрибута стоимости расстояния. Более подробно о атрибутах стоимости
| String |
default_date (Дополнительный) | Предполагаемая дата для значений поля времени, которые не привязаны к дате. Если поле времени для объекта заказа, например, TimeWindowStart1, имеет значение только времени, принимается дата по умолчанию. Дата по умолчанию не влияет на значения в поле времени, для которых указана дата. | Date |
time_zone_for_time_fields (Дополнительный) | Указывает часовой пояс входных полей даты-времени, поддерживаемых инструментом.
Указание значений даты-времени по времени UTC применяется, когда не известен часовой пояс, в котором расположены заказы или станции, или когда заказы или станции расположены в нескольких часовых поясах, а вы хотите, чтобы все значения даты-времени были синхронизированы. Опция UTC применяется только в случае, когда атрибут часового пояса определяется набором сетевых данных. Иначе все значения даты-времени обрабатываются в соответствии с часовым поясом местоположения. | String |
line_shape (Дополнительный) | Определяет тип формы для объектов маршрута, получаемых в результате анализа.
Независимо от выбранного типа выходной формы, наилучший маршрут всегда определяется по сетевому импедансу и никогда – по евклидову расстоянию. Это значит, что различаются только формы маршрута, а не соответствующее им прохождение сети. | String |
time_window_factor (Дополнительный) | Задает способ ранжирования важности учета временных окон без их нарушений. Нарушение временного окна происходит в случае прибытия транспортного средства по вызову, в гараж или на остановку после своего временного окна. Нарушение – это интервал времени между моментом окончания временного окна и моментом прибытия.
| String |
excess_transit_factor (Дополнительный) | Задает важность сокращения избыточного времени в пути. Избыточное время в пути – это затрачиваемое сверх необходимого время для перемещения от одного вызова к другому. Лишнее время может возникать по причине перерывов или возвращения в гараж между вызовами. Параметр имеет смысл только при использовании пар заказов. Более подробно о парах заказов
| String |
generate_directions_on_solve (Дополнительный) | Указывает, будет ли создаваться путевой лист.
| Boolean |
spatial_clustering (Дополнительный) | Указывает, будет ли использоваться пространственная кластеризация.
| Boolean |
Производные выходные данные
Name | Объяснение | Тип данных |
out_network_analysis_layer | Новый слой сетевого анализа. | Слой Network Analyst |
Пример кода
Запуск инструмента с использованием только необходимых параметров.
import arcpy
arcpy.env.workspace = "C:/Data/SanFrancisco.gdb"
arcpy.na.MakeVehicleRoutingProblemLayer("Transportation/Streets_ND")
Выполните инструмент с использованием всех параметров.
import arcpy
arcpy.env.workspace = "C:/Data/SanFrancisco.gdb"
arcpy.na.MakeVehicleRoutingProblemAnalysisLayer('Streets_ND', 'FridayRoutes',
'Driving Time', 'Minutes',
'Miles', '1/2/2020',
'LOCAL_TIME_AT_LOCATIONS',
'TRUE_LINES_WITHOUT_MEASURES',
'High', 'Medium', 'DIRECTIONS')
В следующем автономном скрипте Python показано, как с помощью инструмента MakeVehicleRoutingProblemAnalysisLayer можно создать маршрут для обработки набора заказов.
# 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
import os
try:
# Check out the Network Analyst license if available.
# Fail if the Network Analyst
# license is not available.
if arcpy.CheckExtension("network") == "Available":
arcpy.CheckOutExtension("network")
else:
raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
# 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 = "StoreDeliveryRoute"
travel_mode = "Driving Time"
time_units = "Minutes"
distance_units = "Miles"
in_orders = os.path.join(input_gdb, "Analysis/Stores")
in_depots = os.path.join(input_gdb, "Analysis/DistributionCenter")
in_routes = os.path.join(input_gdb, "Analysis/Routes")
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
# 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 unit distance in routes, we have to specify a distance
# attribute. The values for CosterPerUnitDistance are in miles, so we
# specify miles for distance units parameter
result_object = arcpy.na.MakeVehicleRoutingProblemAnalysisLayer(network,
layer_name, travel_mode,
time_units, distance_units,
line_shape="STRAIGHT_LINES")
# Get the layer object form the result object. The route layer can now be
# referenced using the layer object.
layer_object = result_object.getOutput(0)
# Get the names of all the sublayers within the VRP layer.
sub_layer_names = arcpy.na.GetNAClassNames(layer_object)
# Store the layer names that we will use later
orders_layer_name = sub_layer_names["Orders"]
depots_layer_name = sub_layer_names["Depots"]
routes_layer_name = sub_layer_names["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.
candidate_fields = arcpy.ListFields(in_orders)
order_field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
orders_layer_name,
False, candidate_fields)
order_field_mappings["TimeWindowStart1"].mappedFieldName = "TimeStart1"
order_field_mappings["TimeWindowEnd1"].mappedFieldName = "TimeEnd1"
order_field_mappings["DeliveryQuantities"].mappedFieldName = "Demand"
order_field_mappings["MaxViolationTime1"].defaultValue = 0
arcpy.na.AddLocations(layer_object, orders_layer_name, in_orders,
order_field_mappings, "")
# 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 5 PM for TimeWindowEnd1 properties
depot_field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
depots_layer_name)
depot_field_mappings["Name"].mappedFieldName = "Name"
depot_field_mappings["TimeWindowStart1"].defaultValue = "8 AM"
depot_field_mappings["TimeWindowEnd1"].defaultValue = "5 PM"
arcpy.na.AddLocations(layer_object, depots_layer_name, in_depots,
depot_field_mappings, "")
# 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 the same, we will just use the default field mappings
arcpy.na.AddLocations(layer_object, routes_layer_name, in_routes, "", "")
# Solve the VRP layer
arcpy.na.Solve(layer_object)
# Save the solved VRP layer as a layer file on disk with relative paths
arcpy.management.SaveToLayerFile(layer_object, output_layer_file, "RELATIVE")
print ("Script Completed Successfully")
except Exception as e:
# If an error occurred, print line number and error message
import traceback
import sys
tb = sys.exc_info()[2]
print ("An error occurred on line %i" % tb.tb_lineno)
print (str(e))
Environments
Информация о лицензиях
- Basic: Да
- Standard: Да
- Advanced: Да