已知一个点的经纬度、方位角、距离,求另一点经纬度
/*** 长半径a=6378137 米*/public static double EARTH_RADIUS = 6378137;/*** 短半径b=6356752.3142*/public static double b = 6356752.3142;/*** 扁率f=1/298.2572236*/public static double f = 1 / 298.2572236;/*** 已知一点经纬度,方位角,距离,求另一点经纬度* 通过三角函数求终点坐标-球面坐标系* </summary>* <param name="angle">角度</param>*<param name="startPoint">起点</param>* <param name="distance">距离(米)</param>* <returns>终点坐标</returns>*/public static double[] getEndPointByTrigonometric(double angle, double[] startPoint, double distance) {double lon=startPoint[0];double lat=startPoint[1];double alpha1 = rad(angle);double sinAlpha1 = Math.sin(alpha1);double cosAlpha1 = Math.cos(alpha1);double tanU1 = (1 - f) * Math.tan(rad(lat));double cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1));double sinU1 = tanU1 * cosU1;double sigma1 = Math.atan2(tanU1, cosAlpha1);double sinAlpha = cosU1 * sinAlpha1;double cosSqAlpha = 1 - sinAlpha * sinAlpha;double uSq = cosSqAlpha * (EARTH_RADIUS * EARTH_RADIUS - b * b) / (b * b);double A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq)));double B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));double cos2SigmaM = 0;double sinSigma = 0;double cosSigma = 0;double sigma = distance / (b * A), sigmaP = 2 * Math.PI;while (Math.abs(sigma - sigmaP) > 1e-12) {cos2SigmaM = Math.cos(2 * sigma1 + sigma);sinSigma = Math.sin(sigma);cosSigma = Math.cos(sigma);double deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)- B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));sigmaP = sigma;sigma = distance / (b * A) + deltaSigma;}double tmp = sinU1 * sinSigma - cosU1 * cosSigma * cosAlpha1;double lat2 = Math.atan2(sinU1 * cosSigma + cosU1 * sinSigma * cosAlpha1,(1 - f) * Math.sqrt(sinAlpha * sinAlpha + tmp * tmp));double lambda = Math.atan2(sinSigma * sinAlpha1, cosU1 * cosSigma - sinU1 * sinSigma * cosAlpha1);double C = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha));double L = lambda - (1 - C) * f * sinAlpha* (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));double revAz = Math.atan2(sinAlpha, -tmp); // final bearing// System.out.println(revAz);
// System.out.println(lon + deg(L) + "," + deg(lat2));double[] endPoint=new double[2];endPoint[0]=lon + deg(L);endPoint[1]= deg(lat2);return endPoint;}/*** 度换成弧度* @param d 度* @return 弧度*/public static double rad(double d) {return d * Math.PI / 180.0;}/*** 弧度换成度* @param x 弧度* @return 度*/public static double deg(double x) {return x * 180 / Math.PI;}
已知一个点的经纬度、方位角、距离,求另一点经纬度相关推荐
- 已知曲线上三点,如何求中间一点的法向量。
如下图,已知 A.B.C 三个点,求 B 点的 法向量,即(fCosSita, fSinSita),Sita 为 法线按逆时针方向和水平方向的夹角. 先计算线段AB的单位垂线段2,再计算线段BC 的单 ...
- GIS算法--已知一点经纬度,方位角,距离求另一点
已知一个点A的经纬度坐标,点B相对与A的方位角,B到A的距离,求B的经纬度坐标,用Javascript语言来完成该算法,借用了一下openL CommonFunc.caculate={Vincenty ...
- 已知基点的经纬度,根据方位角和运动距离求另外一点的经纬度
1. 已知基点的经纬度,根据方位角和运动距离求另外一点的经纬度 1.1 需求概述及图解 假设方位角是α, 那从点1到点2的平移距离分别如下所示dsinα, dcosα. 这里正北为0度.已知基点(点1 ...
- matlab二维图形中确定一点的坐标系,在CAD中已知一个平面图中两个点的坐标如何建立坐标系以便求出图形中任一点的坐标?...
在CAD中已知一个平面图中两个点的坐标如何建立坐标系以便求出图形中任一点的坐标?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一 ...
- SAP HUM已知一个内部HU号码,如何得到HU号码?
SAP HUM已知一个内部HU号码,如何得到HU号码? 去表VEPO 查数据即可, 为什么HU要有internal HU号码 ? Prior to the existence of HUM, in W ...
- html如何获得网址,已知一个网址,如何获得该网址对应的html源代码?在del 找人事管理软件...
销售管理软件版1楼: 已知一个网址,如何获得该网址对应的html源代码?在delphi中如何实现?今天不解决,没饭吃了... 2楼: 用WebBrowser控件,先把网址传给WebBrowser,然后 ...
- c#中已知一个外部窗口的句柄,怎么关闭
已知一个外部窗口的句柄,怎么关闭它.怎么给这个窗口的一个文本框设置内容. --------------------------------------------------------------- ...
- 已知一个掺杂了多个数字字符的中文名拼音,去掉所有数字字符之后,形式为“名”+空格+“姓”;并且名和姓的首字母大写,其他小写,要求输出姓名全拼,且全为小写。(后附详细样例说明)
已知一个掺杂了多个数字字符的中文名拼音,去掉所有数字字符之后,形式为"名"+空格+"姓":并且名和姓的首字母大写,其他小写,要求输出姓名全拼,且全为小写.(后附 ...
- 每日一题(42)—— 已知一个数组table,用一个宏定义,求出数据的元素个数
已知一个数组table,用一个宏定义,求出数据的元素个数. // 总大小除以第一个元素的大小 #define TNTBL (sizeof(table)/sizeof(table[0]))
最新文章
- MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 五 --- 为ListMongoDBRef增加扩展方法...
- css颜色rgba代码对照表_改善 CSS 的 10 个最佳实践
- UHF RFID编码之TPP编码
- 数据库开发——MySQL——pymysql模块
- 四大组件之BroadcastReceiver
- 黑科技!颠覆者!区块链,再不关注就晚了
- matlab实现2dpsk调制与解调,(完整版)matlab设计2DPSK信号调制与解调
- 微型计算机天逸510s光驱,天逸510s Mini兼macOS BigSur安装教程
- 高中数学联赛二试怎么准备
- 30 行代码实现,支付宝蚂蚁森林自动收能量!
- esayExcel 获取值 null 去除excel中换行 回车 水平制表符
- springMVC原理,一看明了
- 走进梦龙冰淇淋的生产线 揭晓“灯塔工厂”背后的秘密
- layer.open打开一个HTML页面的窗口和传值
- Win10系统桌面图标突然变成白色如何恢复
- java 狗带风波_养狗风波作文800字
- Windows系统DOS命令之多线程技术
- 基于SpringBoot的智能物流监控系统数据系统
- Debian安装和配置ssh服务
- 气源站护士站区域气体监控解决方案
热门文章
- linux把集群中所有机器关闭,Hadoop集群(第5期)_Hadoop安装配置
- Leetcode每日一题:142.linked-list-cycle-ii(环形链表Ⅱ)
- Leetcode每日一题:141.linked-list-cycle(环形链表)
- 吴恩达机器学习作业Python实现(五):偏差和方差
- VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition
- 渗透测试实践(工具使用总结)
- python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
- python 的csr_Python scipy.sparse.csr_matrix()[csc_matrix()]
- python开发环境有哪些特点_快速了解Python开发环境Spyder
- python代码斜率_在Python中准确地测量代码执行时间