ArcGIS for Desktop

  • Документация
  • Стоимость
  • Поддержка

  • My Profile
  • Справка
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS for Desktop

Полноценная профессиональная ГИС

ArcGIS for Server

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Стоимость
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

Справка

  • Главная
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительно...

Создание слоя задачи выбора маршрута транспорта

Доступно с лицензией Network Analyst.

  • Краткая информация
  • Использование
  • Синтаксис
  • Пример кода
  • Параметры среды
  • Информация о лицензировании

Краткая информация

Создает слой сетевого анализа для выбора маршрута транспортного средства и задает его свойства. Задача выбора маршрута транспортного средства используется при оптимизации маршрутов движения транспортных средств.

Примечание:

Инструменты Создать слой задачи выбора маршрута транспорта и Расчет задачи выбора маршрута транспорта похожи, но предназначены для различных целей. Используйте инструмент Расчет задачи выбора маршрута транспорта при настройке сервиса геообработки; это упростит процесс настройки. В противном случае используйте инструмент Создать слой задачи выбора маршрута транспорта.

Для создания сервиса геообработки VRP с использованием инструмента Расчет задачи выбора маршрута транспорта вам только необходимо настроить один инструмент и опубликовать его как сервис. Иначе вам необходимо создать модель при помощи Создать слой задачи выбора маршрута транспорта, правильно подключить ее к различным другим инструментам и опубликовать модель для создания сервиса. Можно также использовать сервисы выбора маршрута транспорта ArcGIS Online. Сервисы работают так же, как инструменты геообработки в ArcMap, доступны в других приложениях и включают высококачественные дорожные данные для большей части мира.

Использование

  • После создания слоя анализа при помощи данного инструмента, вы можете добавлять в него объекты сетевого анализа при помощи инструмента Добавить положения, выполнять анализ при помощи инструмента Расчет и сохранять результаты на диске при помощи инструмента Сохранить в файл слоя.

  • При использовании данного инструмента в моделях геообработки, если модель запускается как инструмент, то выходной слой сетевого анализа должен быть задан в качестве параметра модели, в противном случае слой не добавится в содержание карты.

Синтаксис

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
(дополнительно)

Единицы времени, используемые в полях времени вложенных слоев и таблиц слоя анализа (классов сетевого анализа). Они не обязательно должны соответствовать единицам атрибута стоимости времени.

  • Seconds
  • Minutes
  • Hours
  • Days
String
distance_units
(дополнительно)

Единицы расстояния, используемые в полях расстояния вложенных слоев и таблиц слоя анализа (классов сетевого анализа). Они не обязательно должны соответствовать единицам необязательного атрибута стоимости времени.

  • Miles
  • Kilometers
  • Feet
  • Yards
  • Meters
  • Inches
  • Centimeters
  • Millimeters
  • Decimeters
  • NauticalMiles
String
default_date
(дополнительно)

Предполагаемая дата для значений поля времени, которые не привязаны к дате. Если поле времени для объекта заказа, например, TimeWindowStart1, имеет значение только времени, принимается дата по умолчанию. Например, если для заказа значение TimeWindowStart1 задано 9:00 AM, а дата по умолчанию 6 марта 2013 года, то полное значение времени будет иметь вид 9:00 A.M., March 6, 2013. Дата по умолчанию не влияет на значения в поле времени, для которых указана дата.

День недели может также быть указан в качестве даты по умолчанию. Используются следующие даты.

  • Сегодня – 30.12.1899
  • Воскресенье – 31.12.1899
  • Понедельник – 01.01.1900
  • Вторник – 02.01.1900
  • Среда – 03.01.1900
  • Четверг – 04.01.1900
  • Пятница – 05.01.1900
  • Суббота – 06.01.1900
Например, чтобы указать предполагаемую дату для значений поля времени «вторник» (Tuesday), задайте значение параметра 1/2/1900.

Если набор сетевых данных включает данные о движении, результаты анализа могут меняться в зависимости от указанной здесь даты. Например, если маршруты начинаются в 8:00 утра в воскресенье, когда дорога не слишком загруженная, то по сравнению с ними дорога в 8:00 утра в понедельник (во время часа пик) займет больше времени. Кроме того, лучший путь может меняться в зависимости от дорожных условий.

Date
capacity_count
(дополнительно)

Число измерений ограничений вместимости, необходимое для описания соответствующих лимитов транспортных средств. В случае доставки заказов у каждого транспортного средства может быть ограниченный вес и объем, которые оно может перевозить одновременно, в зависимости от физических и законодательных ограничений. В этом случае при отслеживании веса и объема заказов можно использовать эти две характеристики вместимости для предотвращения перегрузки транспортных средств. Число характеристик вместимости для этого сценария равно двум (вес и объем). В зависимости от задачи может понадобиться отслеживать разные типы величин вместимости. Характеристики вместимости, которые вводятся в поля вместимости (DeliveryQuantities и PickupQuantities для класса «Заказы» (Orders) и Capacities для класса «Маршруты» (Routes)), представляют собой разделяемые пробелами строки чисел, которые могут содержать вплоть до максимального количества значений, указанного свойством «Счетчик вместимости» (Capacity Count). Каждое измерение вместимости должно отображаться на той же позиции во всех значениях полей вместимости в одном и том же слое анализа задачи выбора маршрута транспорта. Сами характеристики вместимости не имеют имен, поэтому во избежание случайного перемещения измерений вместимости убедитесь, что разделяемые пробелами списки характеристик вместимости всегда вводятся в одинаковом порядке для всех значений полей вместимости.

Long
time_window_factor
(дополнительно)

Этот параметр позволяет ранжировать важность учета временных окон без их нарушений. Нарушение временного окна происходит в случае прибытия транспортного средства по вызову, в гараж или на остановку после своего временного окна. Нарушение – это интервал времени между моментом окончания временного окна и моментом прибытия.

Решение при выборе маршрута транспорта может меняться в соответствии с выбранным значением для параметра Важность нарушения временных окон (Time Window Violation Importance). В следующем списке перечислены значения и результаты анализа при выборе маршрута.

  • High —Механизм расчета пытается найти решений с минимальным нарушением временных окон путем увеличения общего времени в пути. Выберите данный параметр, если прибытие на заказы вовремя важнее для вас, чем сокращение общей стоимости. Это может быть необходимо, если вы встречаетесь с клиентами по вашей просьбе и не хотите создавать им неудобства в случае опоздания (альтернативным вариантом является использование жесткого временного окна, которое нельзя нарушить).При наличии других ограничений задачи выбора маршрута транспорта может быть невозможно посетить все заказы в пределах выделенных для них временных окон. В этом случае даже настройка «Высокий» (High) может вызывать нарушения.
  • Medium —Это установка по умолчанию. Механизм расчета будет стремиться найти компромиссное решение с одновременным соблюдением временных окон и обеспечением минимальной общей стоимости решения.
  • Low —Механизм расчета пытается найти решений с минимальным временем в пути независимо от временных окон. Выберите данный параметр, если соблюдение временных окон не столь важно, как сокращение общей стоимости. Этот параметр также можно использовать при накоплении отставания в обработке заказов. Для обработки как можно большего количества заказов в день и сокращения невыполненных заказов можно выбрать данный параметр несмотря на то, что клиенты будут испытывать неудобства из-за позднего прибытия транспортных средств.
String
excess_transit_factor
(дополнительно)

Этот параметр позволяет ранжировать важность сокращения лишнего времени в пути. Избыточное время в пути – это затрачиваемое сверх необходимого время для перемещения от одного вызова к другому. Лишнее время может возникать по причине перерывов или возвращения в гараж между вызовами.

Решение при выборе маршрута транспорта может меняться в соответствии с выбранным значением для параметра Значимость избыточного времени нахождения в пути. В следующем списке перечислены значения и результаты анализа при выборе маршрута.

  • High —Механизм расчета пытается найти решение с минимальным лишним временем между вызовами за счет увеличения общего времени в пути. Имеет смысл использовать этот параметр, если вы перевозите людей между парами заказов и хотите сократить их время в пути. Эта опция подходит для такси.
  • Medium —Это установка по умолчанию. Механизм расчета будет стремиться найти компромиссное решение с одновременным сокращением избыточного времени и обеспечением минимальных общих затрат.
  • Low —Механизм расчета пытается найти решение, минимизирующее общие затраты, независимо от избыточного времени в пути. Этот параметр обычно используется курьерской службой. Поскольку курьерская служба перевозит грузы, а не людей, ей не нужно особенно заботиться о времени в пути. Использование данного параметра позволяет курьерской службе обслуживать парные заказы в должной очередности и минимизировать общие затраты.
String
UTurn_policy
(дополнительно)

Правила разворота на соединениях. При разрешении U-образных разворотов неявно предполагается, что механизм расчета позволяет разворот на соединении и продолжение движения по той же улице в обратную сторону. Учитывая, что соединения представляют собой пересечения улиц и тупики, различные транспортные средства могут разворачиваться на некоторых соединениях, но не на всех – это зависит от того, является ли соединение перекрестком или тупиком. Для соответствия, параметр правил разворотов в неявном виде указывает количество ребер, участвующих в соединении, что представляет собой валентность соединения. Ниже приведены допустимые значения для данного параметра; каждое из них сопровождается описанием значения в терминах валентности соединения.

  • ALLOW_UTURNS —Развороты разрешены в соединениях с любым количеством смежных ребер. Это значение используется по умолчанию.
  • NO_UTURNS —Развороты запрещены во всех соединениях, вне зависимости от их валентности. Обратите внимание, что, даже при выборе этой опции развороты в сетевых положениях по-прежнему разрешены. Запретить развороты в отдельных сетевых положениях можно с помощью их свойства CurbApproach.
  • ALLOW_DEAD_ENDS_ONLY —Развороты запрещены во всех соединениях, кроме тех, у которых имеется только одно смежное ребро (тупик).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY —Развороты запрещены в соединениях с ровно двумя смежными ребрами, но разрешены на перекрестках (в соединениях с тремя смежными ребрами или более) и в тупиках (соединениях с ровно одним смежным ребром). Зачастую сети имеют избыточные соединения в середине сегмента дороги. Эта опция позволяет запретить развороты транспортных средств в таких местах.

Для более точного определения правил разворота можно добавить глобальный параметр задержки на повороте в сетевой атрибут стоимости или настроить его, если он уже существует, а также уделить особое внимание конфигурации обратных поворотов. Кроме того, можно задать для сетевых положений свойство CurbApproach.

String
restriction_attribute_name
[restriction_attribute_name,...]
(дополнительно)

Список атрибутов ограничений, которые будут применены во время анализа.

String
hierarchy
(дополнительно)
  • USE_HIERARCHY — Для анализа используется атрибут иерархии. Применение иерархии приводит при расчете к предпочтению ребер высшего порядка по сравнению с ребрами низшего порядка. Расчеты с иерархией выполняются быстрее, и они могут использоваться для моделирования предпочтений водителя, который скорее выберет для проезда автостраду, нежели местную дорогу – даже если это приведет к увеличению длины пути. Данная опция доступна, если входной набор сетевых данных имеет атрибут иерархии.
  • NO_HIERARCHY —Для анализа атрибут иерархии не используется. Расчет без применения иерархии дает точный маршрут для набора сетевых данных.

Параметр не используется, если в наборе сетевых данных, используемом для выполнения анализа, не задан атрибут иерархии. В таких случаях используйте в качестве значения параметра "#".

Boolean
hierarchy_settings
(дополнительно)

Прежние версии:

До версии 10 данный параметр позволял изменять ранги иерархии для анализа, относительно рангов по умолчанию, установленных в наборе сетевых данных. В версии 10 данный параметр больше не поддерживается и должен быть указан в виде пустой строки. Если вам необходимо изменить ранги иерархии для анализа, обновите ранги иерархии по умолчанию в наборе сетевых данных.

Network Analyst Hierarchy Settings
output_path_shape
(дополнительно)
  • TRUE_LINES_WITH_MEASURES —Полученные маршруты будут иметь точную форму лежащих ниже источников сети. Более того, в состав результатов будут входить также измерения маршрута в системе линейных координат. Эти измерения отсчитываются от первой остановки и записывают накапливаемый импеданс для достижения данного положения.
  • TRUE_LINES_WITHOUT_MEASURES —Полученные маршруты будут иметь точную форму лежащих ниже источников сети.
  • STRAIGHT_LINES —Форма итогового маршрута - прямые линии, соединяющие заказы и посещения станции с учетом последовательности маршрута.
  • NO_LINES —Для выходных маршрутов форма не создается. Вы также не сможете создавать направления движения.
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 occured on line %i" % tb.tb_lineno
    print str(e)

Параметры среды

  • Текущая рабочая область (Current Workspace)

Информация о лицензировании

  • ArcGIS for Desktop Basic: Да
  • ArcGIS for Desktop Standard: Да
  • ArcGIS for Desktop Advanced: Да

Связанные темы

  • Анализ задачи выбора маршрута транспорта
  • О сетевом анализе с использованием иерархии
  • Временные окна
  • Обзор набора инструментов «Анализ» (Analysis)
  • Что такое слои сетевого анализа?
  • Расчет задачи выбора маршрута транспорта
Отзыв по этому разделу?

ArcGIS for Desktop

  • На главную
  • Документация
  • Стоимость
  • Поддержка

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог сотрудников
  • Конференция пользователей
  • Саммит разработчиков
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | Конфиденциальность | Правовая информация