VehicleRoutingProblem

摘要

此 ArcPy 类用于执行车辆配送问题分析。

语法

 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

When using ArcGIS Online or an ArcGIS Enterprise portal whose routing services are configured usingArcGIS Online as the in_network value, solving the analysis will consume credits and will be subject to certain limits, such as the number of allowed inputs.

Learn more about credit consumption and analysis limits in network analysis

String
version

分析中要使用的方案版本。应使用 VehicleRoutingProblemSchemaVersion 枚举指定此参数。

ArcGIS Pro 2.7 中引入了更新的 VehicleRoutingProblem 对象方案,可提供增强的可用性以及更紧密地匹配 ArcGIS Pro 2.6 中引入的车辆配送图层方案。

如果可能,建议所有新分析均使用方案版本 Two。但是,门户 URL 网络数据源目前不支持方案版本 Two。如果分析将使用门户 URL 作为网络数据源,或者脚本需要与 ArcGIS Pro 2.7 之前的软件版本兼容,请使用方案版本 One

默认值为方案版本 One

Object

属性

属性说明数据类型
allowAutoRelocate
(可读写)

指定是否可以在求解时自动重定位具有现有网络位置字段的输入,以确保分析的位置字段有效并且可路由。 如果值为 True,则位于限制网络元素上的点和受障碍影响的点将重定位至最近的可路由位置。 如果值为 False,则网络位置字段将按原样使用(即使点无法访问),并且这可能会导致求解失败。

即使值为 False,没有位置字段或位置字段不完整的输入也会在求解时定位。

默认为 True

此属性会影响所有输入类型的定位。 要更改单个输入类型的此属性,请使用 setLocateSettingsOverrides 方法。

了解有关网络位置字段以及如何在网络中定位输入的详细信息

如果网络数据源是 ArcGIS Online、不支持使用网络位置字段的 ArcGIS Enterprise 门户或运行版本低于 11.0 的 ArcGIS Enterprise 的门户,则设置此属性会返回错误。

Boolean
allowSaveLayerFile
(可读写)

指定是否允许在结果对象上使用 saveAsLayerFile 方法将分析结果另存为图层文件。 值为 True 表明可以保存图层文件。 值为 False 表明无法保存图层文件。 如果分析引用网络数据集,则默认设置为 True;如果其引用门户服务,则为 False。 如果分析引用门户服务,则保存图层文件可能会降低分析速度。

Boolean
allowSaveRouteData
(可读写)

指定是否将生成路径数据。 True 的值表示求解分析时将生成路径数据。 False 的值表示将不生成路径数据。 使用结果对象上的 saveRouteData 方法将路线数据保存为 .zip 文件。 生成路径数据可能会降低分析速度。

如果分析引用网络数据集,则默认设置为 True;如果其引用门户服务,则为 False

警告:
即使 allowSaveRouteData 属性设置为 True,如果 returnDirectionsFalse,且 routeShapeType 属性设置为 RouteShapeType.NoLineRouteShapeType.StraightLinesaveRouteData 方法也可能失败。

Boolean
defaultDate
(可读写)

指定一天中的时间(不包含日期)的时间字段值的默认日期。 默认值为 None,其表示所有日期时间字段都包含日期和时间值。

DateTime
directionsDistanceUnits
(可读写)

报告输出转弯方向的行驶距离时要使用的单位。 将返回该属性并将其设置为 DistanceUnits 枚举的成员,且仅在 returnDirections 属性为 True 时可用。 默认值是分析时使用的出行模式中距离属性的单位。

当分析使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,该参数不适用并将忽略该参数。

Object
directionsLanguage
(可读写)

将显示输出转弯方向文本的语言。 返回该属性并将表示受支持方向语言的两个或五个字符的语言代码之一设置为字符串。 可从 arcpy.nax.ListDirectionsLanguages 函数中获得可用的方向语言列表。 默认值为 en(英语)或当前激活的语言包的语言。 此属性仅在 returnDirections 属性为 True 时可用。

String
directionsStyle
(可读写)

要用于输出转弯方向文本的样式。 将返回该属性并将其设置为 DirectionsStyle 枚举的成员,且仅在 returnDirections 属性为 True 时可用。

默认值为 Desktop

当分析使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,该参数不适用并将忽略该参数。

Object
distanceUnits
(可读写)

报告分析输出中的行驶距离时要使用的单位。 无论网络数据集中成本属性的单位如何,输出都将转换为此属性中设置的单位并以该单位进行报告。 将返回该属性并将其设置为 DistanceUnits 枚举的成员。 默认为 DistanceUnits.Kilometers

Object
excessTransitFactor
(可读写)

对减少停靠点对的额外行驶时间的重要性作出评价。 额外行驶时间是指超出停靠点对间直线行驶所需时间的数量。 额外时间可能由司机休息或前往中间停靠点和站点造成。

将返回该属性并将其设置为 Importance 枚举的成员。 默认为 Importance.Medium

当设置为 Importance.Low 时,求解器将确定尽可能降低总体解决方案成本的解决方案,无论行驶时间是否超长。 此设置通常应用于快递服务。 由于快递运输的是包裹而不是人员,因此无需担心行驶时间。 使用此设置时,快递可以按照最适合的顺序为停靠点对提供服务,并且总体解决方案成本最低。

当设置为 Importance.Medium 时,求解器将确定权衡了缩短超长行驶时间和降低总体解决方案成本的解决方案。

当设置为 Importance.High 时,求解器将确定成对停靠点之间超长行驶时间最少的解决方案,但会增加总体行驶成本。 在成对停靠点之间运输人员时,可通过此设置缩短行驶时间。 这是出租车服务的特征。

Object
ignoreInvalidLocations
(可读写)

指定是否忽略无效的输入位置。 值为 True 表示将忽略无效的输入位置,仅使用有效位置即可成功进行分析。 值为 False 表示不会忽略无效位置,从而导致分析失败。

Boolean
networkDataSource
(只读)

网络数据集的完整目录路径或用于分析的服务的 URL。

String
overrides
(可读写)

注:

此属性仅限内部使用。

String
returnDirections
(可读写)

指定是否将生成转弯方向。 值为 True 表明在求解分析时将生成转弯方向。 值为 False 表明不会生成转弯方向。 生成方向可能会降低分析速度。 默认值为 False

Boolean
returnStopShapes
(可读写)

指定是否要为输出停靠点生成点形状。 设置为 True 时,将为输出停靠点生成点形状。 当设置为 False 时,输出停靠点将以表格式返回。 默认为 False

当分析使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,该参数不适用并将忽略该参数。

旧版本:

如果在路径服务基于的门户上运行的 ArcGIS Enterprise 版本低于 10.8,则这些服务不支持返回停靠点形状。 如果将 returnStopShapes 设置为 True 并且该服务不支持此选项,则此方法将返回 ValueError 异常。

Boolean
routeShapeType
(可读写)

为表示输出路径而生成的形状类型。 路径沿网络计算;但是,您可以使用不反映网络路径的形状来表示它们。 将返回该属性并将其设置为 RouteShapeType 枚举的成员。

默认为 RouteShapeType.TrueShapeWithMeasures

Object
searchQuery
(可读写)

旧版本:
此属性已被 searchSources 属性取代,后者是在 ArcGIS Pro 3.0 中引入的。 searchQuery 属性将继续用于保持与现有脚本的向后兼容性,但是建议新脚本改用 searchSources 属性。

当在网络中定位输入时,此属性指定查询以将搜索范围限制在源要素类的要素子集内。 这在不想查找可能不适合网络位置的要素时很有用。 例如,如果您不想定位在高速公路坡道上,则可定义一个查询将其排除。

该参数值被指定为具有嵌套列表的列表,其中每个网络源具有一个条目。 每个内部列表由两个值组成,分别表示网络源的名称和用作该源的查询的 SQL 表达式。 空字符串 "" 表示不查询特定源。

例如,值 [["Streets", "ROAD_CLASS <> 3"], ["Streets_ND_Junctions", ""]] 指定了 Streets 源要素类的 SQL 表达式,而没有指定 Streets_ND_Junctions 源要素类的表达式。

如果列表中不包含网络源,则将其解释为无查询。 值 [["Streets", "ROAD_CLASS <> 3"]] 等同于 [["Streets", "ROAD_CLASS <> 3"], ["Streets_ND_Junctions", ""]]

默认情况下,不对任何源使用查询。

了解有关在网络中定位输入的详细信息

有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考

如果网络数据源是 ArcGIS Online 或运行版本低于 11.0 的 ArcGIS Enterprise 的门户,则设置此属性会返回错误。

List
searchSources
(可读写)

当在网络中定位输入时,此属性指定要使用的网络源列表和(可选)查询以将搜索限制为源要素类内的一部分要素。

默认值是在除系统交汇点之外的所有网络源上定位,并覆盖通过运行融合网络工具创建的交汇点。 默认情况下,不对任何源使用查询。

该参数值被指定为具有嵌套列表的列表,每个网络源最多具有一个条目。 每个内部列表由两个值组成,分别表示网络源的名称和用作该源的查询的 SQL 表达式。

网络源组件的可能值为参与网络的边源和交汇点源的字符串要素类名称。 列表中的源将用于定位,而不在列表中的源将不会用于定位。

查询在不想查找可能不适合网络位置的要素时很有用。 例如,如果您不想定位在高速公路坡道上,则可定义一个查询将其排除。 对于查询组件,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考获取正确表达式。 空字符串 "" 表示不查询特定源。

例如,值 [["Streets", "ROAD_CLASS <> 3"], ["Streets_ND_Junctions", ""]] 指定输入可以位于 StreetsStreets_ND_Junctions 源上。 Streets 源要素类的 SQL 表达式禁止输入位于 ROAD_CLASS 字段的值为 3 的街道上。 不会将查询用于 Streets_ND_Junctions 源要素类。 值 [["Streets", "ROAD_CLASS <> 3"]] 表示应仅将 Streets 源要素类用于定位,不应使用 Streets_ND_Junctions。 此外,还会将查询应用于 Streets

此属性会影响所有输入类型的定位。 要更改单个输入类型的此属性,请使用 setLocateSettingsOverrides 方法。

了解有关在网络中定位输入的详细信息

如果网络数据源是 ArcGIS Online 或运行版本低于 11.0 的 ArcGIS Enterprise 的门户,则设置此属性会返回错误。

String
searchTolerance
(可读写)

在网络上定位输入要素将使用的最大搜索距离。 返回该属性并将其设置为双精度,然后通过 searchToleranceUnits 属性访问该值的单位。 默认值为 5000。

此属性会影响所有输入类型的定位。 要更改单个输入类型的此属性,请使用 setLocateSettingsOverrides 方法。

了解有关在网络中定位输入的详细信息

旧版本:

如果网络数据源是运行版本低于 11.0 的 ArcGIS EnterpriseArcGIS Enterprise 的门户,则设置此属性会返回错误。

Double
searchToleranceUnits
(可读写)

searchTolerance 属性的单位。 将返回该属性并将其设置为 DistanceUnits 枚举的成员。 默认为 DistanceUnits.Meters

此属性会影响所有输入类型的定位。 要更改单个输入类型的此属性,请使用 setLocateSettingsOverrides 方法。

旧版本:

如果网络数据源是运行版本低于 11.0 的 ArcGIS EnterpriseArcGIS Enterprise 的门户,则设置此属性会返回错误。

Object
spatiallyClusterRoutes
(可读写)

指定是否将对分配的停靠点进行空间聚类。 当设置为 True 时,分配给路径的停靠点将在空间上聚类。 对停靠点进行聚类往往在较小区域保持路径,并减小路径线彼此相交的频率;然而,聚类可能会增加总行程时间。 当设置为 False 时,求解程序不会对空间聚类停靠点进行优先排序,并且路径可能会相交。 如果指定了路径区,使用此选项。

默认为 True

Boolean
timeUnits
(可读写)

报告分析输出中的行驶时间时要使用的单位。 无论网络数据集中成本属性的单位如何,输出都将转换为使用在此属性中设置的单位并以该单位进行报告。 将返回该属性并将其设置为 TimeUnits 枚举的成员。 默认为 TimeUnits.Minutes

Object
timeWindowFactor
(可读写)

对支持时间窗的重要性作出评价。

将返回该属性并将其设置为 Importance 枚举的成员。 默认为 Importance.Medium

当设置为 Importance.Low 时,求解程序将提高减少驾驶时间的重要性,降低按时到达停靠点的重要性。 如果积压的服务请求逐渐增多,则可以使用此设置。 如果为了在当日内为更多的停靠点提供服务并减少积压的订单数,则可选择此设置,即使迟到可能会为客户带来不便。

当设置为 Importance.Medium 时,求解程序将平衡减少驾驶时间的重要性与在时间窗内到达的重要性。

当设置为 Importance.High 时,求解程序将提高按时到达停靠点的重要性,降低减少驾驶时间的重要性。 进行时间紧迫的配送或注重客户服务的组织将使用此设置。

Object
timeZoneForTimeFields
(可读写)

指示输入数据中的时间字段是否解释为输入位置的本地时间或协调世界时间 (UTC)。 将返回该属性并将其设置为 TimeZoneUsage 枚举的成员。 默认为 TimeZoneUsage.LocalTimeAtLocations

Object
travelMode
(可读写)

要用于分析的出行模式。

车辆配送分析必须使用基于时间的阻抗,以仅启用基于时间的阻抗出行模式。

将返回该值并将其设置为 arcpy.nax.TravelMode 对象,但也可以使用出行模式的字符串名称或包含出行模式的有效 JSON 表示的字符串进行设置。 默认为用于分析的网络数据集上定义的默认出行模式。

了解有关出行模式的详细信息

Object

方法概述

方法说明
addFields (input_type, field_description)

将自定义字段添加到指定的输入类。 这些字段将包含在通过 fieldMappings 方法创建的字段映射字典中,也可与 insertCursor 方法配合使用。

详细了解如何在分析输入中使用自定义字段

count (input_type)

返回为输入类型添加的行数。

fieldMappings (input_type, {use_location_fields}, {list_candidate_fields})

生成将输入类型名称字段映射到 arcpy.nax.NAClassFieldMap 对象的 NAClassFieldMappings 字典,以允许您将字段从输入数据映射到求解程序属性。 字典可用作 load 方法的 field_mappings 参数的输入。

了解有关如何在加载输入时使用字段映射的详细信息

fieldNames (input_type, {use_location_fields})

获取指定输入类型支持的字段名称列表。

insertCursor (input_type, field_names, {append})

在指定的输入类型上建立写入光标。 此游标可用于将行直接添加到输入。

详细了解如何插入输入

load (input_type, features, {field_mappings}, {append}, {max_features})

设置用于分析的输入要素。

详细了解如何加载输入

setLocateSettingsOverrides (input_type, {search_sources}, {allow_auto_relocate}, {search_tolerance}, {search_tolerance_units})

为指定输入类设置定位设置,并覆盖为分析指定的默认定位设置。 如果想要使用不同的规则定位不同的输入,这非常有用。 例如,在 OD 成本矩阵分析中,如果搜索查询不需要应用于输入目标和障碍,则可以使用仅应用于输入源的搜索查询。

可使用此方法覆盖指定输入类的 searchSourcesallowAutoRelocatesearchTolerancesearchToleranceUnits 属性值。

了解有关在网络中定位输入的详细信息

solve ()

使用在 VehicleRoutingProblem 对象上设置的属性和已加载的输入执行车辆配送问题分析。

方法

addFields (input_type, field_description)
参数说明数据类型
input_type

The type of input to which the fields will be added.

在使用 VehicleRoutingProblemSchemaVersion.One 方案版本时,使用 VehicleRoutingProblemInputDataType 枚举设置此参数;在使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,使用 VehicleRoutingProblemInputDataType2 枚举设置此参数。

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:

  • Field name—The name of the field that will be added to the input class.
  • Field type—The type of the new field.
  • Field alias—The alternate display name for the field name.
  • Field length—The length of the field being added. This sets the maximum number of allowable characters for each record of the field. This option is only applicable to fields of type text. The default length is 255.
  • Default value—The default value of the field.

Available field types are as follows:

Field typeDescription

TEXT

此字段类型将为文本类型。 文本字段支持字符串。

FLOAT

此字段类型将为浮点型。 浮点型字段支持介于 -3.4E38 和 1.2E38 之间的小数。

DOUBLE

此字段类型将为双精度型。 双精度型字段支持介于 -2.2E308 和 1.8E308 之间的小数。

SHORT

此字段类型将为短整型。 短整型字段支持介于 -32,768 和 32,767 之间的整数。

LONG

此字段类型将为长整型。 长整型字段支持介于 -2,147,483,648 和 2,147,483,647 之间的整数。

DATE

此字段类型将为日期类型。 日期字段支持日期和时间值。

GUID

此字段类型将为 GUID。 GUID 字段可存储注册表样式的字符串,该字符串包含用大括号括起来的 36 个字符。

BIGINTEGER

此字段类型将为大整型。 大整型字段支持介于 -(253) 和 253 之间的整数。

TIMEONLY

此字段类型仅限时间。 仅时间字段支持不带日期值的时间值。

DATEONLY

此字段类型仅限日期。 仅日期字段支持不带时间值的日期值。

TIMESTAMPOFFSET

此字段类型将为时间戳偏移。 时间戳偏移字段支持日期、时间和相对于 UTC 值的偏移。

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 GUID, BIGINTEGER, TIMEONLY, DATEONLY, and TIMESTAMPOFFSET field types are not supported when the network data source is a portal running ArcGIS Enterprise 11.1.x or earlier.

List
count (input_type)
参数说明数据类型
input_type

用于计数的输入要素类型。

在使用 VehicleRoutingProblemSchemaVersion.One 方案版本时,使用 VehicleRoutingProblemInputDataType 枚举设置此参数;在使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,使用 VehicleRoutingProblemInputDataType2 枚举设置此参数。

Object
返回值
数据类型说明
Integer

行数。

fieldMappings (input_type, {use_location_fields}, {list_candidate_fields})
参数说明数据类型
input_type

The type of input for which the field mappings will be returned.

在使用 VehicleRoutingProblemSchemaVersion.One 方案版本时,使用 VehicleRoutingProblemInputDataType 枚举设置此参数;在使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,使用 VehicleRoutingProblemInputDataType2 枚举设置此参数。

See descriptions of the fields available for each input type when using the VehicleRoutingProblemSchemaVersion.One schema version or the VehicleRoutingProblemSchemaVersion.Two schema version.

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 solve method because the solver will not have to calculate the location fields from the geometry of the inputs. You can calculate location fields for a feature class using the Calculate Locations tool.

Learn more about network location fields and how inputs are located on the network

When this argument is set to True, the returned field mappings dictionary will include network location fields. The default is False, which means the field mapping dictionary will not include network location fields.

(默认值为 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 MyField, and you want it to be included in the analysis inputs, pass the MyField field object to the list_candidate_fields parameter. MyField will be included in the returned field mapping dictionary and automatically mapped. When you call the load method using these field mappings, MyField will be included in the analysis inputs along with all the default fields. In many cases, these extra fields will be passed to the analysis output as well.

Specify this parameter as a list of arcpy.Field objects, which can be obtained from a specified feature class or table using the arcpy.ListFields function.

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

NAClassFieldMappings 字典,其中键为字段名称,值为 arcpy.nax.NAClassFieldMap 对象。

fieldNames (input_type, {use_location_fields})
参数说明数据类型
input_type

返回其支持的字段名称的输入类型。

在使用 VehicleRoutingProblemSchemaVersion.One 方案版本时,使用 VehicleRoutingProblemInputDataType 枚举设置此参数;在使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,使用 VehicleRoutingProblemInputDataType2 枚举设置此参数。

See descriptions of the fields available for each input type when using the VehicleRoutingProblemSchemaVersion.One schema version or the VehicleRoutingProblemSchemaVersion.Two schema version.

Object
use_location_fields

指示网络位置字段是否包含在返回的字段名称列表中。网络位置字段可描述网络中对象所在的点。您可以使用网络位置字段更精确地控制分析输入在网络上的定位方式,并且由于求解程序不必从输入的几何计算位置字段,因此在调用 solve 方法时可以节省时间。您可以使用计算位置工具计算要素类的位置字段。

了解有关网络位置字段以及如何在网络中定位输入的详细信息

当此参数设置为 True 时,返回的字段名称列表将包含网络位置字段。默认为 False;字段名称列表不包括网络位置字段。

(默认值为 False)

Boolean
返回值
数据类型说明
String

指定输入类型支持的字段名称列表。

insertCursor (input_type, field_names, {append})
参数说明数据类型
input_type

The type of input into which the cursor can be used to insert rows.

在使用 VehicleRoutingProblemSchemaVersion.One 方案版本时,使用 VehicleRoutingProblemInputDataType 枚举设置此参数;在使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,使用 VehicleRoutingProblemInputDataType2 枚举设置此参数。

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 fieldNames method.

See descriptions of the fields available for each input type when using the VehicleRoutingProblemSchemaVersion.One schema version or the VehicleRoutingProblemSchemaVersion.Two schema version.

In addition to regular fields, you can also set the geometry of the input using one of the following geometry tokens:

  • SHAPE@XYA tuple of the feature's centroid x,y coordinates.
  • SHAPE@XYZ
  • SHAPE@JSON The esri JSON string representing the geometry.
  • SHAPE@WKBThe well-known binary (WKB) representation for OGC geometry. It provides a portable representation of a geometry value as a contiguous stream of bytes.
  • SHAPE@WKTThe well-known text (WKT) representation for OGC geometry. It provides a portable representation of a geometry value as a text string.
  • SHAPE@A geometry object for the feature.

The SHAPE@XY and SHAPE@XYZ tokens are only supported for point-based input types. When using the SHAPE@XY and SHAPE@XYZ tokens, specify the x-, y-, and z-values in the spatial reference of the network data source being used in the analysis.

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 indicates that the new features will be appended; the existing features will be preserved. This is the default. A value of False indicates that any existing features for the input type will be deleted and replaced with the features being inserted.

(默认值为 True)

Boolean
返回值
数据类型说明
Object

可用于写入要素的 SolverInsertCursor 对象。

load (input_type, features, {field_mappings}, {append}, {max_features})
参数说明数据类型
input_type

The type of input feature that will be loaded.

在使用 VehicleRoutingProblemSchemaVersion.One 方案版本时,使用 VehicleRoutingProblemInputDataType 枚举设置此参数;在使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,使用 VehicleRoutingProblemInputDataType2 枚举设置此参数。

Object
features

The input features that will be loaded. This parameter accepts the following input types:

  • The catalog path to a feature class or a table
  • A Layer object
  • The string representing the name of a layer
  • A FeatureSet or RecordSet object

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 NAClassFieldMappings dictionary that maps the field names of the input type to arcpy.nax.NAClassFieldMap objects representing the mapping of fields from the input features. Valid input for this parameter can be constructed using the fieldMappings method.

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.

See descriptions of the fields available for each input type when using the VehicleRoutingProblemSchemaVersion.One schema version or the VehicleRoutingProblemSchemaVersion.Two schema version.

(默认值为 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 indicates that the new features will be appended, and existing features will be preserved. This is useful when loading inputs from multiple feature classes or tables to use in a single analysis. This is the default. A value of False indicates that any existing features for the input type will be deleted and replaced with the features currently being loaded.

(默认值为 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 load method will return an arcpy.nax.LimitError if the number of input features exceeds the max_features limit.

If no value is provided, no limit will be enforced for the count of the input features.

(默认值为 None)

Integer
setLocateSettingsOverrides (input_type, {search_sources}, {allow_auto_relocate}, {search_tolerance}, {search_tolerance_units})
参数说明数据类型
input_type

The type of input for which to override default locate settings.

在使用 VehicleRoutingProblemSchemaVersion.One 方案版本时,使用 VehicleRoutingProblemInputDataType 枚举设置此参数;在使用 VehicleRoutingProblemSchemaVersion.Two 方案版本时,使用 VehicleRoutingProblemInputDataType2 枚举设置此参数。

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 searchSources property for examples of proper syntax for this parameter.

Specifying a value for this parameter overrides the default searchSources property value for the designated input type.

If this parameter is not specified or is set to None, the searchSources value will be used for this input type.

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 True, points located on restricted network elements and points affected by barriers will be relocated to the closest routable location. If the value is False, network location fields will be used as is, even if the points are unreachable, and this may cause the solve to fail.

Even if the value is False, inputs with no location fields or incomplete location fields will be located at solve time.

Specifying a value for this parameter overrides the default allowAutoRelocate property value for the designated input type.

If this parameter is not specified or is set to None, the allowAutoRelocate value will be used for this input type.

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 searchTolerance property value for the designated input type.

If this parameter is not specified or is set to None, the searchTolerance value will be used for this input type.

The units of this parameter value are set using the search_tolerance_units parameter; however, if no value is set for that parameter, the search_tolerance value will be interpreted in the units specified in the searchToleranceUnits property.

This parameter does not apply to line and polygon barriers; the method will return an error if this parameter is specified when the input_type value is one of these barrier types.

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 DistanceUnits enumeration.

Specifying a value for this parameter overrides the default searchToleranceUnits property value for the designated input type.

If this parameter is not specified or is set to None, the searchToleranceUnits will be used for this input type.

The value specified using the search_tolerance parameter is interpreted using these units. If that parameter is not specified, the value of the searchTolerance property will be interpreted using these units for the designated input type only.

This parameter does not apply to line and polygon barriers; the method will return an error if this parameter is specified when the input_type value is one of these barrier types.

Double
solve ()
返回值
数据类型说明
Object

arcpy.nax.VehicleRoutingProblemResult 对象可用于访问输出和求解程序消息。

代码示例

VehicleRoutingProblem 示例 1

执行车辆配送分析。

# An example showing how to perform vehicle routing problem analysis using inputs from feature classes and tables.
import arcpy
arcpy.CheckOutExtension("network")

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))
VehicleRoutingProblem 示例 2

使用 VehicleRoutingProblemSchemaVersion.Two 方案版本执行车辆配送分析。

# An example showing how to perform vehicle routing problem analysis using inputs from feature classes and tables.
import arcpy
arcpy.CheckOutExtension("network")

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))