正在跳转至目标页,请稍后…

概述

 距离矩阵(DistanceMatrix),用于批量计算一组起终点的路面距离(或称导航距离),可应用于网约车派单、多目的地最优路径智能计算等场景中,支持驾车、步行、骑行多种交通方式,满足不同应用需要。


  本服务主要特点:
  1. 支持大批量和多种计算方式
    a) 多起点*多目的地矩阵式计算,最高支持25x25矩阵(一次请求计算路面距离625对)
    b) 一对多计算:支持1个起点到最多200个终点的批量计算

    

  2. 支持驾车、骑行、步行多种交通方式
  3. 支持返回实时ETA(驾车,结合路况的预估到达时间)
  4. 支持跨城远距离计算
  5. 耗时低,性能出色

  计量方式:
  本接口按距离的计算次数计量(非接口请求次数),分为:
  1. 计算次数:接口每计算一对起终点距离,计为1次
  2. 并发计算量:以秒为单位,一秒内计算1对起终点结果,并发计算量计1次
  例如:一次接口请求计算10个起点到10个终点,计算次数为100次,假设相同调用参数同一秒内请求5次,并发计算量为100次*5次请求=500次/秒
  提示:在控制台的“配额管理”和“调用统计”中,涉及本接口的调用量及并发量,均指 计算次数并发计算量

  配额: 申请企业认证后,您的账户配额会默认提升,您可以在控制台->配额管理->账户额度中进行额度分配


请求URL(GET请求)

请求URL

URL:https://apis.map.qq.com/ws/distance/v1/matrix
Method:GET

请求参数(GET请求)

参数 必填 说明 示例
key 开发密钥(Key) key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-*****
from 起点坐标
格式: lat,lng,[header],[roadtype],[speed],[accuracy],[timestamp]|lat,lng,[header],[roadtype],[speed],[accuracy],[timestamp]…
(经度与纬度用英文逗号分隔,坐标间用英文分号分隔)
[必填]lat 为纬度,lng 为经度
[选填] header 为车头方向(正北为0度,顺时针一周为360度)
如下参数为前序点传参,仅在驾车(driving)模式下生效
[选填] roadtype 为道路类型,取值:0 不考虑道路类型、1 在桥上、2 在桥下、3 在主路、4 在辅路、5 在对面、6 桥下主路、7 桥下辅路
[选填] speed 为速度,无具体值时可传-1
[选填] accuracy 为GPS精度,单位:毫米,无具体值时可传0
[选填] timestamp 为时间戳,精确到秒,请传真实时间戳,否则前序点会不生效
注意:
1、 前序点之间使用“|”分隔,前序点最多支持设置5个(包含起点),最后一个点会作为此次计算的起点
2、起点经纬度附近5公里内没有道路,会计算失败,返回“存在无法吸附的坐标点”
个数限制: 多对一计算<=200个,多对多计算from和to坐标数乘积<=625且单侧<=50个
例1:
from=39.071510,117.190091
例2:
from=39.071510,117.190091,270;39.108951,117.279396,180
例3:
from=39.829647,116.422462,-1,0,-1,0,1639108623|39.830553,116.422924,-1,0,-1,0,1639108628|39.831261,116.423289,-1,0,-1,0,1639108633
to 终点坐标
格式: lat,lng;lat,lng…
(经度与纬度用英文逗号分隔,坐标间用英文分号分隔)
个数限制: 一对多计算<=200个,多对多计算from和to坐标数乘积<=625且单侧<=50个
注意: 终点经纬度附近5公里内没有道路,会计算失败,返回“存在无法吸附的坐标点”
to=39.071510,117.190091;40.007632,116.389160
mode 计算方式,取值:
driving:驾车
walking:步行
bicycling:自行车
mode=driving
output 返回格式:支持JSON/JSONP,默认JSON output=json
callback JSONP方式回调函数 callback=function1

请求URL(POST请求)

请求URL

URL:https://apis.map.qq.com/ws/distance/v1/matrix?mode=计算方式
Method:POST
Header:Content-Type:application/json

计算方式目前支持driving、walking、bicycling

请求参数(POST请求)

参数 类型 必填 说明
key string key
from string 起点坐标
格式: lat,lng,[header],[roadtype],[speed],[accuracy],[timestamp]|lat,lng,[header],[roadtype],[speed],[accuracy],[timestamp]…
(经度与纬度用英文逗号分隔,坐标间用英文分号分隔)
[必填]lat 为纬度,lng 为经度
[选填] header 为车头方向(正北为0度,顺时针一周为360度)
如下参数为前序点传参,仅在驾车(driving)模式下生效
[选填] roadtype 为道路类型,取值:0 不考虑道路类型、1 在桥上、2 在桥下、3 在主路、4 在辅路、5 在对面、6 桥下主路、7 桥下辅路
[选填] speed 为速度,无具体值时可传-1
[选填] accuracy 为GPS精度,单位:毫米,无具体值时可传0
[选填] timestamp 为时间戳,精确到秒,请传真实时间戳,否则前序点会不生效
注意:
1、 前序点之间使用“|”分隔,前序点最多支持设置5个(包含起点),最后一个点会作为此次计算的起点
2、起点经纬度附近5公里内没有道路,会计算失败,返回“存在无法吸附的坐标点”
个数限制: 多对一计算<=200个,多对多计算from和to坐标数乘积<=625且单侧<=50个
to string 终点坐标
格式: lat,lng;lat,lng…
(经度与纬度用英文逗号分隔,坐标间用英文分号分隔)
个数限制: 一对多计算<=200个,多对多计算from和to坐标数乘积<=625且单侧<=50个
注意: 终点经纬度附近5公里内没有道路,会计算失败,返回“存在无法吸附的坐标点”

响应结果

名称 类型 必有 说明
status number 状态码,0为正常,其它为异常,详细请参阅状态码说明
message string 对status的描述
result object 计算结果
rows array 多点到多点距离计算,结果为二维数组,rows为行,elements为列 结果数组(行)
elements array 结果数组(列)
distance number 起点到终点的距离,单位:米
duration number 表示从起点到终点的结合路况的时间,秒为单位
注:步行/骑行方式(不计算耗时)以及起终点附近没有道路造成无法计算时,不返回本此节点
status number 本对起终点计算的状态码,取值:
4 代表附近没有路,距离计算失败,此时distance为直线距离,预估耗时(duraction)会返回 0。
计算结果正常返回时,不返回status

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请求)

// GET请求
https://apis.map.qq.com/ws/distance/v1/matrix/?mode=driving&from=39.829647,116.422462,-1,0,-1,0,1639108623|39.830553,116.422924,-1,0,-1,0,1639108628|39.831261,116.423289,-1,0,-1,0,1639108633;22.902664,113.824282&to=43.889352,87.460222&key=[你的key]

调用示例 (POST请求)

// POST请求
URL: https://apis.map.qq.com/ws/distance/v1/matrix?mode=driving

body体

{
    "key":"你的key",
    "from":"39.829647,116.422462,-1,0,-1,0,1639108623|39.830553,116.422924,-1,0,-1,0,1639108628|39.831261,116.423289,-1,0,-1,0,1639108633;22.902664,113.824282",
    "to":"43.889352,87.460222"
}

响应示例

{
    "status": 0,
    "message": "query ok",
    "request_id": "907308272400812070",
    "result": {
        "rows": [
            {
                "elements": [
                    {
                        "distance": 2801011,
                        "duration": 127341
                    }
                ]
            },
            {
                "elements": [
                    {
                        "distance": 4240259,
                        "duration": 203147
                    }
                ]
            }
        ]
    }
}

应用场景与方案解析


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


1.网约出租车派单计算

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


  解决方案要点:

  a. 使用多起点(周边车辆)到同一终点(乘客)的距离计算方式

  b. 一般先查找乘客周边直线1公里范围内车辆,再计算接驾距离,以降低计算量

  c. 设置车头方向可以辅助确定车辆所在道路,提高计算准确度。车头方向通过车辆GPS获取,调用本服务时做为输入参数传入

  d. 实时订单,除距离以外,建议结合实时路况的预计到达时间(ETA)做为派单优先级条件之一

    


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

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


  解决方案要点:

  a. 首先初筛存在拼车可能性的订单,根据发起拼车的起终点,查找周边起点相近、方向相同的订单,作为备选拼车订单,当然这个策略可以根据业务实际情况进行设计

  b. 使用多对多矩阵式计算,计算备选订单中的各乘客、各目的地相互间距离

  c. 通过计算得到的互相间距离,并结合实际业务需要,计算得到拼车订单

    


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

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


  解决方案要点:

  a. 使用多对多矩阵式距离计算,计算得到起点、及各收货点两两间距离,再结合您的业务需要,经排序得到最优遍历顺序。

  b. 如果您的业务目前仅需考虑距离因素,我们为您提供了基于驾车方式的最优配送顺序的服务,输入起点及若干终点,自动为您计算最优的遍历顺序。

 


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

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


  解决方案要点:

  a) 采多对多矩阵式计算,使用骑行方式,计算各订单间距离,并排序得到最优顺序

  b) 与顺风车计算方式接近,不同的是,配送站或配送员有即定的工作范围,备选订单即为工作范围内所有订单,筛选过程相对简单

  c) 往往同一小区、写字楼每天会接收多件包裹,可对同目的地的运单预先进行合并,也可离线预计算各主要收货小区、楼栋两两间距离,减少重复计算,提升系统速度。

    


5.外卖业务配送

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


  解决方案要点:

   a. 同样使用骑行距离矩阵,计算得到取派地点间距离,从而计算顺路、计算取派顺序。

   b. 可对订单进行一定累积之后(订单越多,拼成顺路的概率越大),再进行顺路关系计算,使订单分派更为合理,充分使用运力。

   c. 往往同一小区、写字楼会有多个订单,可对同目的地的运单预先进行合并,也可离线预计算各主要收货小区、楼栋两两间距离,减少重复计算,提升系统速度。

    

这篇文章对您解决问题是否有帮助?

已解决
未解决