已知球面经纬度求方位角和反方位角(awk一行代码实现)
Posted Philbert
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知球面经纬度求方位角和反方位角(awk一行代码实现)相关的知识,希望对你有一定的参考价值。
根据球面三角形,已知球面两点经纬度,计算求方位角(awk一行代码实现)
已知球面经纬度求方位角和距离
一个常见的错误
假如你在广州,先朝东北走2000km,然后朝西南走2000km,你不会回到起点,而是到达深圳或者东莞。
这是因为地球是一个球面,方位角和反方位角加起来并不是360度。所以要朝着南偏西约49度的方向走2000km才能回到原点。
原理
球面上两点和北极点组成球面三角形,黎曼几何告诉我们,这个三角形内角和大于180度。而且起点到终点的方位角和终点到起点的方位角只和也不是180度。
已知球面的起点(lon1,lat1)和终点(lon2,lat2),求他们的方位角azi的公式是:
cos(azi)=sin(lon1-lon2)cos(lat2)/(cos(lat1)sin(lat2)-sin(lat1)cos(lat2)cos(lon1-lon2))
awk一行代码实现求起点到终点的方位角
#以下代码输入经纬度单位是度,输出方位角的单位也是度
echo $lon1 $lat1 $lon2 $lat2 | awk \'
b1=$2*0.017453;
b2=$4*0.017453;
da=($3-$1)*0.017453;
y=sin(da)*cos(b2);
x=cos(b1)*sin(b2)-sin(b1)*cos(b2)*cos(da);
az=(atan2(y,x)/0.017453+360)%360;
print "Azimuth from (",$1,$2,") to (",$3,$4,") is",az," deg."\' | cat
求反方位角时,把起点重点的位置互换即可。
作者:Xuran,中科院在读博士,博客网址https://www.cnblogs.com/liangxuran/转载请标明出处。
以上是关于已知球面经纬度求方位角和反方位角(awk一行代码实现)的主要内容,如果未能解决你的问题,请参考以下文章