腾讯位置服务多对多距离矩阵

概述

距离矩阵(DistanceMatrix)服务:较原来一对多批量计算来讲,本服务计算能力大幅度提升,可应用于网约车派单、多目的地最优路径智能计算等场景中,支持驾车、步行、骑行多种交通方式,满足不同应用需要。

服务主要特点:
      1. 支持大批量和多种计算方式
        a) 多起点*多目的地矩阵式计算,最高支持25×25矩阵(一次请求计算路面距离625对)
        b) 一对多计算:支持1*200对批量计算
  
      2. 支持驾车、骑行、步行多种交通方式
      3. 支持返回实时ETA(驾车,结合路况的预估到达时间)
      4. 支持跨城远距离计算
      5. 极速响应

请求URL

该请求为GET请求

http:// apis.map.qq.com/ws/distance/v1/matrix?parameters

请求参数(GET请求)

参数 必填 说明 示例
mode 计算方式,取值:
driving:驾车
walking:步行
bicycling:自行车
 mode=driving
from 起点坐标
格式:lat,lng[,heading];lat,lng[,heading]…
   (经度与纬度用英文逗号分隔,坐标间用英文分号分隔)
     [必填]lat为纬度,lng为经度 
     [选填]heading为车头方向(正北为0度,顺时针一周为360度)
个数限制: 多对一计算<=200个,多对多计算from和to坐标数乘积<=625
例1:
from=39.071510,117.190091
例2
from=39.071510,117.190091,270;39.108951,117.279396,180
to 终点坐标
格式:lat,lng;lat,lng…
   (经度与纬度用英文逗号分隔,坐标间用英文分号分隔)
个数限制:一对多计算<=200个,多对多计算from和to坐标数乘积<=625
to=39.071510,117.190091;40.007632,116.389160
output 返回格式:支持JSON/JSONP,默认JSON output=json
callback JSONP方式回调函数 callback=function1
key 开发密钥(Key) key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77

响应结果

名称 类型 说明
status number 状态码,0为正常,
310请求参数信息有误,
311Key格式错误,
306请求有护持信息请检查字符串,
110请求来源未被授权
message string 对status的描述
result object 计算结果
  rows array 多点到多点距离计算,结果为二维数组,rows为行,elements为列 结果数组(行)
  elements array 结果数组(列)
  distance number 起点到终点的距离,单位:米
duration number 表示从起点到终点的结合路况的时间,秒为单位
注:步行/骑行方式不计算耗时,该值始终为0

rows/elements结果数组结构说明:
例:计算3个起点到3个终点距离矩阵
from=A,B,C&to=1,2,3
计算结果的二维数组为,以下表格为数组结构示意,行为rows,列为elements:

[0,0]:A to 1 [0,1]:A to 2 [0,2]:A to 3
[1,0]:B to 1 [1,1]:B to 2 [1,2]:B to 3
[2,0]:C to 1 [2,1]:C to 2 [2,2]:C to 3

调用示例

// GET请求:

http://apis.map.qq.com/ws/distance/v1/matrix/?mode=driving&
from=39.984092,116.306934;40.007763,116.353798&
to=39.981987,116.362896;39.949227,116.394310&
key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77

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
//响应示例:
{
    "status": 0,
    "message": "query ok",
    "result": {
        "rows": [{
            "elements": [{
                "distance": 5867,
                "duration": 1052
            }, {
                "distance": 12033,
                "duration": 2238
            }]
        }, {
            "elements": [{
                "distance": 5614,
                "duration": 741
            }, {
                "distance": 9539,
                "duration": 1503
            }]
        }]
    }
}
}

应用场景与方案解析

以下提供一些常见应用场景的解决思路供开发者参考,具体算法、策略需要您根据自业务需要进行设计和实现。

1.网约出租车派单计算

网约车业务中,合理分派订单,减少乘客等待是用户体验的关键环节,用户发起叫车请求后,服务端根据用户上车点查找周边车辆,计算接驾距离(距离近的车辆会得到优先分派),除距离外也再结合业务需要得出派单优先顺序,实现订单分派。

解决方案要点:
      a. 使用多起点(周边车辆)到同一终点(乘客)的距离计算方式
      b. 一般先查找乘客周边直线1公里范围内车辆,再计算接驾距离,以降低计算量
      c. 设置车头方向可以辅助确定车辆所在道路,提高计算准确度。车头方向通过车辆GPS获取,调用本服务时做为输入参数传入
      d. 实时订单,除距离以外,建议结合实时路况的预计到达时间(ETA)做为派单优先级条件之一

       

2.网约出租车顺风车派单计算

顺风车式是高效利用出行资源,降低出行成本的一种出行方式。 判断为可拼车的基本逻辑是,A乘客发起拼车,确定初始起/终点,增加B乘客后,距离增加在可接受范围内,即为可拼车

解决方案要点:
      a. 首先初筛存在拼车可能性的订单,根据发起拼车的起终点,查找周边起点相近、方向相同的订单,作为备选拼车订单,当然这个策略可以根据业务实际情况进行设计
      b. 使用多对多矩阵式计算,计算备选订单中的各乘客、各目的地相互间距离
      c. 通过计算得到的互相间距离,并结合实际业务需要,计算得到拼车订单

      

3.大件物流-装车/送货顺序计算

城市大件货物配送,一般一趟车负责多件货物、途经多个收货地点,完成配送。在出发前,司机需要根据运单自行规划配送路线,安排装车顺序(先送后装,便于卸车),这对司机的路线能力要求非常高,规划过程也会占用较多时间成本,因此实现配送顺序智能规划,是有效解决这一问题的关键。

解决方案要点:
      a. 使用多对多矩阵式距离计算,计算得到起点、及各收货点两两间距离,再结合您的业务需要,经排序得到最优遍历顺序。
      b. 如果您的业务目前仅需考虑距离因素,我们为您提供了基于驾车方式的最优配送顺序的服务,输入起点及若干终点,自动为您计算最优的遍历顺序。使用本服务,你需要先成为企业开发者申请key按配额申请模板 编辑邮件发送至:mapapi@vip.qq.com;mapbd@tencent.com,邮件中的申请接口填写“多目的地最优路径”,您的申请我们会在3个工作日内审批完成,我们会为您提供每秒5次、每天1万次的配额

       

4.物流配送-配送员最优取派件顺序

电商、快递物流类业务,为赢取用户口碑,保持自身竞争力,不断在各各环节进行提速,从当日达到半日达,再到小时达,这背后离不开强大的信息系统与GIS能力的结合。 配送与揽收环节,以往多由配送员自行规划路线,对人依赖较重。而限时达业务的插入,常会打断原有计划,配送员要不断根据订单变化进行调整,稍有不甚订单将无法按时履约。

解决方案要点:
      a) 采多对多矩阵式计算,使用骑行方式,计算各订单间距离,并排序得到最优顺序
      b) 与顺风车计算方式接近,不同的是,配送站或配送员有即定的工作范围,备选订单即为工作范围内所有订单,筛选过程相对简单
      c) 往往同一小区、写字楼每天会接收多件包裹,可对同目的地的运单预先进行合并,也可离线预计算各主要收货小区、楼栋两两间距离,减少重复计算,提升系统速度。

       

5.外卖业务配送

与物流配送情况相近,但即时性要求更高,随时有新订单产生,随时有任务插入。

解决方案要点:
      a. 同样使用骑行距离矩阵,计算得到取派地点间距离,从而计算顺路、计算取派顺序。
      b. 可对订单进行一定累积之后(订单越多,拼成顺路的概率越大),再进行顺路关系计算,使订单分派更为合理,充分使用运力。
      c) 往往同一小区、写字楼会有多个订单,可对同目的地的运单预先进行合并,也可离线预计算各主要收货小区、楼栋两两间距离,减少重复计算,提升系统速度。

      

发表回复