已知球面经纬度求方位角和距离
一个常见的错误
假如你在广州,先朝东北走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
求反方位角时,把起点重点的位置互换即可。
标签:cos,方位角,经纬度,lat2,球面,awk,lon1,sin From: https://www.cnblogs.com/liangxuran/p/17231228.html