通过经纬度求解方位角

简化算法:经纬度计算方位角与距离的高效解决方案

拟解决四个问题

1、已知两点经纬度,求一点相对于另一点方位角;
2、已知两点经纬度,求两点间距离;
3、已知一点经纬度及与另一点距离和方位角,求另一点经纬度;
4、问题1与问题2的简化算法。
注:简化算法的运算量和对系统的运算精度要求都大大降低,但只在短距离内(高纬地区建议10km以下)可以保证精度,除简化算法之外的算法可适用于地球上任意两点。这里只是出于便于理解的目的来解释“原理”,具体到不同的编程环境还要自己做化简和注意单位。

符号和单位约定

此处设定求B相对于A的方位角,即A为当前位置,B为目标位置
Aj:A点经度
Aw:A点纬度
Bj:B点经度
Bw:B点纬度
北纬为正,南纬为负;东经为正,西经为负
经纬度使用度,DDD.DDDDDD°,非度分或度分秒。
度数未加说明均采用角度制
R:地球平均半径
Azimuth:方位角,以真北为0度起点,由东向南向西顺时针旋转360度
在这里插入图片描述
A,B,C表示球面上的三个点及球面上“弧线”在该点处所夹的角
a,b,c表示A,B,C三点的对“弧”两端点与地心连线所夹的角(其实这里解释成ABC三点对弧的弧度更方便)
O为球心
L为AB两点间球面距离
(注:因我考虑欠缺,没有注意字母C大小写较难分辨,所以此处提醒读者在后面的公式中注意C的大小写。)

方位角求解

问题:已知A、B两点经纬度,如何求出B相对于A的方位角?
第一步:在知道AB点经纬度后,要用到第一个公式,三面角余弦公式;
cos⁡(c)=cos⁡(a)∗cos⁡(b)+sin⁡(a)∗sin⁡(b)∗cos(A OC B) . \cos(c) = \cos(a)*\cos(b)+\sin(a)*\sin(b)* cos(A~O C~B)\,. cos(c)=cos(a)cos(b)+sin(a)sin(b)cos(A OC B).
AOCB是面AOC与面BOC的二面角(方便可见)
将已知数据代入,公式如下:
cos⁡(c)=cos⁡(90−Bw)∗cos⁡(90−Aw)+sin⁡(90−Bw)∗sin⁡(90−Aw)∗cos(Bj−Aj) . \cos(c) = \cos(90-Bw)*\cos(90-Aw)+\sin(90-Bw)*\sin(90-Aw)* cos(Bj - Aj)\,. cos(c)=cos(90Bw)cos(90Aw)+sin(90Bw)sin(90Aw)cos(BjAj).
二面角AOCB的度数就是两点经度之差;
第二步:知道了角c的余弦值后我们要求得它的正弦值,所用的公式就是三角函数公式里最基本的“扣方加赛方等于1”的一个变形
sin⁡(c)=1−cos(c)∗cos(c). \sin(c) = \sqrt{ 1-cos(c)*cos(c)}. sin(c)=1cos(c)cos(c) .
第三步:求得正弦后,接下来我们要用一个不太常用的公式,球面正弦公式
asin(A)=bsin(B)+csin(C). \frac{a}{sin(A)} =\frac{b}{sin(B)}+\frac{c}{sin(C)}. sin(A)a=

评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值