如何通过经纬度求两个点的相对方位角

如题所述

设2个点为A和B,题目变成求B在A的什么方位角上。x代表经度,y代表纬度。A点的坐标为(xa',ya),B点的坐标为(xb',yb)。东经为正,西经为负,北纬为正,南纬为负。

首先,如果2个点的经度相同或者纬度相同,方位变得非常简单,就是正东南西北。
其次,我们把2个点的经度加上或减去相同的数字(xa'+n,ya)和(xb'+n,yb),使A点的经度xa'+n是0;而xb'+n如果大于180则减去360,如果小于-180则加上360.
于是我们得到了2个点的新坐标:A点(xa,ya),B点(xb,yb),xa=0
用反正切函数得到角度 d = arctan[(yb-ya)/(xb-xa)]

d的值在-pi/2到pi/2之间,即是-90度到90度之间。
如果xb<0,d>0,则是西偏北d度
如果xb<0, d<0,则是西偏南(-d)度
如果xb>0, d>0,则是东偏北d度
如果xb>0, d<0, 则是东偏南(-d)度

这是把球面摊开当平面来算的,如果考虑本身是球面,情况就复杂很多,为什么飞机是直飞但航线在地图上看是弧线的原因在此。
不过要是两个点的距离不太远(比如在一个城市内或邻近城市),这种差异可以忽略的。也要看具体的应用的精度要求。

2017-02-25 sirfarming原创回答,前后花了好几个小时写成。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-02-09
纬度差/经度差=方位角的正切三角函数值,查函数表或者用计数器算一下就知道方位角了!
第2个回答  2015-09-24
纬度差/经度差=方位角的正切三角函数值,查函数表或者用计数器算一下就知道方位角了!本回答被提问者和网友采纳
相似回答