VehicleRoutingProblem
Краткая информация
Класс ArcPy, предназначенный для выполнения анализа задачи выбора маршрута транспорта.
Обсуждение
Анализ задачи выбора маршрута транспорта находит лучшие маршруты для парка транспортных средств.
Более подробно о решении проблем выбора маршрута транспортного средства
Более подробно о том, как выполнить сетевой анализ с помощью arcpy.nax
Синтаксис
VehicleRoutingProblem(in_network, {version})
| Имя | Объяснение | Тип данных |
|---|---|---|
|
in_network |
The network dataset or service that will be used for the network analysis. The argument can be specified using one of the following:
To use a network dataset, the network must have at least one travel mode. To use a portal URL, you must be signed in to the portal with an account that has routing privileges. Learn how to sign in to a portal in Python Learn more about network analysis using routing services When using ArcGIS Online or an ArcGIS Enterprise portal whose routing services are configured usingArcGIS Online as the Learn more about credit consumption and analysis limits in network analysis |
String |
|
version (Дополнительный) |
Версия схемы, используемой в анализе. Параметр должен быть задан с помощью перечисления Обновленный объект схемы Рекомендуется использовать для всех новых анализов схему версии По умолчанию применяется схема версии |
Object |
Свойства
| Имя | Объяснение | Тип данных |
|---|---|---|
|
allowAutoRelocate (Чтение / Запись) |
Указывает, можно ли автоматически перемещать входные данные с существующими полями сетевого местоположения во время решения, чтобы обеспечить допустимые, маршрутизируемые поля местоположения для анализа. Если значение Даже если значение По умолчанию – Это свойство влияет на расположение всех входных типов. Для изменения этого свойства для отдельных входных типов используйте метод Дополнительные сведения о полях местоположения сети и способе размещения входных данных в сети При задании этого свойства возникнет ошибка, если сетевой источник данных - ArcGIS Online, портал ArcGIS Enterprise, который не поддерживает использование сетевого полей местоположений, или портал, работающий под управлением ArcGIS Enterprise более ранней версии, чем 11.0. |
Boolean |
|
allowSaveLayerFile (Чтение / Запись) |
Указывает, разрешается ли сохранение результата анализа в виде файла слоя с использованием метода saveAsLayerFile получившегося объекта. Значение |
Boolean |
|
allowSaveRouteData (Чтение / Запись) |
Указывает, будут ли создаваться данные маршрута. Значение Значение по умолчанию - Внимание:Даже если для этого свойства установлено значение |
Boolean |
|
defaultDate (Чтение / Запись) |
Дата по умолчанию для значений полей времени, в которых указывается время в течение дня без указания даты. Значение по умолчанию - |
DateTime |
|
directionsDistanceUnits (Чтение / Запись) |
Единицы, которые будут использоваться для расстояния перемещения в выходных пошаговых путевых листах. Свойство возвращается и задается в качестве участвующего в перечислении Примечание:Единицы измерения Этот параметр не применяется и игнорируется, когда в анализе используется схема версии |
Object |
|
directionsLanguage (Чтение / Запись) |
Язык, на котором будет отображаться выходной текст с указаниями пошаговых направлений. Свойство возвращается и устанавливается в виде строки с использованием одного из двух- или пятизначных кодов языков, представляющих поддерживаемые языки путевых листов. Список доступных языков путевых листов можно получить с помощью функции Свойство применимо, только если свойство |
String |
|
directionsStyle (Чтение / Запись) |
Стиль, который будет использоваться для вывода пошаговых инструкций. Свойство возвращается и задается в качестве участвующего в перечислении Значение по умолчанию равно Этот параметр не применяется и игнорируется, когда в анализе используется схема версии |
Object |
|
distanceUnits (Чтение / Запись) |
Единицы, которые будут использоваться для расстояния перемещения в выходных данных анализа. Независимо от единиц измерения в стоимостных атрибутах набора сетевых данных выходные данные будут трансформированы в единицы, заданные в этом свойстве. Возвращается свойство и задается в качестве значения в перечислении Внимание:Единицы измерения |
Object |
|
excessTransitFactor (Чтение / Запись) |
Уровни важности сокращения избыточного времени в пути для пар заказов. Избыточное время в пути – это затрачиваемое сверх необходимого время для перемещения от одного заказа к другому. Избыточное время в пути может быть вызвано перерывами в работе водителя или движением к промежуточным заказам и станциям. Возвращается свойство и задается в качестве участвующего в перечислении Если задано Если задано Если задано |
Object |
|
ignoreInvalidLocations (Чтение / Запись) |
Указывает, будут ли игнорироваться неверные входные местоположения. Значение |
Boolean |
|
networkDataSource (Только для чтения) |
Полный путь каталога к набору сетевых данных или URL сервиса, используемого для анализа. |
String |
|
overrides (Чтение / Запись) |
Примечание:Это свойство только для внутреннего использования. |
String |
|
returnDirections (Чтение / Запись) |
Задает, будут ли создаваться пошаговые направления. Значение |
Boolean |
|
returnStopShapes (Чтение / Запись) |
Определяет, будут ли точечные формы строиться для выходных остановок. Если задано Этот параметр не применяется и игнорируется, когда в анализе используется схема версии Прежние версии:Сервисы маршрутизации, основанные на порталах, работающих под управлением версий ArcGIS Enterprise ранее 10.8, не поддерживают возврат стоп-форм. Метод возвращает исключение |
Boolean |
|
routeShapeType (Чтение / Запись) |
Тип формы, которая будет создана для отображения выходных маршрутов. Маршруты рассчитываются по сети; однако вы можете представить их в виде форм, которые не отражают сетевые пути. Возвращается свойство и задается в качестве значения в перечислении По умолчанию – |
Object |
|
searchQuery (Чтение / Запись) |
Прежние версии:Это свойство было заменено свойством При размещении входных данных в сети это свойство задает запрос для ограничения поиска на поднабор объектов в классе исходных объектов. Эта опция применяется, если вы не хотите находить объекты, которые могут не подойти для сетевого положения. Например, если вы не хотите искать съезды с автомагистралей, можно задать запрос, исключающий их. Значение свойства указывается как список с вложенными списками, где одной записи соответствует источник сети. Каждый внутренний список состоит из двух значений, указывающих имя сетевого источника и выражение SQL, используемое в качестве запроса для этого источника. Пустая строка Например, значение Если сетевой источник не включен в список, он рассматривается, как не имеющий запроса. Значение По умолчанию запрос не используется для любых источников. Дополнительные сведения о способе размещения входных данных в сети Более подробно о синтаксисе SQL см. Справочник по SQL для выражений запросов, применяемых в ArcGIS. При задании этого свойства возникнет ошибка, если сетевой источник данных - портал ArcGIS Online или портал, работающий под управлением ArcGIS Enterprise более ранней версии, чем 11.0. |
List |
|
searchSources (Чтение / Запись) |
При размещении входных данных в сети это свойство задает список используемых сетевых источников и, дополнительно, запрос на ограничение поиска на поднабор объектов в классе исходных объектов. Значение по умолчанию приводит к размещению на всех сетевых источниках, за исключением системных соединений, и замещению соединений, созданных при запуске инструмента Слияние сети. По умолчанию запрос не используется для любых источников. Значение свойства указывается как список с вложенными списками, не больше чем с одной записью на источник сети. Каждый внутренний список состоит из двух значений, указывающих имя сетевого источника и выражение SQL, используемое в качестве запроса для этого источника. Возможными значениями для компонента источника сети являются строковые имена классов объектов ребер и соединений, участвующих в сети. Источники в списке будут использоваться для размещения, источники вне списка - нет. Запросы полезны, если вы не хотите находить объекты, которые могут не подходить для сетевого положения. Например, если вы не хотите искать съезды с автомагистралей, можно задать запрос, исключающий их. Для корректного синтаксиса компонента запроса см. Основы SQL для выражений запроса, применяемых в ArcGIS. Пустая строка Например, значение Это свойство влияет на расположение всех входных типов. Для изменения этого свойства для отдельных входных типов используйте метод Дополнительные сведения о способе размещения входных данных в сети При задании этого свойства возникнет ошибка, если сетевой источник данных - портал ArcGIS Online или портал, работающий под управлением ArcGIS Enterprise более ранней версии, чем 11.0. |
String |
|
searchTolerance (Чтение / Запись) |
Максимальный допуск поиска, который будет использоваться для расположения входных объектов в сети. Свойство возвращается и устанавливается как число двойной точности, и единицы этого значения доступны через свойство Это свойство влияет на расположение всех входных типов. Для изменения этого свойства для отдельных входных типов используйте метод Дополнительные сведения о способе размещения входных данных в сети Прежние версии:При задании этого свойства возникнет ошибка, если сетевой источник данных - портал, работающий под управлением ArcGIS Enterprise более ранней версии, чем 11.0. |
Double |
|
searchToleranceUnits (Чтение / Запись) |
Указывает единицы измерения свойства Это свойство влияет на расположение всех входных типов. Для изменения этого свойства для отдельных входных типов используйте метод Прежние версии:При задании этого свойства возникнет ошибка, если сетевой источник данных - портал, работающий под управлением ArcGIS Enterprise более ранней версии, чем 11.0. |
Object |
|
spatiallyClusterRoutes (Чтение / Запись) |
Определяет, будут ли назначенные заказы пространственно кластеризованы. Если задано По умолчанию – |
Boolean |
|
timeUnits (Чтение / Запись) |
Указывает единицы, которые будут использоваться для времени перемещения в выходных данных анализа. Независимо от единиц измерения в стоимостных атрибутах набора сетевых данных выходные данные будут трансформированы в единицы, заданные в этом свойстве. Возвращается свойство и задается в качестве значения в перечислении |
Object |
|
timeWindowFactor (Чтение / Запись) |
Определяет ранги значения для временных окон. Возвращается свойство и задается в качестве участвующего в перечислении Если задано значение Если задано значение Если задано значение |
Object |
|
timeZoneForTimeFields (Чтение / Запись) |
Указывает, будут ли значения во временных полях входных данных выражены в локальном местном времени входных местоположений или во всемирном координированном времени (UTC). Возвращается свойство и задается в качестве участвующего в перечислении |
Object |
|
travelMode (Чтение / Запись) |
Режим передвижения, который будет использоваться в этом анализе. Анализ Задача выбора маршрута транспорта должен использоваться только с импедансом на основе времени, поэтому доступны только режимы передвижения с импедансом на основе времени. Значение возвращается и устанавливается как объект |
Object |
Методы
addFields(input_type, field_description[field_description,...])
Добавляет пользовательские поля к заданному входному классу. Эти поля будут включены в словарь сопоставления полей, созданный методом fieldMappings, и будут также доступны для использования посредством метода insertCursor.
Более подробно об использовании пользовательских полей во входных данных анализа
| Имя | Объяснение | Тип данных | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
input_type |
The type of input to which the fields will be added. Задайте этот параметр с помощью перечисления |
Object |
||||||||||||||||||||||||
|
field_description[field_description,...] |
The fields and their properties that will be added to the input class. The value will be constructed as a list of lists with each row containing the following items:
Available field types are as follows:
Only the field name and type are required. Use None as a place holder for any of the other parameters to accept the default or if the parameter does not apply to the specified field type. The method will return an error if the field already exists in the table or if any of the field properties are invalid. Прежние версии:The |
TEXT |
count(input_type)
Возвращает количество строк, добавленных к входному типу.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
input_type |
Тип подсчитываемых входных объектов. Задайте этот параметр с помощью перечисления |
Object |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Integer |
Число строк. |
fieldMappings(input_type, {use_location_fields}, {list_candidate_fields[list_candidate_fields,...]})
Создает словарь NAClassFieldMappings, который сопоставляет имена полей входного типа с объектами arcpy.nax.NAClassFieldMap, позволяющими вам сопоставлять поля входных данных свойствам механизма расчета. Словарь может использоваться в качестве входных данных аргумента field_mappings метода load.
Более подробно об использовании сопоставления полей при загрузке входных данных
| Имя | Объяснение | Тип данных |
|---|---|---|
|
input_type |
The type of input for which the field mappings will be returned. Задайте этот параметр с помощью перечисления Learn more about the fields available for each input type when using the |
Object |
|
use_location_fields (Дополнительный) |
Specifies whether network location fields will be included in the returned field mappings dictionary. Network location fields describe the point on the network where an object is located. You can use network location fields to more precisely control how analysis inputs locate on the network and to save time when calling the Learn more about network location fields and how inputs are located on the network When this argument is set to (Значение по умолчанию — False) |
Boolean |
|
list_candidate_fields[list_candidate_fields,...] (Дополнительный) |
Use this parameter to map additional, nondefault fields from the input data to the analysis inputs. For example, if the input feature class contains a field named Specify this parameter as a list of Learn more about best practices for setting up analysis inputs Прежние версии:If the network data source is an ArcGIS Enterprise portal, the method will return an error if any of the fields specified are of a type that is not supported by the portal version. (Значение по умолчанию — None) |
Field |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Dictionary |
Словарь |
fieldNames(input_type, {use_location_fields})
Получает список имен полей, поддерживаемых заданным входным типом.
| Имя | Объяснение | Тип данных |
|---|---|---|
|
input_type |
Тип входных данных, для которых возвращаются поддерживаемые имена полей. Задайте этот параметр с помощью перечисления Learn more about the fields available for each input type when using the |
Object |
|
use_location_fields (Дополнительный) |
Определяет, будут ли поля сетевого местоположения включены в возвращаемый список имён полей. Поля местоположения сети описывают точку сети, в которой расположен объект. Вы можете использовать поля местоположения сети для более точного контроля, как входные данные вашего анализа располагаются в сети в целях сохранения времени при вызове метода Дополнительные сведения о полях местоположения сети и способе размещения входных данных в сети Если значение аргумента - (Значение по умолчанию — False) |
Boolean |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
String |
Список имен полей, поддерживаемых заданным входным типом. |
insertCursor(input_type, field_names[field_names,...], {append})
Задает курсор записи для заданного типа выходных данных. Этот курсор предназначен для добавления строк непосредственно во входных данных.
Подробнее о том, как можно вставить входные данные
| Имя | Объяснение | Тип данных |
|---|---|---|
|
input_type |
The type of input into which the cursor can be used to insert rows. Задайте этот параметр с помощью перечисления |
Object |
|
field_names[field_names,...] |
A list of field names of the input type whose values you want to set when inserting rows using the cursor. You can get the names of the fields supported by an input type using the Learn more about the fields available for each input type when using the In addition to regular fields, you can also set the geometry of the input using one of the following geometry tokens:
The |
String |
|
append (Дополнительный) |
Specifies whether the features being inserted will be appended to the existing set of features for the input type. A value of (Значение по умолчанию — True) |
Boolean |
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Объект |
load(input_type, features, {field_mappings}, {append}, {max_features})
Задает входные объекты для использования в анализе.
Подробнее о том, как можно загружать входные данные
| Имя | Объяснение | Тип данных |
|---|---|---|
|
input_type |
The type of input feature that will be loaded. Задайте этот параметр с помощью перечисления |
Object |
|
features |
The input features that will be loaded. This parameter accepts the following input types:
For layer inputs, only selected features will be loaded. If a layer has a definition query, only the subset of features visible with the definition query will be loaded. The method also honors the Extent geoprocessing environment; only features in the specified extent will be loaded. |
String |
|
field_mappings (Дополнительный) |
An If no field mappings are specified, all fields from the input features that have the same name as the supported fields for the input type will be mapped. Learn more about the fields available for each input type when using the (Значение по умолчанию — None) |
Dictionary |
|
append (Дополнительный) |
Specifies whether the features being loaded will be appended to the existing set of features for the input type. A value of (Значение по умолчанию — True) |
Boolean |
|
max_features (Дополнительный) |
The maximum number of features that can be loaded into the input type. This is useful if you are creating a tool or service and want an error returned if the size of the input exceeds the available resources. The If no value is provided, no limit will be enforced for the count of the input features. (Значение по умолчанию — None) |
Integer |
setLocateSettingsOverrides(input_type, {search_sources[[Source, Expression],...]}, {allow_auto_relocate}, {search_tolerance}, {search_tolerance_units})
Установите параметры поиска для назначенного входного класса, переопределяя параметры поиска, заданные по умолчанию для анализа. Это полезно, если вы хотите использовать разные правила для поиска разных входных данных. Например, в анализе матрицы стоимости Источник-Назначение вы можете использовать поисковый запрос, который применяется только к входным источникам, если этот запрос не должен применяться к входным пунктам назначения и барьерам.
Используя этот метод, вы можете переопределить значения свойств searchSources, allowAutoRelocate, searchTolerance и searchToleranceUnits для назначенного входного класса.
Дополнительные сведения о способе размещения входных данных в сети
| Имя | Объяснение | Тип данных |
|---|---|---|
|
input_type |
The type of input for which to override default locate settings. Задайте этот параметр с помощью перечисления Locate settings do not apply to table-based inputs and inputs that do not locate on the network. For the vehicle routing problem solver, only orders, depots, and barriers locate on the network and are valid input types for this method. The method returns an error if an inapplicable input type is specified. |
Object |
|
search_sources[[Source, Expression],...] (Дополнительный) |
The list of network sources to be used when locating inputs of the designated type on the network, and, optionally, a query to restrict the search to a subset of the features within a source feature class. See the documentation for the Specifying a value for this parameter overrides the default If this parameter is not specified or is set to The method returns an error if this parameter is used and the network data source is ArcGIS Online. |
String |
|
allow_auto_relocate (Дополнительный) |
Specifies whether inputs of the designated type with existing network location fields can be automatically relocated at solve time to ensure valid, routable location fields for the analysis. If the value is Even if the value is Specifying a value for this parameter overrides the default If this parameter is not specified or is set to The method returns an error if the network data source is ArcGIS Online. The method returns an error if the network data source is an ArcGIS Enterprise portal that does not support using network location fields. |
Boolean |
|
search_tolerance (Дополнительный) |
The maximum search distance to use when locating inputs of the designated type on the network. Specifying a value for this parameter overrides the default If this parameter is not specified or is set to The units of this parameter value are set using the This parameter does not apply to line and polygon barriers; the method will return an error if this parameter is specified when the |
Double |
|
search_tolerance_units (Дополнительный) |
The units of the maximum search distance when locating inputs of the designated type of the network. The parameter is specified using a member of the Specifying a value for this parameter overrides the default If this parameter is not specified or is set to The value specified using the This parameter does not apply to line and polygon barriers; the method will return an error if this parameter is specified when the |
Double |
solve()
Выполняет анализ решения задачи выбора маршрута транспорта с помощью свойств, заданных для объекта VehicleRoutingProblem и загруженных входных данных.
Возвращаемое значение
| Тип данных | Объяснение |
|---|---|
|
Object |
Объект |
Пример кода
Выполняет анализ задачи выбора маршрута транспорта.
# An example showing how to perform vehicle routing problem analysis using inputs from feature classes and tables.
import arcpy
nds = "C:/data/NorthAmerica.gdb/Routing/Routing_ND"
nd_layer_name = "Routing_ND"
input_orders = "C:/data/io.gdb/Orders"
input_depots = "C:/data/io.gdb/Depots"
input_routes = "C:/data/io.gdb/Vehicles"
output_stops = "C:/data/io.gdb/AssignedStops"
output_routes = "C:/data/io.gdb/Routes"
output_directions = "C:/data/io.gdb/Directions"
unassigned_stops = "C:/data/io.gdb/UnassignedStops"
# Create a network dataset layer and get the desired travel mode for analysis
arcpy.nax.MakeNetworkDatasetLayer(nds, nd_layer_name)
nd_travel_modes = arcpy.nax.GetTravelModes(nd_layer_name)
travel_mode = nd_travel_modes["Driving Time"]
# Instantiate a VehicleRoutingProblem solver object
vrp = arcpy.nax.VehicleRoutingProblem(nd_layer_name)
# Set properties
vrp.travelMode = travel_mode
vrp.distanceUnits = arcpy.nax.DistanceUnits.Miles
vrp.routeShapeType = arcpy.nax.RouteShapeType.TrueShape
vrp.returnDirections = True
vrp.returnStopShapes = True
# Load inputs
vrp.load(arcpy.nax.VehicleRoutingProblemInputDataType.Orders, input_orders)
vrp.load(arcpy.nax.VehicleRoutingProblemInputDataType.Depots, input_depots)
vrp.load(arcpy.nax.VehicleRoutingProblemInputDataType.Routes, input_routes)
# Solve the analysis
result = vrp.solve()
# Export the results to feature classes
if result.solveSucceeded:
result.export(arcpy.nax.VehicleRoutingProblemOutputDataType.Stops, output_stops)
result.export(arcpy.nax.VehicleRoutingProblemOutputDataType.Routes, output_routes)
result.export(arcpy.nax.VehicleRoutingProblemOutputDataType.Directions, output_directions)
if result.isPartialSolution:
print("Some of the orders were not assigned.")
result.export(arcpy.nax.VehicleRoutingProblemOutputDataType.UnassignedStops, unassigned_stops)
else:
print("Solved failed")
print(result.solverMessages(arcpy.nax.MessageSeverity.All))
Выполните анализ задачи выбора маршрута транспорта, используя версию схемы VehicleRoutingProblemSchemaVersion.Two.
# An example showing how to perform vehicle routing problem analysis using inputs from feature classes and tables.
import arcpy
nds = "C:/data/NorthAmerica.gdb/Routing/Routing_ND"
nd_layer_name = "Routing_ND"
input_orders = "C:/data/io.gdb/Orders"
input_depots = "C:/data/io.gdb/Depots"
input_routes = "C:/data/io.gdb/Vehicles"
output_orders = "C:/data/io.gdb/VisitedOrders"
output_routes = "C:/data/io.gdb/Routes"
output_depots_visits = "C:/data/io.gdb/DepotVisits"
# Create a network dataset layer and get the desired travel mode for analysis
arcpy.nax.MakeNetworkDatasetLayer(nds, nd_layer_name)
nd_travel_modes = arcpy.nax.GetTravelModes(nd_layer_name)
travel_mode = nd_travel_modes["Driving Time"]
# Instantiate a VehicleRoutingProblem solver object using schema version Two
vrp = arcpy.nax.VehicleRoutingProblem(nd_layer_name, arcpy.nax.VehicleRoutingProblemSchemaVersion.Two)
# Set properties
vrp.travelMode = travel_mode
vrp.distanceUnits = arcpy.nax.DistanceUnits.Miles
vrp.routeShapeType = arcpy.nax.RouteShapeType.TrueShape
vrp.returnDirections = True
# Load inputs
vrp.load(arcpy.nax.VehicleRoutingProblemInputDataType2.Orders, input_orders)
vrp.load(arcpy.nax.VehicleRoutingProblemInputDataType2.Depots, input_depots)
vrp.load(arcpy.nax.VehicleRoutingProblemInputDataType2.Routes, input_routes)
# Solve the analysis
result = vrp.solve()
# Export the results to feature classes
if result.solveSucceeded:
result.export(arcpy.nax.VehicleRoutingProblemOutputDataType2.Orders, output_orders)
result.export(arcpy.nax.VehicleRoutingProblemOutputDataType2.Routes, output_routes)
result.export(arcpy.nax.VehicleRoutingProblemOutputDataType2.DepotVisits, output_depots_visits)
else:
print("Solve failed")
print(result.solverMessages(arcpy.nax.MessageSeverity.All))