1. 程式人生 > >[轉載]根據兩點的經緯度求方位角和距離等

[轉載]根據兩點的經緯度求方位角和距離等

原文地址:http://blog.sina.com.cn/s/blog_658a93570101hynw.html

以下是根據轉載文中的公式的資料驗證。

Aj:121.53721,Aw:29.829484

Bj:121.549777,Bw:29.832009

1.方位角的求算(具體公式見轉載文章)

cos(c)=cos(90-Bw)*cos(90-Aw)+sin(90-Bw)*sin(90-Aw)*cos(Bj-Aj)
cos(c)=cos(90-29.832009)*cos(90-29.829484)+sin(90-29.832009)*sin(90-29.829484)*cos(0.012567)=0.99999997594596337272609125289669
cos(c)平方為0.99999995189192732404886057202814
sin(c)=2.1933552533949246095158713791812e-4
sin(A)=0.86748767728114135702539558286285
A = 60.167990999999999999999999691623度

B點在第一象限,Azimuth=A

B在第二象限,Azimuth=360+A;

B在第三四象限,Azimuth=180-A。

2.距離的求算

已知兩點經緯度,求兩點之間的距離 
C=sin(Aw)*sin(Bw) + cos(Aw)*cos(Bw)*cos(Bj-Aj)
C=sin(29.829484)*sin(29.832009)+cos(29.829484)*cos(29.832009)*cos(121.549777-121.53721)
得到C=0.99999998092697801370896106266363
R=6370996米
Distance=1244.3200115373285706769811408469米

3.第三點經緯度的計算(具體公式見轉載文章)

已知Aj,Aw,L(B點距離A點的距離),R(地球半徑)
,Azimuth(即為上面求的A,ps:這裡的Azimuth依然定為B相對於A的方位角)
求B點經緯度
求c:c=L/R*180/PAI
求a:a=arccos(cos(90-Aw)*cos(c)+sin(90-Aw)*sin(c)*cos(Azimuth))
求C:C=arcsin(sin(c)*sin(Azimuth)/sin(a))
Bw = 90-a
Bj = Aj+C

求解:
c=0.01119044573639016999365734833181
a=60.164949687323880831981177664311
C=0.01119078638987963325374372222455
Bw=29.835050312676119168018822335689
Bj=121.54840078638987963325374372222

驗證完畢。

下圖中的資料是百度給出的距離,單位是米。