首页 > 其他分享 >已知球面经纬度求方位角和反方位角(awk一行代码实现)

已知球面经纬度求方位角和反方位角(awk一行代码实现)

时间:2023-03-18 17:11:35浏览次数:46  
标签:cos 方位角 经纬度 lat2 球面 awk lon1 sin

已知球面经纬度求方位角和距离

一个常见的错误

假如你在广州,先朝东北走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

相关文章

  • 获取百度地图的某个经纬度最近的地名
    importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLEncoder;importor......
  • awk 处理POSCAR的问题
    利用awd给POSCAR所有行添加一列例如把123改成123G使用命令awk'{print$0,"G"}'POSCAR但是出现的结果是G123,经过查找,是因为该POSCAR用vesta导出了,接......
  • #Python 计算地理经纬度距离
    一:X-MIND二:计算两点经纬度之间的距离经纬度是利用三维球面空间来描述地球上一个位置的坐标系统,每个经纬度坐标由经度lng和纬度lat两个分量组成。经纬度的有效范围为......
  • shell使用-awk
    工作原理:当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出。如果没有定义匹配条件默认是匹配所有数据行,awk隐含循环,条件匹配多少次动作就会执......
  • # yyds干货盘点 # 已知中心点的经纬度和长宽,怎么求矩形左上角和右下角经纬度呀?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【缄默】问了一个经纬度处理的问题,这里拿出来给大家分享下。二、实现过程这个问题确实挺难的,像是数学题目,这里【吴超......
  • 位置距离经纬度计算
    mysql经纬度转换距离查询$lng//经度$lat//纬度方案1:selectid,address,lng,lat,round(6371*acos(COS(RADIANS($lat))*COS(RADIANS(lat))*COS(RADIANS(lng)-RAD......
  • 述:经常用到的文本处理工具(shell编程三剑客)。 awk 命令名称来源
    ​文本格式化工具AWK  AWK:概述:   grep,sed,awk是shell编程中经常用到的文本处理工具(shell编程三剑客)。awk命令名称来源于它的三个开发者Aho、Weinberger和Kern......
  • linux 中awk语句统计pav 中基因的存在频率
     001、测试数据如下:[root@PC1test2]#lsa.txt[root@PC1test2]#cata.txt10101011111......
  • MySQL之根据经纬度计算距离
     可以在MySQL层面使用自定义计算函数来使用CREATEDEFINER=`xxx`@`%`FUNCTION`get_distance`(lat1float,lon1float,lat2float,lon2float)RETURNSfloatSQ......
  • Mysql 根据经纬度计算距离
     方式1:st_distance_spherest_distance_sphere函数返回以米为单位SELECT*,st_distance_sphere(point(lng,lat),point(116.3424590000,40.0497810000))asjuliFR......