本文将会介绍上述 多种路线规划API所提供的能力,适用的场景 及其 涉及的技术。我们将从业务使用场景出发,讲述各个API,并给出最佳的使用建议。 路线规划API已经广泛应用在多个行业中,例如网约车、物流、外卖、代驾、旅行、车企等等。在这些行业开发者应用中我们抽象出以下几类应用场景:
1)派单场景:通常我们在一些本地生活服务平台(如 外卖、网约车) 下单时,这些平台会分配一个 司机或者骑手 为我们服务,将这些订单派发的过程就是派单。在设计派单策略时,往往离不开订单区域的路线信息;为了提升派单的效率,这类使用场景对算路的正确性、性能和稳定性提出了很高的要求。
2)网约车场景:对于网约车场景来说,不仅需要有高性能的派单,还需要高性能的送驾价格预估,这就需要保证 送驾估价使用的路线 与 送驾过程中实际导航使用的路线是一致的,还要避免绕路,这样才能避免产生不必要的纠纷。
3)路线展示和导航场景:随着造车新势力的兴起,对于一些第三方车企来说,他们期望在自己的车机上实现算路和导航、辅助驾驶的能力。由于第三方车企缺乏地图数据或者地图数据时效性较差,需要百度地图为其提供比较完善的巡航、多路线、导航和诱导的能力。
4)物流货运场景:物流场景的货车算路,涉及多种交规的处理(如、车高、车重、车长等),百度地图为此单独提供一套用于货车算路的API。
5)境外算路场景:对于有境外业务的企业来说,需要支持境外的算路服务,如旅游类的应用需要计算 公交火车站 到 酒店的距离 等等。
功能介绍
轻量路线规划 和 批量算路API 均支持多种不同交通方式的算路能力。
其不同点主要在于:
-
-
批量算路(具体功能介绍可以参考 lbsyun.baidu.com/index.php?t…):
- 支持多个点对的并发算路;
- 仅支持最基础的算路能力,并且只下发 路线距离和路线耗时;
-
轻量路线规划(具体功能客参考 lbsyun.baidu.com/index.php?t…):
-
在保证高性能的前提下,还支持更多的功能:除了 路线距离和路线耗时,还会下发路线的 限行信息、形状点序列、路线分段、路况等;用户不仅可以高性能算路,还可以将路线渲染在地图上。
-
支持 车牌限行、多途经点算路的能力。
-
提供更加准确的算路能力:轻量路线规划API的入参不仅有起终点坐标,还有 起终点POI的唯一ID(UID)、起点的车头方向 等信息, 客户可以传入这些信息可以提升算路的准确性。
- 我们建议用户算路时可以传入起终点POI的唯一ID(UID) : 我们知道算路的第一步就是要确定起点和终点在哪条路上(即 绑路),绑路的准确性将直接影响路线的正确性。我们对大量的 POI 建设了导航引导点,这些导航引导点通常都是最合理的上下车和停车点,利用这些引导点绑路将会极大的提升算路的正确性。
-
-
性能保障
1)网络传输
-
-
减少数据量:
- 对于派单场景,客户一般只关注 路线的距离 和 耗时;因此 我们的轻量路线规划API 提供了 steps_info 参数,用户可以传入 steps_info=0 ,API将会只下发客户必要的信息,从而减少网络传输的数据量,可以在一定程度上降低耗时、提升性能。
-
避免跨地域流量调度:
- 跨地域的流量调度将会带来较大的网络延迟,例如 北京到广州 一次网络请求延迟大约有50ms左右,对于追求高性能的客户来说,这显然是不能接受的。为了适应不同客户的需求,同时也为了保障服务的高可用,我们的服务通常会在华南、华北、华中等多个地域部署;实现了不同客户就近接入,从而将流量调度的网络延迟降到最低。
-
2)算路性能
-
-
算法优化:
- 减少路线召回数量,降低路线处理的耗时:我国的路网及其复杂,一对起终点通常都会有无数种走法;而算路引擎的算路的过程,实际也是基于大量的路线,进行了复杂的排序和筛选,最终提供给用户一条或者几条最佳路线。 批量算路、轻量路线规划API都 提供了算路偏好参数(tactics),算路引擎会根据用户的选择,尽量只考虑某个偏好的权值来计算路线,减少整体路线召回的数量,降低排序的复杂度和耗时,最终提升API的整体性能。
-
功能裁剪:
- 功能的复杂度对耗时有严重的影响:通常我们使用手机地图APP导航时,会发现除了路线的距离、耗时这些基本信息外,还可以看到很多高速出入口提示、收费站、路口放大图等多种诱导提示信息。而这些多种多样的诱导信息对于派单场景来说,都是不必要的,因此我们对这些功能做了专项裁剪和一些定制化开发,仅保留了一些客户需要关注的基础信息(如:距离、耗时、过路费、路线形状点、路况)。
-