Route - Post Route Matrix
Route Matrix API 是一个 HTTP POST 请求,它允许使用同步请求计算一组由源位置和目标位置定义的路由摘要矩阵。 对于每个给定源,服务将计算从该源路由到每个给定目标的成本。 可以将出发地集和目的地集视为表的列标题和行标题,表中每个单元格都包含从出发地前往该单元格的目的地的成本。 路线矩阵可以计算为驾驶、步行和卡车路线。 例如,一家食品送货公司有20名司机,他们需要找到最接近的司机从餐厅拿起送货。 若要解决此用例,他们可以调用路线矩阵 API,并使用旅行成本按司机的实际旅行距离或餐馆的时间对司机进行排序。
路线矩阵用于多种不同类型的应用程序,最常用于解决旅行推销员问题(TSP)和车辆路线问题(VRP)。 对于矩阵中的每个出发点对,将返回行程时间和距离。 可以使用计算成本来确定使用路线方向 API 计算哪些详细路由。
同步请求的矩阵的最大大小 2500(原点数乘以目标数)。
提交同步路由矩阵请求
如果你的方案需要同步请求,并且矩阵的最大大小小于或等于 2500,则可能需要发出同步请求。 此 API 的矩阵的最大大小为 2500(原点数乘以目标数)。 考虑到该约束,可能的矩阵维度的示例包括:50x50、60x40、90x20(不需要正方形)。
API 限制
矩阵的同步处理最适合于路由计算的快速小型矩阵。 若要计算较大的矩阵和繁重的路由计算,请使用异步终结点。 以下限制适用于同步请求。 如果下表中没有任何行与请求的参数匹配,则请求不满足要求,并且不会处理。
| 最大矩阵大小 | 最大源数 | 最大目标数 | 其他限制 |
|---|---|---|---|
| 100 | 100 | 100 | 无 |
| 200 | 200 | 200 | 所有原点和目的地都应包含在轴对齐的 400 km x 400 公里边界框中。 否则,某些矩阵单元格将解析为OUT_OF_REGION。 |
| 2500 | 1000 | 1000 |
-
departAt 或 arriveAt 必须是任何。- traffic 必须是历史的。- travelMode 必须是驾驶或卡车- 不能显式使用其他参数 |
例子:
具有
traffic=live的 10x20 矩阵的请求:此请求将以边界框限制进行处理,因为它与限制最多为 200(包括边界框限制)匹配。请求 10x20 矩阵的默认参数(
traffic=historical):此请求将在没有边界框限制的情况下进行处理,因为它与限制最多为 2500,这不会施加边界框限制。
POST https://atlas.microsoft.com/route/matrix?api-version=2025-01-01
URI 参数
| 名称 | 在 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
api-version
|
query | True |
string |
Azure Maps API 的版本号。 |
请求头
Media Types: "application/geo+json"
| 名称 | 必需 | 类型 | 说明 |
|---|---|---|---|
| x-ms-client-id |
string |
指示用于 Microsoft Entra ID 安全模型的帐户。 可以从 Azure Maps 管理平面帐户 API 获取 Azure Maps 帐户的唯一 ID。 有关在 Azure Maps 中使用 Microsoft Entra ID 安全性的详细信息,请参阅 在 Azure Maps 中管理身份验证。 |
请求正文
Media Types: "application/geo+json"
| 名称 | 必需 | 类型 | 说明 |
|---|---|---|---|
| features | True |
作为输入矩阵的 GeoJSON MultiPoint 功能传递的一组源点和目标点。 有关 GeoJSON 格式的详细信息,请参阅 RFC 7946 。 |
|
| type | True |
指定 |
|
| arriveAt |
string (date-time) |
到达目标点的日期和时间,格式为
默认值:如果未指定 示例:“arriveAt”:“2024-12-01T09:30:00.000-07:00” |
|
| avoid |
指定在确定路由时路由计算应遵循的限制。 避免在请求中支持多个值,并且仅支持驾驶和卡车 travelMode。 |
||
| departAt |
string (date-time) |
从原点出发的日期和时间,格式为
默认值:如果未指定 示例: “departAt”: “2024-12-01T09:30:00.000-07:00” |
|
| optimizeRoute |
指定要用于优化路由的参数。 如果未定义,则默认值为“最快”,返回路线以尽量减少行程时间。 示例:“optimizeRoute”:“fastest” |
||
| traffic |
指定如何考虑流量用于计算路由。 默认值: |
||
| travelMode |
指定计算矩阵时要考虑的旅行配置文件。 如果未指定,则默认值为“driving”。 示例:“travelMode”:“驾驶” |
||
| vehicleSpec |
指定计算路线矩阵时要考虑的车辆高度、重量、最大速度、货物类型等车辆属性。 这有助于避免低桥通关、道路限制、难以右转,以根据车辆规格提供优化的路线。 车辆属性在 vehicleSpec 属性中指定。 |
响应
| 名称 | 类型 | 说明 |
|---|---|---|
| 200 OK |
好的 Media Types: "application/geo+json" |
|
| Other Status Codes |
发生意外错误。 Media Types: "application/geo+json" 标头 x-ms-error-code: string |
安全性
AADToken
这些 Microsoft Entra OAuth 2.0 流。 与 Azure 基于角色的访问配对时, 控制它可用于控制对 Azure Maps REST API 的访问。 Azure 基于角色的访问控制用于指定对一个或多个 Azure Maps 资源帐户或子资源的访问。 任何用户、组或服务主体都可以通过内置角色或由一个或多个对 Azure Maps REST API 的权限组成的自定义角色授予访问权限。
若要实现方案,建议查看
注释
- 此安全定义 要求 使用
x-ms-client-id标头来指示应用程序请求访问的 Azure Maps 资源。 这可以从 地图管理 API获取。 -
Authorization URL特定于 Azure 公有云实例。 主权云具有唯一的授权 URL,Microsoft Entra ID 配置。 - Azure 基于角色的访问控制是通过 Azure 门户、PowerShell、CLI、Azure SDK 或 REST API 从 Azure 管理平面 配置的。
- 使用 Azure Maps Web SDK 允许为多个用例设置基于应用程序的配置。
- 有关Microsoft标识平台的详细信息,请参阅 Microsoft标识平台概述。
类型:
oauth2
流向:
implicit
授权 URL:
https://login.microsoftonline.com/common/oauth2/authorize
作用域
| 名称 | 说明 |
|---|---|
| https://atlas.microsoft.com/.default | https://atlas.microsoft.com/.default |
subscription-key
这是在通过 Azure 门户、PowerShell、CLI、Azure SDK 或 REST API 通过 Azure 管理平面创建 Azure Maps 资源 时预配的共享密钥。
使用此密钥,任何应用程序都有权访问所有 REST API。 换句话说,这些密钥当前可视为为其颁发的帐户的主密钥。
对于公开的应用程序,我们建议使用可安全地存储此密钥的 Azure Maps REST API 的服务器到服务器访问。
类型:
apiKey
在:
header
SAS Token
这是一个共享访问签名令牌,它通过 Azure 门户、PowerShell、CLI、Azure SDK 或 REST API 通过 Azure 管理平面在 azure Maps 资源
使用此令牌,任何应用程序都有权使用 Azure 基于角色的访问控制进行访问,并精细控制特定令牌的过期、速率和区域。 换句话说,SAS 令牌可用于允许应用程序以比共享密钥更安全的方式控制访问。
对于公开的应用程序,建议在 映射帐户资源 上配置允许的源的特定列表,以限制呈现滥用并定期续订 SAS 令牌。
类型:
apiKey
在:
header
示例
Successfully retrieve a route matrix with additional parameters in the body
示例请求
POST https://atlas.microsoft.com/route/matrix?api-version=2025-01-01
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "MultiPoint",
"coordinates": [
[
9.15049,
45.458545
],
[
11.050541,
45.403337
]
]
},
"properties": {
"pointType": "origins"
}
},
{
"type": "Feature",
"geometry": {
"type": "MultiPoint",
"coordinates": [
[
11.499931,
48.149853
],
[
14.538226,
50.033688
]
]
},
"properties": {
"pointType": "destinations"
}
}
],
"departAt": "2022-12-19T16:39:57+01:00",
"optimizeRoute": "fastest",
"traffic": "historical",
"travelMode": "truck",
"avoid": [
"unpavedRoads"
]
}
示例响应
{
"type": "Feature",
"geometry": null,
"properties": {
"summary": {
"totalCount": 4,
"successfulCount": 4
},
"matrix": [
{
"statusCode": 200,
"originIndex": 0,
"destinationIndex": 0,
"durationTrafficInSeconds": 21007,
"durationInSeconds": 21007,
"distanceInMeters": 492466,
"departureAt": "2022-12-19T16:39:57+01:00",
"arrivalAt": "2022-12-19T22:30:03+01:00"
},
{
"statusCode": 200,
"originIndex": 0,
"destinationIndex": 1,
"durationTrafficInSeconds": 33623,
"durationInSeconds": 33623,
"distanceInMeters": 877028,
"departureAt": "2022-12-19T16:39:57+01:00",
"arrivalAt": "2022-12-20T02:00:19+01:00"
},
{
"statusCode": 200,
"originIndex": 1,
"destinationIndex": 0,
"durationTrafficInSeconds": 19520,
"durationInSeconds": 19520,
"distanceInMeters": 427769,
"departureAt": "2022-12-19T16:39:57+01:00",
"arrivalAt": "2022-12-19T22:05:16+01:00"
},
{
"statusCode": 200,
"originIndex": 1,
"destinationIndex": 1,
"durationTrafficInSeconds": 32070,
"durationInSeconds": 32070,
"distanceInMeters": 836080,
"departureAt": "2022-12-19T16:39:57+01:00",
"arrivalAt": "2022-12-20T01:34:27+01:00"
}
]
}
}
定义
| 名称 | 说明 |
|---|---|
|
Adr |
ADR 隧道限制代码。 ADR是一项欧洲关于道路危险品国际运输的协议。 ADR 隧道限制代码用于确定是否允许车辆通过隧道,并限制危险品的运输。 |
|
Error |
资源管理错误附加信息。 |
|
Error |
错误详细信息。 |
|
Features |
指定 |
|
Feature |
指定 |
|
Geo |
有效的 |
|
Input |
指定 |
|
Input |
指定输入矩阵的属性对象。 |
|
Maps |
错误详细信息。 |
|
Maps |
Azure Maps API 的常见错误响应,以返回失败操作的错误详细信息。 |
|
Maps |
包含与当前对象有关错误的更具体信息的对象。 |
|
Route |
指定路线腿中每个机动点的驾驶说明和附加属性。 |
|
Route |
指定在确定路由时路由计算应遵循的限制。 避免在请求中支持多个值,并且仅支持驾驶和卡车 travelMode。 |
|
Route |
路由矩阵属性。 |
|
Route |
路由矩阵项结果 |
|
Route |
指定要用于优化路由的参数。 如果未定义,则默认值为“最快”,返回路线以尽量减少行程时间。 示例:“optimizeRoute”:“fastest” |
|
Route |
用于获取路线矩阵,其中显示了出发地和目的地列表中所有可能对的行程时间和距离。
|
|
Route |
此对象是从成功调用返回的。 |
|
Route |
路由矩阵请求摘要 |
|
Route |
指定如何考虑流量用于计算路由。 默认值: |
|
Route |
指定计算矩阵时要考虑的旅行配置文件。 如果未指定,则默认值为“driving”。 示例:“travelMode”:“驾驶” |
|
Route |
指定输入矩阵的源 MultiPoint 类型和目标 MultiPoint 类型。 |
|
Route |
指定计算路线矩阵时要考虑的车辆高度、重量、最大速度、货物类型等车辆属性。 这有助于避免低桥通关、道路限制、难以右转,以根据车辆规格提供优化的路线。 车辆属性在 vehicleSpec 属性中指定。 |
|
Route |
异步操作的类型 |
|
Vehicle |
可能归类为危险物质的货物类型,并受某些道路限制。 可用的 vehicleLoadType 值为美国 Hazmat 类 1 到 9,以及用于其他国家/地区的通用分类。 以 USHazmat 开头的值用于美国路由,而其他Hazmat 应用于所有其他国家/地区。 vehicleLoadType 支持请求中的多个值。 |
AdrTunnelRestrictionCodeEnum
ADR 隧道限制代码。 ADR是一项欧洲关于道路危险品国际运输的协议。 ADR 隧道限制代码用于确定是否允许车辆通过隧道,并限制危险品的运输。
| 值 | 说明 |
|---|---|
| B |
具有代码 B 的车辆受限于 ADR 隧道类别 B、C、D 和 E 的道路。 |
| C |
具有代码 C 的车辆受 ADR 隧道类别 C、D 和 E 的道路限制 |
| D |
具有代码 D 的车辆受 ADR 隧道类别 D 和 E 的道路限制。 |
| E |
具有代码 E 的车辆受 ADR 隧道类别 E 的道路限制。 |
ErrorAdditionalInfo
资源管理错误附加信息。
| 名称 | 类型 | 说明 |
|---|---|---|
| info |
object |
其他信息。 |
| type |
string |
其他信息类型。 |
ErrorDetail
错误详细信息。
| 名称 | 类型 | 说明 |
|---|---|---|
| additionalInfo |
错误附加信息。 |
|
| code |
string |
错误代码。 |
| details |
错误详细信息。 |
|
| message |
string |
错误消息。 |
| target |
string |
错误目标。 |
FeaturesItemTypeEnum
指定 GeoJSON 类型。 唯一支持的对象类型是 Feature。 有关详细信息,请参阅 RFC 7946。
| 值 | 说明 |
|---|---|
| Feature |
指定功能对象类型 |
FeatureTypeEnum
指定 GeoJSON 类型。 唯一支持的对象类型是 FeatureCollection。 有关详细信息,请参阅 RFC 7946。
| 值 | 说明 |
|---|---|
| FeatureCollection |
指定 |
GeoJsonMultiPoint
有效的 GeoJSON MultiPoint 几何图形类型。 有关详细信息,请参阅 RFC 7946。
| 名称 | 类型 | 说明 |
|---|---|---|
| coordinates |
number[] (double) |
|
| type |
string:
Multi |
指定 |
InputRouteMatrixFeaturesItem
指定 GeoJSON MultiPoint 功能对象的输入源点和目标点和其他属性。 有关详细信息,请参阅 RFC 7946 。
| 名称 | 类型 | 说明 |
|---|---|---|
| geometry |
有效的 |
|
| properties |
MultiPoint 特征属性对象,该对象指定输入矩阵的源特征和目标特征。 |
|
| type |
指定 |
InputRouteMatrixProperties
指定输入矩阵的属性对象。
| 名称 | 类型 | 说明 |
|---|---|---|
| pointType |
指定输入矩阵的源 MultiPoint 类型和目标 MultiPoint 类型。 |
MapsErrorDetail
错误详细信息。
| 名称 | 类型 | 说明 |
|---|---|---|
| code |
string |
服务器定义的错误代码集之一。 |
| details |
导致此报告错误的特定错误的详细信息数组。 |
|
| innererror |
包含与当前对象有关错误的更具体信息的对象。 |
|
| message |
string |
有关错误的可读的表示形式。 |
| target |
string |
错误的目标。 |
MapsErrorResponse
Azure Maps API 的常见错误响应,以返回失败操作的错误详细信息。
| 名称 | 类型 | 说明 |
|---|---|---|
| error |
错误详细信息。 |
MapsInnerError
包含与当前对象有关错误的更具体信息的对象。
| 名称 | 类型 | 说明 |
|---|---|---|
| code |
string |
错误代码。 |
| innererror |
包含与当前对象有关错误的更具体信息的对象。 |
RouteMatrixAsyncResponse
指定路线腿中每个机动点的驾驶说明和附加属性。
| 名称 | 类型 | 说明 |
|---|---|---|
| geometry |
object |
几何对象为 null |
| kind |
string:
Route |
异步操作的类型 |
| properties |
路由矩阵属性。 |
|
| type |
指定 |
RouteMatrixAvoidEnum
指定在确定路由时路由计算应遵循的限制。 避免在请求中支持多个值,并且仅支持驾驶和卡车 travelMode。
| 值 | 说明 |
|---|---|
| tollRoads |
避免在路线中使用收费公路。 |
| unpavedRoads |
避免路线中未修补的道路。 |
RouteMatrixFeatureProperties
路由矩阵属性。
| 名称 | 类型 | 说明 |
|---|---|---|
| matrix |
路由结果的矩阵。 |
|
| summary |
路由矩阵请求摘要 |
RouteMatrixItemResult
路由矩阵项结果
RouteMatrixOptimizeRouteEnum
指定要用于优化路由的参数。 如果未定义,则默认值为“最快”,返回路线以尽量减少行程时间。
示例:“optimizeRoute”:“fastest”
| 值 | 说明 |
|---|---|
| fastest |
查找按行程时间优化路线的最快路线。 路由矩阵同步 API 仅支持 |
RouteMatrixRequest
用于获取路线矩阵,其中显示了出发地和目的地列表中所有可能对的行程时间和距离。
GeoJSON 功能对象和其他属性。 有关详细信息,请参阅 RFC 7946 。
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| arriveAt |
string (date-time) |
到达目标点的日期和时间,格式为
默认值:如果未指定 示例:“arriveAt”:“2024-12-01T09:30:00.000-07:00” |
|
| avoid |
指定在确定路由时路由计算应遵循的限制。 避免在请求中支持多个值,并且仅支持驾驶和卡车 travelMode。 |
||
| departAt |
string (date-time) |
从原点出发的日期和时间,格式为
默认值:如果未指定 示例: “departAt”: “2024-12-01T09:30:00.000-07:00” |
|
| features |
作为输入矩阵的 GeoJSON MultiPoint 功能传递的一组源点和目标点。 有关 GeoJSON 格式的详细信息,请参阅 RFC 7946 。 |
||
| optimizeRoute | fastest |
指定要用于优化路由的参数。 如果未定义,则默认值为“最快”,返回路线以尽量减少行程时间。 示例:“optimizeRoute”:“fastest” |
|
| traffic | historical |
指定如何考虑流量用于计算路由。 默认值: |
|
| travelMode | driving |
指定计算矩阵时要考虑的旅行配置文件。 如果未指定,则默认值为“driving”。 示例:“travelMode”:“驾驶” |
|
| type |
指定 |
||
| vehicleSpec |
指定计算路线矩阵时要考虑的车辆高度、重量、最大速度、货物类型等车辆属性。 这有助于避免低桥通关、道路限制、难以右转,以根据车辆规格提供优化的路线。 车辆属性在 vehicleSpec 属性中指定。 |
RouteMatrixResponse
此对象是从成功调用返回的。
| 名称 | 类型 | 说明 |
|---|---|---|
| geometry |
object |
几何对象为 null |
| properties |
路由矩阵属性。 |
|
| type |
指定 |
RouteMatrixSummary
路由矩阵请求摘要
| 名称 | 类型 | 说明 |
|---|---|---|
| successfulCount |
integer (int32) |
此矩阵中成功的路由数。 |
| totalCount |
integer (int32) |
此矩阵中的路由总数。 |
RouteMatrixTrafficEnum
指定如何考虑流量用于计算路由。
默认值:historical
| 值 | 说明 |
|---|---|
| historical |
路线计算考虑历史行程时间和长期关闭。 旅行时段期间的交通堵塞和短期关闭不会影响路线或旅行时间。 |
| live |
除了历史旅行时间外,路线计算还考虑在旅行时段内交通堵塞和短期和长期关闭。
|
RouteMatrixTravelModeEnum
指定计算矩阵时要考虑的旅行配置文件。 如果未指定,则默认值为“driving”。
示例:“travelMode”:“驾驶”
| 值 | 说明 |
|---|---|
| driving |
适用于汽车的路由配置文件用于路线矩阵计算。 |
| truck |
适用于卡车等商用车辆的路线配置文件用于路线矩阵计算。 |
| walking |
返回的路线针对行人进行了优化,包括人行道的使用。 |
RouteMatrixTypeEnum
指定输入矩阵的源 MultiPoint 类型和目标 MultiPoint 类型。
| 值 | 说明 |
|---|---|
| origins |
在输入矩阵中定义源位置的 MultiPoint 功能。 |
| destinations |
在输入矩阵中定义目标位置的 MultiPoint 功能。 |
RouteMatrixVehicleSpec
指定计算路线矩阵时要考虑的车辆高度、重量、最大速度、货物类型等车辆属性。 这有助于避免低桥通关、道路限制、难以右转,以根据车辆规格提供优化的路线。 车辆属性在 vehicleSpec 属性中指定。
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| adrTunnelRestrictionCode |
ADR 隧道限制代码。 ADR是一项欧洲关于道路危险品国际运输的协议。 ADR 隧道限制代码用于确定是否允许车辆通过隧道,并限制危险品的运输。 |
||
| axleWeight |
integer (int64) minimum: 0maximum: 1000000 |
0 |
车辆每轴重量(以公斤为单位)。 值为 0 表示不考虑每个轴的重量限制。 |
| height |
number (double) minimum: 0maximum: 1000000 |
0 |
车辆的高度(以米为单位)。 值为 0 表示不考虑高度限制。 |
| isVehicleCommercial |
boolean |
False |
车辆是否用于商业目的。 商业车辆不得在一些公路上行驶。 |
| length |
number (double) minimum: 0maximum: 1000000 |
0 |
车辆长度(以米为单位)。 值为 0 表示不考虑长度限制。 |
| loadType |
可能归类为危险物质的货物类型,并受某些道路限制。 可用的 vehicleLoadType 值为美国 Hazmat 类 1 到 9,以及用于其他国家/地区的通用分类。 以 USHazmat 开头的值用于美国路由,而其他Hazmat 应用于所有其他国家/地区。 vehicleLoadType 支持请求中的多个值。 |
||
| maxSpeed |
integer (int64) minimum: 0maximum: 250 |
0 |
车辆的最大速度(以公里/小时为单位)。 车辆配置文件中的最大速度用于检查是否允许车辆在高速公路上。 值为 0 表示将在路线规划期间确定并应用车辆的相应值。 在路由规划期间,可能会重写非零值。 例如,当前流量流为 60 公里/小时。 如果车辆最大速度设置为 50 公里/小时,路由引擎将考虑 60 公里/小时,因为这是目前的情况。 如果车辆的最大速度为 80 公里/小时,但当前交通流量为 60 公里/小时,则路由引擎将再次使用 60 公里/小时。 |
| weight |
integer (int64) minimum: 0maximum: 1000000 |
0 |
车辆重量(以公斤为单位)。 值为 0 表示不考虑权重限制。 |
| width |
number (double) minimum: 0maximum: 1000000 |
0 |
车辆宽度(以米为单位)。 值为 0 表示不考虑宽度限制。 |
RouteOperationKindEnum
异步操作的类型
| 值 | 说明 |
|---|---|
| RouteMatrix |
路由矩阵异步作业。 |
VehicleLoadTypeEnum
可能归类为危险物质的货物类型,并受某些道路限制。 可用的 vehicleLoadType 值为美国 Hazmat 类 1 到 9,以及用于其他国家/地区的通用分类。 以 USHazmat 开头的值用于美国路由,而其他Hazmat 应用于所有其他国家/地区。 vehicleLoadType 支持请求中的多个值。
| 值 | 说明 |
|---|---|
| USHazmatClass1 |
Explosives |
| USHazmatClass2 |
压缩气体 |
| USHazmatClass3 |
易燃液体 |
| USHazmatClass4 |
易燃固体 |
| USHazmatClass5 |
Oxidizers |
| USHazmatClass6 |
Poisons |
| USHazmatClass7 |
Radioactive |
| USHazmatClass8 |
Corrosives |
| USHazmatClass9 |
其他 |
| otherHazmatExplosive |
Explosives |
| otherHazmatGeneral |
其他 |
| otherHazmatHarmfulToWater |
有害于水 |