LBS基礎(chǔ)信息
通過(guò)LBS采集可以獲取到經(jīng)度和緯度,由于地球是圓的,其實(shí)經(jīng)緯度代表的是的是角度,而非平面坐標(biāo)蛇受。
統(tǒng)一常用名稱如下:
名稱 | 中文含義 | 英文1 | 英文2 | 樣例 |
---|---|---|---|---|
經(jīng)度 | 方向-垂直 | longitude | meridian | 106.6866 |
緯度 | 方向-水平 | latitude | paralleld | 26.5477 |
高德地圖定位網(wǎng)址:(經(jīng)緯度查詢106.6866,26.5477)
https://lbs.amap.com/console/show/picker
兩點(diǎn)之間計(jì)算距離-精確到千米保留3位小數(shù)
1.歐式距離:雖然經(jīng)緯度是角度,但抽象看成平面坐標(biāo)厕鹃,同樣能實(shí)現(xiàn)距離
round(sqrt(power((meridian_work-meridian_submit),2)+power((parallel_work-parallel_submit),2))*100000/1000.0,3) as euc_dst
2.弧長(zhǎng)距離:通過(guò)地球的半徑結(jié)合角度計(jì)算弧長(zhǎng)距離
round(6378.137*2*asin(sqrt(power(sin((parallel_submit*pi()/180.0-parallel_work*pi()/180.0)/2),2)+cos(parallel_submit*pi()/180.0)*cos(parallel_work*pi()/180.0)*power(sin((meridian_submit*pi()/180.0-meridian_work*pi()/180.0)/2),2))),3) as lbs_dst
l = n(圓心角)× π(圓周率)× r(半徑)/180=α(圓心角弧度數(shù))× r(半徑)
Distance = 圓心角*Pi*R/180
圓心角計(jì)算可以使用Haversine:
haversin(d/R)=haversion(LatB-LatA)+cos(LatA)*cos(LatB)*haversion(LonB-LonA)
其中
haversin(圓心角)=sin2(圓心角/2)=(1-cos(圓心角))/2
所以
圓心角=2*開(kāi)平方(haversin(圓心角))
為方便可以提前將常數(shù)Pi/180融入角度兢仰,即為常見(jiàn)的java代碼
角度距離比較復(fù)雜,參考文獻(xiàn):
https://www.cnblogs.com/ycsfwhh/archive/2010/12/20/1911232.html
https://www.cnblogs.com/zhoug2020/p/8993750.html