cross_doctor/proto/map_match.proto

140 lines
7.0 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

syntax = "proto3";
package xlsyn;
option java_package = "com.xinglusyn.proto";
import "traj.proto";
// 每个GPS点经过预处理后的标记分类
enum gps_status_t {
GpsStatus_Normal = 0; // 正常点
GpsStatus_JumpPoint = 1; // 跳点
GpsStatus_StayPoint = 2; // 停驻点
GpsStatus_DriftPoint = 3; // 漂移点
GpsStatus_MessyPoint = 4; // 散乱点
GpsStatus_ZigzagPoint = 5; // ZigZag点
}
// 整条轨迹经过预处理后的标记分类
enum traj_status_t {
TrajStatus_OK = 0; // 正常轨迹
TrajStatus_FewPoints = 1; // 点数过少
TrajStatus_MessyTraj = 2; // 散乱轨迹
TrajStatus_StayTraj = 4; // 停驻轨迹
TrajStatus_ShortTraj = 8; // 过短轨迹
TrajStatus_DriftTraj = 16; // 漂移轨迹
TrajStatus_ZigzagTraj = 32; // ZigZag轨迹
}
// 每个GPS点的匹配状态
enum gps_matcher_status_t {
UNMATCHED = 0; // 未匹配
MATCH_SUCC = 1; // 成功匹配
TIMESTAMP_ERROR = 2; // 时间戳异常
ADSORB_ERROR = 3; // 吸附错误
ROUTE_ERROR = 4; // 规划算路错误
CAPACITY_ERROR = 5; // 超出容量限制
MATCH_1_POINT = 6; // 匹配到前一个点
}
// 匹配到的link信息带方向
message rtt_seg_t {
uint64 link_id = 1; // 不含方向的linkid
bool link_dir = 2; // 0顺向1逆向
}
// 【暂未使用】gps_spot其他可能的匹配link信息
message rtt_gps_extra_match_info_t {
rtt_seg_t seg = 1;
int32 seg_offset = 2;
int32 forwared_offset = 3;
int32 rightward_offset = 4;
int32 clockwise_offset = 5;
int32 prev_match_index = 6;
int32 path_length = 7;
int32 proirity = 8;
}
// 【暂未使用】gps点携带的车道信息
message rtt_gps_lane_info_t {
uint64 timestamp = 1; // 高精定位时间戳单位ms
int64 lon = 2; // 高精定位的经度坐标,原始经度浮点数 * 10的7次方
int64 lat = 3; // 高精定位的纬度坐标,原始纬度浮点数 * 10的7次方
int32 course = 4; // 高精定位朝向角
uint32 cur_lane_num = 5; // 车道序号表示从内侧到外侧的车道序号例如1表示最内侧车道(或者路肩)
uint32 tile_id = 6; // 吸附车道的tileID高32位
uint32 lane_id = 7; // 吸附车道的laneID低32位
}
// 单个gps点的匹配信息
message rtt_gps_spot_t {
uint32 timestamp = 1; // gps设备时间戳unix秒格式
uint32 lon = 2; // 轨迹点原始经度*10的7次方
uint32 lat = 3; // 轨迹点原始纬度*10的7次方
uint32 dir = 4; // 轨迹点的方向,(0, 360], default 0
uint32 speed = 5; // 轨迹点的速度,(0,255] km/h, default 0
uint32 gps_acc = 6; // gps定位精度单位米
int32 altitude = 7; // gps定位高程单位mm
int32 ms = 8; // ms part of timestamp if exists
xlsyn.load_status_t load_status = 9; // 车辆状态
xlsyn.vehicle_event_t vehicle_event = 10; // 车辆载客事件
xlsyn.order_status_t order_status = 11; // 网约车订单状态分类
//以上是基础属性
//以下mapmatch后的可选字段
uint32 xf_timestamp = 12; // gps点的匹配时间戳unix秒格式
int32 xf_ms = 13; // gps点的匹配时间戳的毫秒用于精细化区分gps的匹配时间
rtt_seg_t seg_info = 14; // 匹配到的link信息
int32 seg_offset = 15; // 轨迹坐标离link_id起始点的距离(cm)
int32 reliability = 16; // 匹配结果的可靠度,区间为[0,100],越大越可靠。仅考虑相对概率,不考虑路网基础数据不完备的影响。
int32 forward_offset = 17; // gps在link切向投影相对匹配处的提前量(cm)
int32 rightward_offset = 18; // gps在link法向投影的右向偏移(cm)
int32 clockwise_offset = 19; // 角度偏差[-180,180]
int32 path_length = 20; // 匹配后道路里程(cm)
int32 dist_similarity = 21; // 距离相似指标,区间为[0,100]
int32 dir_similarity = 22; // 方向相似指标,区间为[0,100]
repeated rtt_seg_t mid_matches = 23; // 与后一个gps点存在跨link匹配结果时保存中间经过的路径信息, 不包含已有的起终点
gps_matcher_status_t match_status = 24; // gps点的匹配状态
gps_status_t gps_status = 25; // 每个GPS点经过预处理后的标记分类
}
// 【在线/离线匹配使用】单条轨迹匹配后的原始结构体
message rtt_gps_spot_bucket_t {
uint64 device_id = 1; // 设备唯一标识, 64bits, md5 hash if exceed
xlsyn.gps_source_t gps_src = 2; // 轨迹渠道
xlsyn.travel_type_t travel_type = 3; // 车辆类型
uint32 traj_status = 4; // 整条轨迹经过预处理后的标记分类
repeated rtt_gps_spot_t gpss = 5; // 单个gps点的匹配信息
}
// 【在线/离线匹配使用】按照link聚合后的匹配信息
message rtt_seg_gpss_t {
rtt_seg_t seg_info = 1; // 匹配到的link信息
repeated rtt_gps_spot_t gpss = 2; // 匹配到该link的gps点信息
}
// 【在线/离线匹配使用】按照link串重新整理后的轨迹匹配结果
message rtt_traj_match_t {
uint64 device_id = 1; // 设备唯一标识, 64bits, md5 hash if exceed
xlsyn.gps_source_t gps_src = 2; // 轨迹渠道
xlsyn.travel_type_t travel_type = 3; // 车辆类型
uint32 traj_status = 4; // 整条轨迹经过预处理后的标记分类
repeated rtt_seg_gpss_t match_links = 5;// 按照link聚合后的匹配信息
}
// 【流式实时匹配使用】gps点对的匹配结果
message rtt_gps_t {
uint64 device_id = 1; // 出租车id 或者用户id
xlsyn.gps_source_t gps_src = 2; // 轨迹渠道
xlsyn.travel_type_t travel_type = 3; // 车辆类型
uint32 city_id = 4; // 城市的area_id , 由吸附模块赋值
rtt_gps_spot_t gps = 5; // 轨迹的起点gps点对存在跨link匹配结果时中间经过的路径信息保存在gps.mid_matches中
rtt_gps_spot_t gps_end = 6; // 轨迹的终点
gps_matcher_status_t match_status = 7; // gps点对的匹配状态
uint32 stand_still_timestamp = 8; // 开始异常停车的时间戳
}
// 【流式实时匹配使用】gps列表所有dispatcher存的格式
message rtt_gps_bucket_t {
repeated rtt_gps_t gps_bucket = 1;
bytes info = 2;
}