百度地图开放平台

所有文档

超视距巡航

更新时间: 2026/10/26 15:25
巡航服务长连接协议
本协议使用websocket作为基础协议进行双向数据交换。
1 通用说明

其中在websocket的body中,定义了巡航服务数据交换协议,消息的结构框架如下:

以下为websocket的body内容举例,数据的格式为json格式:

{
"id": 10011111, // 本条消息的id
"qt": "xxxx", // 消息类型
"ver": "1.0", // 协议版本号
"prt": 1, // 协议类型,1 Json,2 Protocol Buffer
"enc" : 1, // 加密方式,1 不加密,2 使用rsa加密
"ts": 1696738704000,
"data": {
...
}
}

公共字段详细说明:

字段名说明必填默认值取值

id

消息id。

客户端接收消息时,服务端将为每条消息生成一个唯一id,该id为自增,可通过id进行顺序判断;

客户端发送消息时,也应为每条消息生成一个自增的唯一id,服务端将根据此id进行消息顺序的判断。

是

举例:

1001

qt

消息类型。

客户端接收消息时,消息类型与data字段内容对应,客户端根据此字段判断data该如何解析;

客户端发送消息时,设置该字段,服务端将根据此字段决定该条消息如何处理。

是

消息类型枚举:

auth 鉴权服务消息

horizon 巡航服务消息

ack 处理成功确认消息(可能存在上报的位置由于服务端不可用处理失败,该条上报的消息将被抛弃)

ver

协议的版本号,不传默认使用最新版本。

该字段用于解决当服务对协议进行升级时对旧版本协议的兼容。

否

1.0

举例:

1.0

prt

协议类型。

定义以何种方式编码websocket body的内容。

否

1

可以支持的编码方式:

1 Json

2 Protocol Buffer

目前只支持json格式编码

enc

数据传输加密方式

是

1 不加密

2 使用rsa加密

3 使用aes加密

ts

毫秒时间戳。

服务端或客户端发送消息时的毫秒时间戳。

是

举例:

1696738704000

data

消息内容。

每一个qt对应一套私有的协议,根据qt字段判断data的内容如何解析,每一种data的解析方式将在下文详细说明。

是


2 如何接入本服务
使用C++

3 鉴权服务消息协议
3.1 鉴权

客户端上报消息举例:

{
"id": 10011111,
"qt": "auth",
"ver": "1.0",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"ak": "xxxxxxxxxxx",
"entity_id": "et_123"
}
}

字段说明:

字段名类型说明必填默认值取值

ak

string

开发者可以在百度地图开放平台官网->控制台创建应用,查看应用详情即可获取ak。

创建应用时,请选择服务端类型,并通过工单申请开通超视距巡航服务,开通成功后,应用中的websocket长连接服务权限将被激活。

是

举例:

xNsxGGvvIexxxcXGcibDHjwb4gtrtrqV

entity_id

string

终端的唯一标识,同一时刻只允许一台终端设备与服务端建立连接,重复的entity_id建立连接将导致旧的连接断开。

是

服务端下发消息举例:

{
"id": 10011112,
"qt": "auth",
"ver": "1.0",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"status": 0,
"message": "success",
"ack": 10011111,
}
}

字段说明:

字段名类型说明取值

status

int

鉴权返回的状态码,0代表鉴权成功,其他值均为鉴权失败,详细原因请参考message字段。

举例:

0

message

string

鉴权的错误信息。

举例:

success

ack

int

确认id,取值为上报鉴权请求消息中公共字段id。

举例:

10011111

3.2 使用加密传输
在发送鉴权请求时,客户端生成随机非对称rsa密钥对,在进行鉴权时指定enc字段为2,并将公钥进行urlencode上传。

例如客户端发送:

{
"id": 10011111,
"qt": "auth",
"ver": "1.0",
"prt": 1,
"enc" : 2, // enc指定为2,代表这是一个带有rsa公钥的鉴权请求
"ts": 1696738704000,
"data": {
"ak": "xxxxxx",
"entity_id": 111111,
"rsa_puc": "gdfvfdnjidss" // 公钥记得通过urlencode,将换行符等特殊字符处理下
}
}
服务端鉴权通过后,在返回鉴权成功消息时会生成aes对称密钥B和向量iv作为data部分的一个字段,并将整个data使用用户上传的公钥A进行rsa加密后进行base64编码。此时enc字段同样为2。
{
"id": 10011111,
"qt": "auth",
"ver": "1.0",
"prt": 1,
"enc" : 2, // enc指定为2,代表需要用客户端保存的rsa私钥解密
"ts": 1696738704000,
"data": "vvvvvvvvvvvvvvvvvvvvvvvv" // rsa公钥加密后base64encode的数据,需要先base64decode然后rsa私钥解密
}
// data 用rsa私钥解密后的json结构
{
"status": 0,
"message": "success",
"aes_key": "xxxxxxxxxxxxxxxxxxxxxxxx",
"aes_iv": "xxxxxxxxxxxxx",
"ack": 1111,
}
客户端收到数据后,将data部分先进行base64decode,之后使用rsa私钥解密,拿到对称密钥B+iv,后续通讯都使用aes对称密钥B进行加解密并base64通信,并将enc字段设置为3。
{
"id": 1234,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 3, // enc指定为3,使用aes对称加密数据传输
"ts": 1696738704000,
"data": "zxcvvbddddcccccasdasdgfg" // 先base64decode,然后aes解密
}

4 巡航服务消息协议
4.1 消息类型说明
消息类型说明

loc

用于车辆上报位置信息

route

用于车辆上报路线信息(需使用百度路线规划服务或SDK规划路线)

path

用于服务端下发车辆前方的局部路网拓扑结构

link

用于服务端下发局部路网的属性信息,如道路等级、限速等

position

用于服务端下发车辆位置

slope

用于服务端下发坡度数据

curvature

用于服务端下发曲率数据

lane_arrow

用于服务端下发车道级箭头数据

camera_list

用于服务端下发电子眼数据

traffic_light

用于服务端下发红绿灯数据

traffic

用于服务端下发路况数据

event

用于服务端下发动态事件数据

route_info

用于服务端下发全量路线信息

ack

用于服务端确认车端消息已经被成功处理

4.2 上报位置(loc)

车辆启动时与服务端建立连接,然后开始按固定频率上报车辆位置数据。
消息内容举例:

{
"id": 1234,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"loc": {
"x": 116.324523,
"y": 40.345612,
"ts": 1696738704000,
"coordtype": 1,
"speed": 23,
"dir": 55,
"car_dir": 60,
"link_id": 1111111110,
"link_offset": 11.0,
"link_index": 1,
}
}
}

字段说明:

字段名字段含义类型必选默认值取值

loc

x

经度

double(-180.0 , +180.0)

是

举例:

133.11123434

y

纬度

double(-90.0 , +90.0)

是

举例:

43.234234545

ts

定位时的时间

毫秒时间戳

是

coordtype

坐标类型

int

否

1

1:wgs84 3:gcj02 5:bd09ll

speed

速度,单位:m/s

double

是

dir

方向

int

是

取值规则:

范围为[0,359],0度为正北方向,顺时针

car_dir

投影的link方向

double

否

link_id

当前车所在link_id

int64

否

此字段配合导航sdk使用,用于实现本服务与导航位置的同步

link_offset

当前车所在link的偏移

double

否

link_index

当前link所在导航路线(由linkid按顺序构成的数组)的下标

int

否

match_route_state

定位点与路线的匹配状态

int

否

举例:3(导航绑路)、5(巡航绑路)

此字段配合导航sdk使用,用于实现本服务与导航位置的同步

route_id

当前位置所在的导航路线id

string

否,上传link_id时必选

需与4.3上报路线中的route_id一致,否则该定位点会被丢弃

流量消耗:使用json格式每条数据大小约200Byte,按1hz上报,1小时流量消耗约720kb。
4.3 上报路线(route)

如果使用百度webapi或sdk规划了路线(注意官网公版部分字段没有返回,需要通过商务合作获取特定版本),可以传入路线,服务将按照规划的路线进行探路。

注意当发生偏航重新规划路线后,需要重新传入路线。

消息内容举例:

{
"route": {
"type": 2,
"session_id": "{\"codr\":\"02CDB5B2DA65BC9FEEA90FEF56D619CF|0_31.222520,121.627280_31.225630,121.642410_81\",\"loc\":\"nj\"}@654",
"mrsl": "\"g\":\"0_1\",\"w\":\"AAAA\",\"p\":\"1\",\"label\":\"8\",\"s\":\"0\",\"seq\":\"0\"",
"route_id": "17128094712920",
"steps": [],
"route_rsp_field": ["link", "slope"],
"linkids": [16187785020, 15238935340, 15239274420, 15239121070, 15238942420, 16315118100, 16600787520, 16600787510, 16600787490, 16600787500, 16532849300, 16532849290, 16505147200, 16869868490, 16869868840, 16532849280],
"linklength": [118, 337, 17, 21, 122, 298, 28, 29, 21, 3, 78, 12, 12, 293, 61, 38]
}
}

字段说明:

字段名字段含义类型必选默认值取值

route

type

标识是导航还是巡航

int

是

1

1 巡航

2 导航

route_rsp_field

需要下发全量路线的哪些信息

string数组

否

空数组

link 路网详情数据

slope 坡度数据

curvature 曲率数据

traffic 实时路况

truck_limit 货车限速

session_id

算路的session标识,使用百度导航sdk或在线API请求路线规划时返回的session_id

string

否,当type=2是必选

举例:

{\"codr\":\"1207d9c0c250284424ef706cca2f7d96_40.013685656315,116.37508568364_39.99299038189,116.34006048598_6\",\"loc\":\"nj\"}@614

mrsl

一次算路session中可能包含多条路线,该字段为路线的唯一标识,使用百度导航sdk或在线API请求路线规划时返回的路线mrsl

string

否,当type=2是必选

举例:

\"g\":\"0_1\",\"w\":\"AAAA\",\"p\":\"1\",\"label\":\"8\",\"s\":\"0\",\"seq\":\"0\"

steps

路线的分段,使用百度导航sdk或在线API请求路线规划时百度路线中返回的steps

数组

否,当type=2是必选

每项为一个对象,其中 path 为该段路线的坐标串,格式:经度,纬度;经度,纬度;…(GCJ02坐标)

route_id

路线的唯一标识,使用百度导航sdk或在线API请求路线规划时百度路线中返回的route_id

string

否,当type=2是必选

linkids

导航路线的linkid序列

int数组

否,当type=2是必选

[16536187650, 15741623502, 15741633360, 15741637210, 16611341900]

linklength

导航路线的linkid序列所对应的每段link的长度,传入后用于服务端判断导航起点,途经点的位置

数组

否,当type=2是必选

4.4 下发局部路网
4.4.1 下发局部路网拓扑

当车辆前方出现路口时,服务端下发车辆前方的道路拓扑。
消息内容举例说明:

{
"id": 1234,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 1,
"ts": 16445465677,
"data": {
"version": 321,
"route_id": "17128094712920",
"path": [
{
"id": 8,
"pid": 0,
"offset": 0,
"type": 0,
"is_complex_intersection": 1,
"relative_probability": 1,
"is_part_of_route": true,
"is_last_stub_at_offset": true,
"turn_angle": 22.11,
"pathclass": 1,
"lanenums2e": 3,
"lanenume2s": 0,
"right_of_way": 1,
"form_of_way": 0
},
{
"id": 9,
"pid": 8,
"offset": 50,
"type": 1,
"is_complex_intersection": 1,
"relative_probability": 1,
"is_part_of_route": true,
"is_last_stub_at_offset": true,
"turn_angle": 22,
"pathclass": 1,
"lanenums2e": 3,
"lanenume2s": 0,
"right_of_way": 1,
"form_of_way": 0
},
{
"id": 10,
"pid": 8,
"offset": 50,
"type": 0,
"is_complex_intersection": 1,
"relative_probability": 1,
"is_part_of_route": true,
"is_last_stub_at_offset": true,
"turn_angle": 170,
"pathclass": 1,
"lanenums2e": 3,
"lanenume2s": 0,
"right_of_way": 1,
"form_of_way": 0
},
{
"id": 11,
"pid": 8,
"offset": 50,
"type": 0,
"is_complex_intersection": 1,
"relative_probability": 1,
"is_part_of_route": true,
"is_last_stub_at_offset": true,
"turn_angle": 90,
"pathclass": 1,
"lanenums2e": 3,
"lanenume2s": 0,
"right_of_way": 1,
"form_of_way": 0
},
{
"id": 6,
"pid": 8,
"offset": 50,
"type": 0,
"is_complex_intersection": 1,
"relative_probability": 1,
"is_part_of_route": true,
"is_last_stub_at_offset": true,
"turn_angle": 0,
"pathclass": 1,
"lanenums2e": 3,
"lanenume2s": 0,
"right_of_way": 1,
"form_of_way": 0
}
]
}
}

上述消息表示如下图所示的车辆前方道路预测:

车辆行驶在红色path_id=8的main path上,该path为预测行驶路径,当遇到路口时,会优先选择直行作为预测方向继续往前探路;
从main path上延伸出path_id=9、path_id=10、path_id=11三条sub path,表示与main path有直接拓扑关系的道路;
路口处会从main path上摘取一段作为脱出path,其path_id=6,表示主路的延续。
假如车辆在路口前40m处,以此构建拓扑模型:

  • 以path8的起点为零点,path9、path10、path11位于path8的offset 50m处;

  • 车辆当前位置(将通过position消息下发)在path8上,位于path8的offset 10m处。

通过计算50m - 10m = 40m,可知车辆前方40m处有一个路口,分别延伸出path 9、10、11三条道路,车辆将沿着主路继续行驶。
字段说明:

字段名字段含义类型取值

path

id

道路的id

int

pid

道路的父级道路id

int

offset

道路在父级道路上的偏移

double

单位:m

type

道路类型

int

0: 可通行path

1: 汇入path

2: 父path的延续

is_complex_intersection

当前路口是否是复杂路口

bool

true:是复杂路口

false:不是复杂路口

该路口是否包含交叉点内link,如下图所示,图1包含交叉点内link,认为是复杂路口。图2则不是复杂路口

relative_probability

车辆走到当前path起点所在路口时,进入当前path的概率

double

is_part_of_route

当前path是否属于导航路线

bool

true:属于导航路线

false:不属于导航路线

is_last_stub_at_offset

当前path是否是父path的最后一个path

bool

turn_angle

子path和父path延长线的夹角

double

0-360

如图所示:path 1为父path,path 2为子path,angle a为车辆视野前方子path 和 父path的延长线的夹角。

pathclass

道路功能等级

int

1 - 5

请看附录A

lanenums2e

路口沿着行驶方向的车道数

int

lanenume2s

路口汇入车道数量

int

right_of_way

路权

int

0: 行驶入这个路口的车辆有更高优先级

1: 行驶入这个路口的车辆需要给其他车辆让行

2: 未知

form_of_way

道路形态

int

0:未知

1:高速、城快以及部分国道、省道等连接或穿过主要大城市的,承担高流量和高速度的交通运行的道路。

2:多车道道路

3:单车道道路

4:环岛

version

当前局部路网的版本,当车偏离预测行驶的路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线id

string

4.4.2 下发局部路网拓扑附带道路基础属性

下发局部路网上每条道路的属性,如道路等级、限速等。
消息内容举例说明:

{
"id": 1234,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"version": 321,
"route_id": "17634593574890",
"max_send_length": 2000,
"path": [
{
"id": 1,
"pid": 0,
"offset": 0,
"type": 0,
"is_complex_intersection": 1,
"relative_probability": 1,
"is_part_of_route": true,
"is_last_stub_at_offset": true,
"turn_angle": 22.11,
"pathclass": 1,
"lanenums2e": 3,
"lanenume2s": 0,
"right_of_way": 1,
"form_of_way": 0
}
],
"link": [
{
"path_id": 1,
"link_id": 123234411,
"offset": 20,
"length": 100,
"distance_to_pos": 10,
"road_grade": 1,
"form_of_way":1,
"road_name":"沪杭公路辅路",
"pathclass": 1,
"kind": [
261,
264
],
"uflag": 1,
"lanenum": 3,
"lanenume2s": 1,
"speed_limit": 60,
"speed_limit_type": 1,
"shape": [
[114.12341, 36.13211],
[114.12342, 36.13212],
[114.12343, 36.13213],
[114.12344, 36.13214],
],
"is_complex_intersection": 1,
"relative_probability": 1,
"is_part_of_route": true,
"ownership": 1,
"link_index": 1
}
]
}
}

字段说明:

字段名字段含义类型取值

path

id

道路的id

int

pid

道路的父级道路id

int

offset

道路在父级道路上的偏移

double

单位:m

type

道路类型

int

0: 可通行path

1: 汇入path

2: 父path的延续

is_complex_intersection

当前路口是否是复杂路口

bool

true:是复杂路口

false:不是复杂路口

该路口是否包含交叉点内link,如下图所示,图1包含交叉点内link,认为是复杂路口。图2则不是复杂路口

relative_probability

车辆走到当前path起点所在路口时,进入当前path的概率

double

is_part_of_route

当前path是否属于导航路线

bool

true:属于导航路线

false:不属于导航路线

is_last_stub_at_offset

当前path是否是父path的最后一个path

bool

turn_angle

子path和父path延长线的夹角

double

0-360

如图所示:path 1为父path,path 2为子path,angle a为车辆视野前方子path 和 父path的延长线的夹角。

pathclass

道路功能等级

int

1 - 5

请看附录A

lanenums2e

路口沿着行驶方向的车道数

int

lanenume2s

路口汇入车道数量

int

right_of_way

路权

int

0: 行驶入这个路口的车辆有更高优先级

1: 行驶入这个路口的车辆需要给其他车辆让行

2: 未知

form_of_way

道路形态

int

0:未知

1:高速、城快以及部分国道、省道等连接或穿过主要大城市的,承担高流量和高速度的交通运行的道路。

2:多车道道路

3:单车道道路

4:环岛

link

path_id

当前link所在的path id

int

link_id

当前link 的 id

int

offset

当前link起点在当前path的offset

double

length

当前link长度

double

distance_to_pos

当前link起点到车辆位置的距离

正数:车辆未驶过link起点

负数:车辆已驶过link起点

double

road_grade

路段的道路等级

int

高速道路

0x00

城市高速

0x01

国道(城市主要主干道)

0x02

省道(城市主干道)

0x03

县道(城市次干道)

0x04

乡镇村道(城市支路)

0x06

其它道路

0x08

特服道路

0x09

轮渡

0x0a

步行道路

0x0b

pathclass

道路功能等级

int

1 - 5

请看附录A

kind

后两位表示道路形态

示例:

如下发的值为1541

1)转化为16进制为0x605

2)0x605 & 0x00FF = 0x05

3)则道路形态为IC

array

无属性

0x01

上下线分离

0x02

交叉点内link

0x04

IC

0x05

JCT

0x03

隧道

0x0f

服务区

0x07

停车区

0x06

辅路

0x0a

环岛

0x00

桥

0x08

步行街

0x09

匝道

0x0b

全封闭道路

0x0c

未定义交通区域

0x0d

POI连接路

0x0e

公交专用道

0x11

右转专用道

0x12

风景路线

0x13

区域内道路

0x14

左转专用道

0x15

调头口

0x16

主辅路出入口

0x17

停车位引导路

0x19

虚拟连接路

0x18

停车场出入口连接路

0x1a

通往加油站的连接路

0x1b

避险车道

0x1c

货车专用道

0x1d

非标环岛

0x1e

门前道路

0x1f

跨线天桥

0x20

跨线地道

0x21

立交桥

0x22

出租车专用道

0x23

客运车专用道

0x24

盘山路

0x25

uflag

是否是城区

int

1城区

0非城区

lanenum

通行方向的车道数量

int

lanenume2s

反向通行车道数量

int

speed_limit

路段的限速

int

单位:km/h

speed_limit_type

路段限速类型

int

现场标牌

1

理论限速

2

区间限速

3

未调查

4

shape

形状点

array

经纬度数据,返回为GCJ02坐标

is_complex_intersection

当前link是否位于复杂路口

bool

true:是复杂路口

false:不是复杂路口

该路口是否包含交叉点内link,如下图所示,图1包含交叉点内link,认为是复杂路口。图2则不是复杂路口

relative_probability

车辆行驶到当前link的概率

double

is_part_of_route

当前link是否在导航路线上

bool

true:属于导航路线

false:不属于导航路线

ownership

所有权

int

0公有道路

1私有道路

link_index

当前link所在导航路线(由linkid按顺序构成的数组)的下标

int

form_of_way

当前link所属道路形态

int

0:未知

1:高速、城快以及部分国道、省道等连接或穿过主要大城市的,承担高流量和高速度的交通运行的道路。

2:多车道道路

3:单车道道路

4:环岛

road_name

当前link所属的道路名称

string

version

当前局部路网的版本,当车偏离预测行驶的路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线id

string

max_send_length

最大下发距离

int

米

4.5 下发终端相对位置

消息内容举例:

{
"id": 1234,
"qt": "horizon",
"ver": "1.0",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"route_id": "17128094712920",
"position": {
"path_id": 1,
"offset": 10.234,
"speed": 12,
"dir": 30.0,
"gps_loc": [
116.324523,
40.34567
],
"gps_loc_time": 1696738704000,
"rectify_loc": [
116.324523,
40.34567
],
"rectify_loc_time": 1696738704000,
"link_id": 1233211231,
"link_offset": 3.0,
"probability": 0.8,
"link_dir": 29.0,
"elevated": 0
},
"version": 111
}
}

字段说明:

字段名字段含义类型取值

position

path_id

车辆所在的道路id

int

offset

车辆在当前path的偏移

double

单位:m

gps_loc

上报的gps坐标

array

坐标类型GCJ02

gps_loc_time

gps坐标产生时的毫秒时间戳

int

rectify_loc

上报的gps坐标经过绑路后的纠偏坐标

array

坐标类型GCJ02

rectify_loc_time

收到上报时的毫秒时间戳

int

dir

航向

double

取值范围[0,360)

speed

速度,单位:m/s

double

link_id

当前车辆所在的linkid

int

link_offset

当前车辆在当前link的偏移

double

probability

车辆所在当前位置的置信度

double

link_dir

车辆所在link的方向

double

elevated

当前link是否为高架路

int

0非高架

1高架

version

当前局部路网的版本,当车偏离预测行驶的路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线id

string

4.6 下发动态数据

当车辆前方出现路口时,服务端先下发路线预测,完成后紧接着下发路线上的动态数据。

4.6.1 红绿灯数据

消息内容举例:

{
"enc": 1,
"id": 25,
"prt": 1,
"qt": "horizon",
"ts": 1709009041280,
"ver": "1.0",
"data": {
"route_id": "17089338650090",
"traffic_light": [
// 一个红绿灯可能有多个方向的灯,例如直行、左转、右转等,返回为一个数组
{ // 第一个灯
"comfrom": 0,
"distance_to_pos": 358.16125679016113,
"loc": [
121.64141865740267,
31.266692544110214
],
"offset": 590.156005859375, // 灯的位置,offset相同表示同一个路口的红绿灯
"on_route": 1,
"path_id": 8,
"link_id": 1233211231,
"road_flow_direction": "12", // 灯管控的通行方向,此处为左转灯
"simple_eight_direction":"12", // 左转
"status": [ // 只有车辆前方一定范围内的灯会下发灯态,路线上其他的灯该数组为空
// 第一个周期
{
"count_down": 56, // 倒计时56秒
"lamp_status": 21, // 红灯状态
"period": 56 // 置信区间为56秒,56秒后切下一个灯态,即使倒计时没到0也切
},
// 第二个周期
{
"count_down": 23, // 倒计时23秒
"lamp_status": 23, // 绿灯状态
"period": 23 // 置信区间为23秒,23秒后切下一个灯态
},
// 第三个周期
{
"count_down": 10000, // 倒计时未挖掘出来
"lamp_status": 22, // 黄灯状态
"period": 4 // 置信区间为4秒,4秒后切下一个灯态
},
// 第四个周期
{
"count_down": 93, // 倒计时93秒
"lamp_status": 21, // 红灯状态
"period": 93 // 置信区间为93秒,93秒后切下一个灯态
}
],
"timestamp": 1709009028
},
{ // 第二个灯
"comfrom": 0,
"distance_to_pos": 358.16125679016113,
"loc": [
121.64141865740267,
31.266692544110214
],
"offset": 590.156005859375,
"on_route": 0,
"path_id": 8,
"link_id": 1233211231,
"road_flow_direction": "99", // 此处没有挖出方向,实际是个掉头的灯
"simple_eight_direction":"3", // 掉头
"status": [
{
"count_down": 10000, // 没有挖掘出倒计时的情况
"lamp_status": 11, // 灭灯状态
"period": 5 // 置信区间为5s内可信
},
{
"count_down": 10000,
"lamp_status": 21,
"period": 0
},
{
"count_down": 10000,
"lamp_status": 23,
"period": 0
},
{
"count_down": 10000,
"lamp_status": 11,
"period": 0
}
],
"timestamp": 1709009028
}
],
"version": 21
}
}

字段说明:

字段名称字段含义字段类型取值

traffic_light

path_id

红绿灯所在的道路id

int

link_id

当前红绿灯所在的linkid

int

offset

红绿灯在道路上的偏移,单位:m

double

distance_to_pos

红绿灯距离车辆的位置,单位:m

double

timestamp

红绿灯服务返回的unix时间戳

int

与本地的时间戳作diff,根据diff差值找对应的period区间。假设有三个 period 区间,第一个 period 为 15 秒,第二个 period 为 20 秒,第三个 period 为 35 秒。若计算得出的差值(diff)为 20 秒,此时该差值刚好越过了第一个 period 区间,进入了第二个 period 区间。在这种情况下,应该取第二个 period 对应的 count_down 值,然后再减去 5 秒作为最终的倒计时显示。

// 0 为无效值(未挖掘出数据,指此处有灯,但无有效灯态)

road_flow_direction

行驶流向

string

// 11 直行

// 12 左转

// 99 其他

// 00 无效值(未挖掘出数据,指此处有灯,但无有效灯态)

simple_eight_direction

八方向字段

string

八方向枚举值如下:

11:直行

12:左转

2:右转

3:掉头 (非挖掘,不保证准确)

4:左前方

5:左后方

6:右前方

7:右后方

使用方法:如果判断road_flow_direction的值是99,则可以再根据该字段进一步判断具体的方向。可提升右转、掉头灯的出灯率

// 00 无效值(未挖掘出数据,指此处有灯,但无有效灯态)

comfrom

数据来源

int

0:交管部门,1:挖掘,2:众源;-1 无效值 (未挖掘出有效灯态)

loc

经纬度

array

返回坐标使用gcj02坐标系

on_route

导航状态下:是否在主路径上

巡航状态下:是否在预测路径上

int

1 是

0 否

-1 无效值,(未挖掘出有效灯态)

status

灯态数组,当该数组为空时,表明没有挖到红绿灯的灯态

array

period

当前灯置信区间,单位秒,例如5表示5秒内可信

int

置信区间为x秒,x秒后切下一个灯态,即使倒计时没到0也切。通常情况倒计时和置信区间值相同,但是有倒计时挖掘不出来情况,必须根据置信区间切换灯态

lamp_status

信号灯灯态

int

// 11 灭灯

// 21 红灯

// 22 黄灯

// 23 绿灯

// 24 黄闪(现实生活中有常绿灯、常黄闪灯、常灭灯等场景,现在对于这些场景也会有部分召回,统一以黄闪的灯态进行下发)

count_down

倒计时秒数

int

version

当前局部路网的版本,当车偏离预测行驶的路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线id

string

status字段为一个数组,代表一段连续时间内的多个灯态周期:

使用时需要根据获取到数据时的时间戳,找到当前时刻可信区间内的灯态。
需要注意不是每个路口都能时刻挖到红绿灯数据,下发的红绿灯有可能是下个路口甚至下下个路口的。

如上图车辆在offset 40m处,offset 50m处有一个路口,offset 1000m处有一个路口,有可能offset 50m路口由于缺少车辆轨迹无法挖掘到红绿灯动态,因此只能下发offset 1000m处路口红绿灯动态,当offset 50m处路口挖掘到红绿灯动态后,服务端会主动推送。

4.6.2 动态事件数据

消息内容举例:

{
"id": 10011111,
"qt": "horizon",
"ver": "1.0",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"version": 321,
"route_id": "17128094712920",
"event": [
{
"path_id": 1,
"offset": 15.0,
"length": 20.0,
"distance_to_pos": 20,
"type": 1,
"type_desc": "封路",
"title": "道路施工",
"content": "当前道路因施工封闭",
"status": 6,
"start_time": 1617073042,
"offline_time": 1617073042,
"update_time": 1617073042,
"id": 1695624088389632,
}
]
}
}

字段说明:

字段名字段含义类型取值

event

path_id

事件所在的道路id

int

offset

事件所在道路上的偏移,单位:m

double

length

事件影响的道路长度,单位:m

double

distance_to_pos

距离车辆的距离

double

type

事件类型

int

请看附录D

type_desc

事件类型描述

string

title

事件标题

string

content

事件内容

string

status

事件状态

int

6:正常发布

7:事件已下线

start_time

事件开始时间

int

秒时间戳

offline_time

事件下线时间

int

秒时间戳

update_time

事件更新时间

int

秒时间戳

id

事件的唯一标识

int

version

当前局部路网的版本,当车偏离预测行驶的路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线id

string

4.6.3 实时路况数据

消息内容举例:

{
"id": 10011111,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"version": 321,
"route_id": "17128094712920",
"traffic": [
{
"path_id": 1,
"offset": 10,
"length": 40,
"status": 1,
"speed": 10
}
]
}
}

字段说明:

字段名字段含义类型取值

traffic

path_id

路况所在的道路id

int

offset

路况所在道路上的偏移

double

单位:m

length

路况长度

double

单位:m

speed

平均车速

double

单位:km/h

status

拥堵情况

int

1 畅通

2 缓行

3 拥堵

4 非常拥堵

version

当前局部路网的版本,当车偏离预测行驶的路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线id

string

4.7 下发坡度数据

消息内容举例:

{
"id": 10011111,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"version": 2,
"route_id": "",
"slope": [
{
"path_id": 1,
"offset": [1, 20, 30, 40, 70, 70, 90],
"step": [511,513,511,509,489,1023,511],// 两个70,第二个70是中断点,值是1023,指的是从70到90之间无坡度数据
}
]
}
}

字段说明:

字段名字段含义类型取值

slope

path_id

坡度所在的道路id

int

offset

每个坡度点在道路起点的偏移

array

offset和step成对存在,一一对应

step

每个坡度点的阶梯值

array

offset和step成对存在,一一对应

version

当前局部路网的版本,当车偏离预测行驶的路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线id

string

坡度数据按一米间隔进行下发,offset 为每个坡度点在道路起点的偏移。由于数据量较大,对相邻的坡度点,如果值相同则进行合并。特殊的,当 offset 处的坡度值未知时,使用 1023 占位。合并示例如下:
// 合并前
{
"slope": [
{
"path_id": 1,
"offset": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
"step": [501, 501, 501, 502, 503 ,501, 501, 501, 501, 1023, 1023, 1023]
}
]
}
// 合并后
{
"slope": [
{
"path_id": 1,
"offset": [1, 4, 5, 6, 10],
"step": [501, 502, 503, 501, 1023]
}
]
}

坡度计算方法为使用ADAS后一属性点与当前属性点之间的距离和高程变化值作为反三角函数(arctanα)的输入,计算当前属性点的坡度值(弧度制),如下图所示。

上坡即下一个点的高程比当前点的高程大(高度为正),坡度为正。
下坡即下一个点的高程比当前点的高程小(高度为负),坡度为负。
根据测绘法规要求,坡度产品按0.2°(角度)分级,输出的值为当前分级的中间值。
最终结果按照ADASv2协议输出,转换公式为:slope = 协议下发值 * 0.1 - 51.1
根据ADASv2协议,协议下发值使用10bit表示,即有效范围是0-1023,其中1023为特殊标识,表示当前位置到下一个有效值间坡度未知
例如:
若,高程差h = 1m,水平距离s = 100m
坡度角α = atan(1 / 100) = 0.009999667(弧度),换算为角度( * 180 / π )为0.572938707°
按照分级区间,输出为0.5°,换算为弧度( * π / 180 )为0.008726646(弧度)
转换为坡度百分比slope: tan(α) * 100 = 0.872686764(单位,%)
协议下发值 =(slope + 51.1)/ 0.1 =(0.872686764 + 51.1)/ 0.1 = 519.7 ,实际下发520
4.8 下发曲率数据

消息内容举例:

{
"id": 10011111,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"version": 2,
"route_id": "",
"curvature": [
{
"path_id": 1,
"offset": [1, 2, 4, 7,7,20],
"step": [511,514,520,544,1023,511],//两个7,第二个7是中断点,值是1023,指的是从7-20之间无数据。
}
]
}
}

字段说明:

字段名字段含义类型取值

curvature

path_id

曲率所在的道路id

int

offset

每个曲率点在道路起点的偏移

array

offset和step成对存在,一一对应

step

每个曲率点的阶梯值

array

offset和step成对存在,一一对应

version

当前局部路网的版本,当车偏离预测行驶的路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线id

string

曲率数据按一米间隔进行下发,offset 为每个曲率点在道路起点的偏移。由于数据量较大,对相邻的曲率点,如果值相同则进行合并。特殊的,当 offset 处的曲率值未知时,使用 1023 占位。合并示例如下:
// 合并前
{
"curvature": [
{
"path_id": 1,
"offset": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
"step": [511, 511, 511, 514, 520, 511, 511, 511, 511, 1023, 1023, 1023]
}
]
}
// 合并后
{
"curvature": [
{
"path_id": 1,
"offset": [1, 4, 5, 6, 10],
"step": [511, 514, 520, 511, 1023]
}
]
}

曲率计算采用轨迹拟合曲线的曲率作为道路线对应位置的曲率。为保证拟合曲线平滑,采用滑动窗口的机制,对轨迹做三阶多项式曲线拟合。在得出拟合曲线之后,再在属性点位置进行采样,获得道路线各属性点的曲率值,如下图所示。

曲率计算公式:

曲率的单位为1/m,属性点间距为1m,沿通行方向左转为正值,沿通行方向右转为负值。曲率经过第一步计算后得到浮点数,进一步四舍五入处理成保留8位小数的曲率值。曲率字段最终表达的是曲率的分级值,按照0.00001为一级进行分级表达。

输出值为当前分级区间的最大值。

协议输出方式:

4.9 下发交通警示信息

消息内容举例:

{
"id": 10011111,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"version": 321,
"route_id": "17128094712920",
"warning_info": [
{
"path_id": 1,
"type_code": 32,
"offset": 34.23,
"loc": [
116.324523,
40.345612
],
"dir": 1,
"link_id": 1233211231
}
]
}
}

字段说明:

字段名字段含义类型取值

warning_info

path_id

警示信息所在的道路id

int

type_code

警示类型代码

int

枚举值请看:附录B

offset

警示牌所在path的offset

double

loc

警示牌坐标

array

dir

通行方向

int

link_id

当前警示信息所在的linkid

int

version

当前局部路网的版本,当车偏离预测行驶的路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线id

string

4.10 确认消息

车辆和服务端在双向通信时,用于反馈哪些消息已经收到了,已经收到的消息,如果没有变化将不会重复发送。
消息内容举例:

{
"id": 10011111,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"ack": [
1111,
2222,
3333
],
}
}

字段说明:

字段名字段含义类型取值

ack

收到的消息的id

array

4.11 下发全量路线信息

通过百度导航SDK或路线规划API规划路线,上报路线消息后,服务端可通过该消息下发路线上的全量属性数据。
消息内容举例:

{
"id": 10011111,
"qt": "horizon",
"ver": "1",
"prt": 1,
"enc" : 1,
"ts": 1696738704000,
"data": {
"route_info": {
"route_id": "17128094712920",
"link": [
{
"kind": [
2,
12
],
"length": 69.0,
"link_id": 16283162590,
"offset": 4824.0,
"road_grade": 0,
"shape": [
[
121.643903,
31.23782
],
[
121.6439024,
31.2376064
],
[
121.6439046,
31.2371984
]
],
"speed_limit": 100,
"speed_limit_type": 1,
"traffic_status": {
"fullfill": 0,
"speed": 76.0,
"status": 1,
"update_time": 1747656895
},
"truck_limit_info": {
"truck_speed_limit": {
"speed": 80
}
}
}
],
"slope": [
{
"path_id": 1,
"offset": [1, 2, 3, 4, 5, 6, 7],
"step": [3, 3, 3, 3, 3 ,3, 3],
}
],
"curvature": [
{
"path_id": 1,
"offset": [1, 2, 3, 4, 5, 6, 7],
"step": [3, 3, 3, 3, 3, 3, 3],
}
]
}
}
}
其中,slope 和 curvature 以路线的起点为零点,offset 为距离路线起点的距离;数据格式及合并规则同 4.7 下发坡度数据、4.8 下发曲率数据。
4.12 下发车道级箭头信息
车道级箭头信息简称车信,后续用车信标识车道级箭头信息。(固定数据增量下发,非实时更新)

消息内容举例:

{
"enc": 1,
"id": 25,
"prt": 1,
"qt": "horizon",
"ts": 1709009041280,
"ver": "1.0",
"data": {
"route_id": "",
"version": 4,
"lane_arrow": [
{
"path_id": 8,
"offset": 180.2,
"linkid": 123450,
"direction": "1,13,12",
"loc": [116.312345, 39.987654],
"distance_to_pos": 50.5,
"lane_type":"1,1,1"
},
{
"path_id": 8,
"offset": 245.8,
"linkid": 123452,
"direction": "1,13",
"loc": [116.31321, 39.988901],
"distance_to_pos": 116.1,
"lane_type":"1,1"
}
]
}
}

字段说明:

字段名字段含义字段类型取值

lane_arrow

path_id

车信所在的道路 ID

int

linkid

当前车信所在的 link ID

int

offset

车信在道路上的偏移,单位:米

double

distance_to_pos

当前车信起点到车辆位置的距离

double

loc

车信经纬度坐标

array

车信投影坐标(统一为国测局坐标)

direction

车道箭头信息

string

记录实际路口处或道路上的进入LINK到所有退出LINK的车道信息

①由一个或多个英文半角车信代码构成,如下:

0空

1直

2左

3右

4掉

5左斜前

6右斜前

7右掉

lane_type

车道箭头类型

string

车道功能类型,从内侧往外侧记录。多个代码之间用“|”分隔,不同车道之间用半角英文“,”号分隔。

具体见附录C

version

当前局部路网的版本号,当车偏离预行驶路线后局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线 ID

string

使用方法:
车道级箭头信息中,每个 lane_arrow 都包含 path_id、offset 和 distance_to_pos:path_id 为车信所在的道路 ID,offset 为车信在该道路上的偏移位置(单位:米),distance_to_pos 为车信起点到当前车辆位置的距离。终端同时会收到车辆实时位置 position 信息,其中的 path_id 和 offset 分别表示车辆当前所在的道路 ID,以及车辆在该道路上的偏移位置。

两类数据都带有 version 字段,用于标识当前视野的有效版本号。使用时需特别注意:位置数据与车道级箭头数据必须基于同一个 version、path_id 进行匹配和计算,否则结果可能不准确。

车道级箭头信息属于静态数据,不会实时刷新,因此采用增量下发机制:构造 horizon 视野时,先下发前方约 2 公里范围内的 lane_arrow 数据;此后车辆每前进约 200 米,再增量下发前方约 200 米范围内的新数据。因此,推荐在使用箭头数据时,优先用当前 position 中的 path_id 和 offset 去匹配车道级箭头信息中的 path_id 和 offset,从而确定当前应关注的车信位置;匹配时同样要求两者的 version 一致。
此外,也可以基于 distance_to_pos 实时计算车辆与车信之间的剩余距离:在 version、path_id 一致的前提下,用车辆 offset 的变化量对 distance_to_pos 做实时扣减,即可得到最新距离。例如,某条箭头数据下发时 distance_to_pos=1800、path_id=8、offset=1850,此时车辆位于 path_id=8、offset=50;下一时刻车辆仍在同一路径上,且 offset 更新为 90,则车辆与该车信的实际距离为 1800 - (90 - 50) = 1760 米。

4.13 下发电子眼信息
(固定数据增量下发,非实时更新)

消息内容举例:

{
"enc": 1,
"id": 25,
"prt": 1,
"qt": "horizon",
"ts": 1709009041280,
"ver": "1.0",
"data": {
"route_id": "",
"version": 2,
"camera_list": [
{
"distance_to_pos": 100.3,
"type": 1,
"speed_limit": 80,
"loc": [116.404,39.915],
"linkid": 123456789,
"offset": 300.2315,
"path_id": 8,
"angle":86
},
{
"distance_to_pos": 500.2,
"type": 2,
"speed_limit": 60,
"loc": [116.405,39.916],
"linkid": 123456790,
"offset": 800.7834,
"path_id": 8,
"angle":177
}
]
}
}

字段说明:

字段名称字段含义字段类型说明

camera_list

distance_to_pos

摄像头离当前车辆位置的距离(单位:米)

double

type

摄像头类型

int

1 限速摄像头

2 闯红灯摄像头

3 违章监控摄像头

4 压线拍照

5 区间限速开始摄像头

6 非机动车道摄像头

8 公交车道摄像头

9 区间限速结束摄像头

11 单向道

12 禁止左转

13 禁止右转

14 禁止掉头

15 禁行路段

16 外地车限行

17 应急车道摄像头

20 卡口摄像头

21 声纳电子眼

22 车间距违法抓拍摄像头

26 移动测速

27 移动电子警察

28 礼让行人

30 虚实线压线拍照(左侧不可跨越)

31 虚实线压线拍照(右侧不可跨越)

38 可变车道监控

39 滥用远光灯监控

40 可变限速测速

41 隐蔽限速拍照

42 区间限时监控起点

43 区间限时监控终点

44 专用车道监控

47 不按导向车道行驶监控

48 逆向行驶

49 不按规定使用灯光

50 未系安全带监控

51 违章使用电话监控

53 测慢速摄像头

54 区间测慢速起点

55 区间测慢速终点

58 车道级测速

99 违法拍照

speed_limit

摄像头监控路段的限速值(单位:km/h)

int

单位为千米每小时,当 type=1 时,该字段有值,但不是必须

loc

摄像头经纬度坐标(经度,纬度)

array

统一为国测局坐标

linkid

摄像头所在道路的 link ID

int

offset

摄像头在道路上的偏移,单位:米

double

path_id

摄像头所在道路 ID

int

angle

摄像头照射角度,正北方向为0度,顺时针方向

int

0-359

version

当前局部路网版本号,当车偏离原路线后,局部路网会重新生成并下发,版本号增加

int

route_id

当前消息所属的导航路线 ID

string

使用方法:
电子眼信息中,camera_list 的每个电子眼都包含 path_id、offset 和 distance_to_pos:path_id 为摄像头所在的道路 ID,offset 为摄像头在该道路上的偏移位置(单位:米),distance_to_pos 为摄像头到当前车辆位置的距离。终端同时会收到车辆实时位置 position 信息,其中的 path_id 和 offset 分别表示车辆当前所在的道路 ID,以及车辆在该道路上的偏移位置。

两类数据都带有 version 字段,用于标识当前视野的有效版本号。使用时需特别注意:位置数据与电子眼数据必须基于同一个 version、path_id 进行匹配和计算,否则结果可能不准确。

电子眼信息属于静态数据,不会实时刷新,因此采用增量下发机制:构造 horizon 视野时,先下发前方约 2 公里范围内的 camera_list 数据;此后车辆每前进约 200 米,再增量下发前方约 200 米范围内的新数据。因此,推荐在使用电子眼数据时,优先用当前 position 中的 path_id 和 offset 去匹配电子眼信息中的 path_id 和 offset,从而确定当前应关注的电子眼位置;匹配时同样要求两者的 version 一致。
此外,也可以基于 distance_to_pos 实时计算车辆与电子眼之间的剩余距离:在 version、path_id 一致的前提下,用车辆 offset 的变化量对 distance_to_pos 做实时扣减,即可得到最新距离。例如,某条电子眼数据下发时 distance_to_pos=1800、path_id=8、offset=1850,此时车辆位于 path_id=8、offset=50;下一时刻车辆仍在同一路径上,且 offset 更新为 90,则车辆与该电子眼的实际距离为 1800 - (90 - 50) = 1760 米。


附录A

为了优化路径计算的速度,规划合理路径,人为根据相应规则,对道路定义不同的等级,体现了优化的路网。FC 分为 5 个级别,分别为 FC1、FC2、FC3、FC4 和 FC6。FC1 为最高级别,FC6 为最低级别,FC0为未知级别。每个级别具体定义如下表:
该部分为新的映射关系:

功能等级道路形态取值—int

pathclass

未知(Unknown)

0

高速道路

1

城市快速路

2

国道

3

省道

4

县道

乡道

6

普通道路

县乡村内部道路

小路

附录B
警示信息标牌类型

TYPE_CODE

图标

描述

1

向左急弯路

2

向右急弯路

3

反向弯路(左)

4

连续弯路

5

上陡坡

6

下陡坡

7

两侧变窄

8

右侧变窄

9

左侧变窄

10

窄桥

11

双向交通

12

注意儿童

13

注意牲畜

14

注意落石(右)

15

注意落石(左)

16

注意横风

17

易滑

18

傍山险路(右)

19

傍山险路(左)

20

堤坝路(左)

21

堤坝路(右)

22

村庄

23

驼峰桥

24

路面不平

25

过水路面

26

有人看守铁路道口

27

无人看守铁路道口

28

事故易发路段

29

左右绕行

30

左侧绕行

31

右侧绕行

32

注意危险

33

禁止超车

34

解除禁止超车

35

鸣喇叭

36

连续下坡

37

文字性警示标牌现场为文字提示,且无法归类到国标危险信息标牌中

38

注意左侧合流

39

注意右侧合流

40

停车让行

41

会车让行

42

减速让行

43

隧道开灯

44

潮汐车道

45

路面高凸

46

路面低洼

47

反向弯路(右)

48

注意野生动物

60

拉链路

61

HOV 车道

62

禁止骑自行车上坡

63

禁止骑自行车下坡

64

禁止自行车骑行

65

非机动车下车推行

66

货车避险车道

67

降温池

68

团雾多发路段

69

易结冰凝冻路段

附录C
值属性值名称

0

虚拟车道

1

普通车道

2

进入车道

3

退出车道

4

连接车道

5

应急车道(可行驶路肩带)

6

HOV车道

7

潮汐车道

8

港湾车道

9

可变导向车道

10

公交车专用道

11

限时公交车道

12

加速车道

13

减速车道

14

非机动车道

15

避险车道

16

收费站车道

17

导向车道

18

待转区车道

19

货车专用道

20

出租车专用道

21

错车道

22

中心转向车道(常见借道左转车道)

23

停车道

24

快车道

25

慢车道(爬坡车道)

26

超车道

27

管制车道

28

检查站车道

29

匝道

30

其他车道

31

借道车道

32

附加车道

36

公交优先道

37

危化品专用道

38

危化品优先道

39

救护车专用道

40

其他专用车道

附录D
typetype_desc

101

拥堵

102

交通事故

103

交通管制

104

封路

105

故障车

106

警察

107

危险

110

施工

111

预上线

112

交通阻断

116

能见度

201

路面塌陷

401

大雾

402

雾霾

403

结冰

404

积雪

405

积水

601

大型赛事

上一篇

使用准备

下一篇

更新日志
本篇文章对您是否有帮助?