球面毕竟不像平面的笛卡尔坐标系那么方便,直接使用两点的GPS坐标做差再求平方和的方式,是非常不准确的。
假设有两点(lng1, lat1)
和(lng2, lat2)
,则二者的球面距离的计算方式在Hive SQL
中的计算方式如下:
round(6378.138*2*asin(sqrt(pow(sin((lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)* pow(sin((lng1*pi()/180-lng2*pi()/180)/2),2)))*1000) as eta