Route - Post Route Matrix Async
Route Matrix Async
API 是一个 HTTP POST
请求,它允许使用异步(async)请求计算一组由源位置和目标位置定义的路由摘要矩阵。 对于每个给定源,服务将计算从该源路由到每个给定目标的成本。 可以将源集和目标集视为表的列和行标题,表中每个单元格都包含从源路由到该单元格的目标的成本。 路线矩阵可以计算为驾驶、步行和卡车路线。
路线矩阵用于多种不同类型的应用程序,最常用于解决旅行推销员问题(TSP)和车辆路线问题(VRP)。 对于矩阵中的每个出发点对,将返回行程时间和距离。 可以使用计算成本来确定使用路线方向 API 计算哪些详细路由。
异步请求矩阵的最大大小 50000(原点数乘以目标数)。
提交异步路由矩阵请求
异步 API 适用于处理大量相对复杂的路由请求。 使用异步请求发出请求时,默认情况下,服务会在响应标头的 operation-Location
字段中返回 202 响应代码,其中包含 Azure Maps 地理终结点“{geography}.atlas.microsoft.com”。 在状态为“成功”之前,应定期检查此 URL。
此 API 的矩阵的最大大小为 50000(原点数乘以目标数)。 考虑到该约束,可能的矩阵维度的示例包括:500x100、100x100、280x170。 100x50 (不需要正方形)。
异步响应的存储时间为 24 小时
POST https://atlas.microsoft.com/route/matrix:async?api-version=2025-01-01&subscription-key={subscription-key}
下面是一系列典型的异步操作:
客户端将路由矩阵 POST 请求发送到 Azure Maps
服务器将使用以下项之一进行响应:
HTTP
202 Accepted
- 已接受路由矩阵请求。HTTP
Error
- 处理路由矩阵请求时出错。 这可能是 400 错误请求或任何其他错误状态代码。如果成功接受矩阵路由请求,则响应中的
operation-location
标头包含获取请求状态的 URL。 此状态 URI 如下所示:
GET https://atlas.microsoft.com/route/operations/{id}?api-version=2025-01-01?subscription-key={subscription-key}
- 客户端对步骤 3 中获取的 resultUrl 发出 GET 请求以获取结果
GET https://atlas.microsoft.com/route/operations/{id}/result?api-version=2025-01-01?subscription-key={subscription-key}
API 限制
矩阵的异步处理最适合需要大量路由计算的大型矩阵。 以下限制适用于异步请求。 如果下表中没有任何行与请求的参数匹配,则请求不满足要求,并且不会处理。
最大矩阵大小 | 最大源数 | 最大目标数 | 其他限制 |
---|---|---|---|
2500 | 1000 | 1000 | 所有原点和目的地都应包含在轴对齐的 400 km x 400 公里边界框中。 否则,某些矩阵单元格将解析为OUT_OF_REGION。 |
50,000 | 10,000 | 10,000 |
-
departAt 或 arriveAt 必须是任何。- traffic 必须是历史的。- optimizeRoute 必须最快。- travelMode 必须是驾驶或卡车。 - 不能显式使用其他参数。 |
POST https://atlas.microsoft.com/route/matrix:async?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 帐户的唯一 ID,可以从 Azure Maps 管理平面帐户 API 检索。 若要在 Azure Maps 中使用 Microsoft Entra ID 安全性,请参阅以下 文章 以获取指导。 |
请求正文
Media Types: "application/geo+json"
名称 | 必需 | 类型 | 说明 |
---|---|---|---|
features | True |
作为输入矩阵的 GeoJSON MultiPoint 功能传递的一组源点和目标点。 有关 GeoJSON 格式的详细信息,请参阅 RFC 7946。 |
|
type | True |
指定 |
|
arriveAt |
string |
到达目标点的日期和时间,格式为
默认值:如果未指定 示例:“arriveAt”:“2024-12-01T09:30:00.000-07:00” |
|
avoid |
指定在确定路由时路由计算应遵循的限制。 避免在请求中支持多个值,并且仅支持驾驶和卡车 travelMode。 |
||
departAt |
string |
从原点出发的日期和时间,格式为
默认值:如果未指定 示例: “departAt”: “2024-12-01T09:30:00.000-07:00” |
|
optimizeRoute |
指定要用于优化路由的参数。 如果未定义,则默认值为“最快”,返回路线以尽量减少行程时间。 示例:“optimizeRoute”:“shortest” |
||
traffic |
指定如何考虑流量用于计算路由。 默认值: |
||
travelMode |
指定计算矩阵时要考虑的旅行配置文件。 如果未指定,则默认值为“driving”。 示例:“travelMode”:“driving” |
||
vehicleSpec |
指定计算路线矩阵时要考虑的车辆高度、重量、最大速度、货物类型等车辆属性。 这有助于避免低桥通关、道路限制、难以右转,以根据车辆规格提供优化的路线。 车辆属性在 vehicleSpec 属性中指定。 |
响应
名称 | 类型 | 说明 |
---|---|---|
202 Accepted |
已接受 标头 Operation-Location: string |
|
Other Status Codes |
发生意外错误。 标头 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
示例
Submit an asynchronous request for matrix
示例请求
POST https://atlas.microsoft.com/route/matrix:async?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"
]
}
示例响应
Operation-Location: https://atlas.microsoft.com/route/operations/bc3f9365-3ee0-4564-aa27-825016325557?api-version=2025-01-01
定义
名称 | 说明 |
---|---|
Adr |
ADR 隧道限制代码。 ADR是一项欧洲关于道路危险品国际运输的协议。 ADR 隧道限制代码用于确定是否允许车辆通过隧道,并限制危险品的运输。 |
Features |
指定 |
Feature |
指定 |
Geo |
有效的 |
Input |
指定 |
Input |
指定输入矩阵的属性对象。 |
Maps |
错误详细信息。 |
Maps |
Azure Maps API 的常见错误响应,以返回失败操作的错误详细信息。 |
Maps |
包含与当前对象有关错误的更具体信息的对象。 |
Route |
指定要用于优化路由的参数。 如果未定义,则默认值为“最快”,返回路线以尽量减少行程时间。 示例:“optimizeRoute”:“shortest” |
Route |
用于获取路线矩阵,其中显示了出发地和目的地列表中所有可能对的行程时间和距离。
|
Route |
指定在确定路由时路由计算应遵循的限制。 避免在请求中支持多个值,并且仅支持驾驶和卡车 travelMode。 |
Route |
指定如何考虑流量用于计算路由。 默认值: |
Route |
指定计算矩阵时要考虑的旅行配置文件。 如果未指定,则默认值为“driving”。 示例:“travelMode”:“driving” |
Route |
指定输入矩阵的源 MultiPoint 类型和目标 MultiPoint 类型。 |
Route |
指定计算路线矩阵时要考虑的车辆高度、重量、最大速度、货物类型等车辆属性。 这有助于避免低桥通关、道路限制、难以右转,以根据车辆规格提供优化的路线。 车辆属性在 vehicleSpec 属性中指定。 |
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 的道路限制。 |
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 |
包含与当前对象有关错误的更具体信息的对象。 |
RouteMatrixAsyncOptimizeRouteEnum
指定要用于优化路由的参数。 如果未定义,则默认值为“最快”,返回路线以尽量减少行程时间。
示例:“optimizeRoute”:“shortest”
值 | 说明 |
---|---|
fastest |
查找按行程时间优化路线的最快路线。 |
shortest |
查找按行程距离优化路线的最短路线。 |
RouteMatrixAsyncRequest
用于获取路线矩阵,其中显示了出发地和目的地列表中所有可能对的行程时间和距离。
GeoJSON
功能对象和其他属性。 有关详细信息,请参阅 RFC 7946。
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
arriveAt |
string |
到达目标点的日期和时间,格式为
默认值:如果未指定 示例:“arriveAt”:“2024-12-01T09:30:00.000-07:00” |
|
avoid |
指定在确定路由时路由计算应遵循的限制。 避免在请求中支持多个值,并且仅支持驾驶和卡车 travelMode。 |
||
departAt |
string |
从原点出发的日期和时间,格式为
默认值:如果未指定 示例: “departAt”: “2024-12-01T09:30:00.000-07:00” |
|
features |
作为输入矩阵的 GeoJSON MultiPoint 功能传递的一组源点和目标点。 有关 GeoJSON 格式的详细信息,请参阅 RFC 7946。 |
||
optimizeRoute | fastest |
指定要用于优化路由的参数。 如果未定义,则默认值为“最快”,返回路线以尽量减少行程时间。 示例:“optimizeRoute”:“shortest” |
|
traffic | historical |
指定如何考虑流量用于计算路由。 默认值: |
|
travelMode | driving |
指定计算矩阵时要考虑的旅行配置文件。 如果未指定,则默认值为“driving”。 示例:“travelMode”:“driving” |
|
type |
指定 |
||
vehicleSpec |
指定计算路线矩阵时要考虑的车辆高度、重量、最大速度、货物类型等车辆属性。 这有助于避免低桥通关、道路限制、难以右转,以根据车辆规格提供优化的路线。 车辆属性在 vehicleSpec 属性中指定。 |
RouteMatrixAvoidEnum
指定在确定路由时路由计算应遵循的限制。 避免在请求中支持多个值,并且仅支持驾驶和卡车 travelMode。
值 | 说明 |
---|---|
tollRoads |
避免在路线中使用收费公路。 |
unpavedRoads |
避免路线中未修补的道路。 |
RouteMatrixTrafficEnum
指定如何考虑流量用于计算路由。
默认值:historical
值 | 说明 |
---|---|
historical |
路线计算考虑历史行程时间和长期关闭。 旅行时段期间的交通堵塞和短期关闭不会影响路线或旅行时间。 |
live |
除了历史旅行时间外,路线计算还考虑在旅行时段内交通堵塞和短期和长期关闭。
|
RouteMatrixTravelModeEnum
指定计算矩阵时要考虑的旅行配置文件。 如果未指定,则默认值为“driving”。
示例:“travelMode”:“driving”
值 | 说明 |
---|---|
driving |
适用于汽车的路由配置文件用于路线矩阵计算。 |
truck |
适用于卡车等商用车辆的路线配置文件用于路线矩阵计算。 |
walking |
返回的路线针对行人进行了优化,包括人行道的使用。 |
RouteMatrixTypeEnum
指定输入矩阵的源 MultiPoint 类型和目标 MultiPoint 类型。
值 | 说明 |
---|---|
destinations |
在输入矩阵中定义目标位置的 MultiPoint 功能。 |
origins |
在输入矩阵中定义源位置的 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 表示不考虑宽度限制。 |
VehicleLoadTypeEnum
可能归类为危险物质的货物类型,并受某些道路限制。 可用的 vehicleLoadType 值为美国 Hazmat 类 1 到 9,以及用于其他国家/地区的通用分类。 以 USHazmat 开头的值用于美国路由,而其他Hazmat 应用于所有其他国家/地区。 vehicleLoadType 支持请求中的多个值。
值 | 说明 |
---|---|
USHazmatClass1 |
炸药 |
USHazmatClass2 |
压缩气体 |
USHazmatClass3 |
易燃液体 |
USHazmatClass4 |
易燃固体 |
USHazmatClass5 |
Oxidizers |
USHazmatClass6 |
毒药 |
USHazmatClass7 |
放射性 |
USHazmatClass8 |
腐蚀 |
USHazmatClass9 |
杂项 |
otherHazmatExplosive |
炸药 |
otherHazmatGeneral |
杂项 |
otherHazmatHarmfulToWater |
有害于水 |