hive 经纬度距离计算方法
生活随笔
收集整理的這篇文章主要介紹了
hive 经纬度距离计算方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
-- ========== 簡單檢驗距離計算準確度===============
-- 北京經(jīng)緯度
set hivevar:arrival_lat=39.9;
set hivevar:arrival_lon=116.3;
-- 上海經(jīng)緯度
set hivevar:hotel_lat=31;
set hivevar:hotel_lon=121;
-- 北京上海的直線距離:1069
select
6378.137*2*ASIN(SQRT(POWER(SIN((${arrival_lat}-${hotel_lat})*ACOS(-1)/360),2)
+COS(${arrival_lat}*ACOS(-1)/180)*COS(${hotel_lat}*ACOS(-1)/180)*POWER(SIN((${arrival_lon}-${hotel_lon})*ACOS(-1)/360),2))) as distance1
,6378.137 * ACOS(1 - (POWER((SIN((90 - ${arrival_lat}) * PI() / 180) * COS(${arrival_lon} * PI() / 180) - SIN((90 - ${hotel_lat}) * PI() / 180) * COS(${hotel_lon} * PI() / 180)), 2)
+ POWER((SIN((90 - ${arrival_lat}) * PI() / 180) * SIN(${arrival_lon} * PI() / 180) - SIN((90 - ${hotel_lat}) * PI() / 180) * SIN(${hotel_lon} * PI() / 180)), 2)
+ POWER((COS((90 - ${arrival_lat}) * PI() / 180) - COS((90 - ${hotel_lat}) * PI() / 180)), 2)) / 2)
AS distance2-- 距離計算結果--=====
-- distance1 distance2
-- 1078.0874496030901 1078.0874496030917
因為選擇的sin和cos不同的角度計算的,所以結果會有細微的差別,但差別已經(jīng)到小數(shù)點后10位了,差別非常小。
總結
以上是生活随笔為你收集整理的hive 经纬度距离计算方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于谷歌浏览器不能用flash插件的问题
- 下一篇: Unity4.x UWP版本打包流程