运输距离的估算
在进行路径规划时,需要获取点与点之间的距离,点之间的距离通常是通过坐标或者经纬度计算得到,可分为拟合距离和导航距离两类。导航距离顾名思义,是根据经纬度通过调用API获取,拟合距离一般是通过欧氏距离或球面距离乘以距离系数得到。
1. 常规的拟合距离
实际场景一般是大规模的(如包裹揽派可能会涉及成千上万个点),需要计算的数据量过大,而导航距离一般需要通过API获取,API的导航距离查询服务一般有查询额度限制,大量地址对的导航距离的查询非常耗时,且成本昂贵。如何能够快速高效的获取运输距离便成了一个亟待解决的问题。在大部分时候,如在点之间距离近、业务精度要求不高的时候,可以采用距离拟合的方式来计算点之间的距离。
1.1 欧氏距离
若点的位置由直角坐标系的坐标 ( x , y ) (x,y) (x,y)表示,那么点之间的距离则为欧氏距离:
d i j = ( x i − x j ) 2 + ( y i − y j ) 2 d_{ij} = \sqrt{(x_i-x_j)^2+(y_i-y_j)^2} dij=(xi−xj)2+(yi−yj)2
1. 2 球面距离拟合
由于地球可看作一个球体,假设地球半径为 R R R(6378.137km),那么可以计算得到点之间的球面距离,并乘以一个距离系数 k k k,得到拟合的运输距离:
r