如何計(jì)算經(jīng)緯度之間的距離?
在地理學(xué)習(xí)中偶爾會(huì)碰到需要計(jì)算給定的的經(jīng)緯度坐標(biāo)之間的距離,網(wǎng)上確實(shí)有不少代碼可以實(shí)現(xiàn),但是,但是,看不懂代碼可咋整呢?那就直接用公式,在Excel里敲公式來(lái)計(jì)算吧。下面介紹公式的原理,這些都是從網(wǎng)上獲取的,侵刪。
首先假設(shè):
把地球看成是理想的球體,其半徑為R=6731km;
計(jì)算點(diǎn)都在地球表面;
球面上2(A,B)點(diǎn)之間的距離按過(guò)球心的大圓的弧長(zhǎng)來(lái)算;
第二步:
待求點(diǎn)A(lon1,lat1)和B(lon2,lat2)
第三步:
需要用到這個(gè)Up主的關(guān)于經(jīng)緯度定義以及向量等概念,將點(diǎn)A和B的經(jīng)緯度坐標(biāo)轉(zhuǎn)成直角坐標(biāo),x=cos(lat)cos(lon);y=cos(lat)sin(lon);z=sin(lat);
球心O為原點(diǎn)(0,0,0)則向量OA=V1=[cos(lat1)cos(lon1),cos(lat1)sin(lon1),sin(lat1)];OB=V2=[cos(lat2)cos(lon2),cos(lat2)sin(lon2),sin(lat2)];
距離(弧長(zhǎng))=R*弧度;弧度=Acos[V1*V2/(|V1|*|V2|)];
將2中的向量代入弧度公式中:
弧度=Acos{cos(lat1)cos(lon1)*cos(lat2)cos(lon2)+cos(lat1)sin(lon1)*cos(lat2)*sin(lon2)+sin(lat1)*sin(lat2)}
=Acos{cos(lat1)cos(lat2)*[cos(lon1)cos(lon2)+sin(lon1)sin(lon2)]+sin(lat1)sin(lat2)}
=Acos{cos(lat1)cos(lat2)cos(lon1-lon2)+sin(lat1)sin(lat2)}
最終的公式,距離d=6371*Acos{cos(lat1)cos(lat2)cos(lon1-lon2)+sin(lat1)sin(lat2)};單位 km
注意事項(xiàng),所有涉及三角函數(shù)的地方,都是用弧度;弧度=度*Pi/180。
今朝有酒今朝醉,今日之事今日畢。