两个经纬度偏角_计算两个经纬度坐标与正北方向夹角
/**
* 获取两个经纬度坐标正北方向夹角
* @param {Array} o_latlngs 原点经纬度坐标 [经度, 纬度]
* @param {Array} latlngs 经纬度坐标
* @return {Number} 返回角度
*/
function getTwoPointAngle(o_latlngs, latlngs) {
let A = new MyLatLng(o_latlngs[0], o_latlngs[1]);
let B = new MyLatLng(latlngs[0], latlngs[1]);
// console.log(getAngle(B, A));
return getAngle(B, A);
}
/**
* 求B点经纬度
* @param A 已知点的经纬度,
* @param distance AB两地的距离 单位km
* @param angle AB连线与正北方向的夹角(0~360)
* @return B点的经纬度
*/
function getMyLatLng(A, distance, angle) {
let dx = distance * 1000 * Math.sin(Math.toRadians(angle));
let dy = distance * 1000 * Math.cos(Math.toRadians(angle));
let bjd = (dx / A.Ed + A.m_RadLo) * 180.0 / Math.PI;
let bwd = (dy / A.Ec + A.m_RadLa) * 180.0 / Math.PI;
return new MyLatLng(bjd, bwd);
}
/**
* 获取AB连线与正北方向的角度
* @param A A点的经纬度
* @param B B点的经纬度
* @return AB连线与正北方向的角度(0~360)
*/
function getAngle(A, B) {
let dx = (B.m_RadLo - A.m_RadLo) * A.Ed;
let dy = (B.m_RadLa - A.m_RadLa) * A.Ec;
let angle = 0.0;
angle = Math.atan(Math.abs(dx / dy)) * 180.0 / Math.PI;
let dLo = B.m_Longitude - A.m_Longitude;
let dLa = B.m_Latitude - A.m_Latitude;
if (dLo > 0 && dLa <= 0) {
angle = (90.0 - angle) + 90;
} else if (dLo <= 0 && dLa < 0) {
angle = angle + 180.0;
} else if (dLo < 0 && dLa >= 0) {
angle = (90.0 - angle) + 270;
}
return angle;
}
class MyLatLng {
constructor(lng, lat) {
const Rc = 6378137; // 赤道半径
const Rj = 6356725; // 极半径
// 经度转为度分秒
this.m_LoDeg = lng;
this.m_LoMin = ((lng - this.m_LoDeg) * 60);
this.m_LoSec = (lng - this.m_LoDeg - this.m_LoMin / 60.0) * 3600;
// 纬度转为度分秒
this.m_LaDeg = lat;
this.m_LaMin = ((lat - this.m_LaDeg) * 60);
this.m_LaSec = (lat - this.m_LaDeg - this.m_LaMin / 60.0) * 3600;
this.m_Longitude = lng;
this.m_Latitude = lat;
this.m_RadLo = lng * Math.PI / 180.0; // 经度弧度
this.m_RadLa = lat * Math.PI / 180.0; // 纬度弧度
this.Ec = Rj + (Rc - Rj) * (90.0 - this.m_Latitude) / 90.0;
this.Ed = this.Ec * Math.cos(this.m_RadLa);
}
}
exports = module.exports = {
getTwoPointAngle: getTwoPointAngle
};
两个经纬度偏角_计算两个经纬度坐标与正北方向夹角相关推荐
- JS计算两个经纬度坐标与正北方向夹角
/** * 获取两个经纬度坐标正北方向夹角 * @param {Array} o_latlngs 原点经纬度坐标 [经度, 纬度] * @param {Array} latlngs 经纬度坐标 * @ ...
- 两个经纬度偏角_怎么根据两个经纬度计算出航向
C/C++ codedouble CChartCtrl::CalcltDirct(float fStarPtx, float fStarPty, float fEndPtx, float fEndPt ...
- 两个经纬度偏角_[转载]根据两点的经纬度求方位角和距离,等
最近自己做的一个小东西要用到经纬度方面的计算,查遍中文网页见到的要么基本上是一帮惜字如金装大爷的"砖家",要么就是像贴膏药一样,啪,一大堆代码往上一贴,一点说明都没有,让人看不懂, ...
- matlab求偏转角,轮胎的回正力矩——侧偏角特性计算实例
轮胎的回正力矩--侧偏角特性计算实例 某轮胎额定载荷N F z 8000=,在此载荷作用下附着系数 8.0=y μ,侧偏刚度 rad N K /81000=,转折系数1.0=y E .该轮胎半径m R ...
- 两塑胶柱脚光纤端子_插销两个塑胶柱光纤端子_无塑胶柱光纤端子_无锁螺丝头光纤端子_塑胶双柱脚光纤端子_两塑胶柱无锁螺丝孔光纤端子
两塑胶柱脚光纤座子_插销两个塑胶柱光纤座子_无塑胶柱光纤座子_无锁螺丝头光纤座子_塑胶双柱脚光纤座子_两塑胶柱无锁螺丝孔光纤座子 光纤耦合器TOSLINK是一种将数字电信号转换为光信号以传输数据的光传 ...
- c#语言+计算两个位置的距离,C#计算两个经纬度之间的距离
最近在项目中有一个功能需要计算两个经纬度之间的距离,在网上找了很多,也试了很多,下面的计算方法得出的结果是精度是最高,希望对大家有所帮助. private const double EARTH_RAD ...
- java中日期计算2月份_计算两日期间2月29日总数的Java程序
事先声明,本人仅仅是个计算机领域的新手,不久前开始学习Java.后来我接到了一份关于计算两日期间2月29日总数的编程作业,仓促之中我便写下了这个程序.由于之前可以说毫无编程经验,Java也仅仅是只学了 ...
- 正方形里面两个扇形相交部分_计算下图中阴影部分的面积,最简单的方法是用正方形的面积除以2...
这是一道小升初数学题,是某师大附中2018年招生分班考试题.题目是计算下图阴影部分的面积,如下图所示: 小升初数学题 图形包含了正方形.扇形和三角形,但是所求阴影部分的面积却是两个不规则的图形.这两个 ...
- python相似图片计算_计算两张图片相似度的方法总结
python工具包-pyssim 简介 python工具包,用来计算图像之间的结构相似性 (Structural Similarity Image Metric: SSIM).结构相似性介绍详见:ht ...
最新文章
- 企业如何告别这 5 类不靠谱的员工?
- python界面设置-Python进入后台界面(admin)设定
- [POI 2009] gas 贪心
- 实现自己的“单页”博客,只需要一个指令 (Moka)
- pycharm点击右上角退出程序时terminate和disconnect区别?(别用disconnect)
- 二十年后的回眸(2)——顺风顺水的前三年
- SAP CDS view里将Date和time连接成timestamp的函数
- 南工大计算机学院,江南-欢迎访问湖北工业大学计算机学院官方网站
- [Canvas]空战游戏进阶 增加己方子弹管理类
- 如何成为Emacs高手,像神一样使用编辑器
- Java学习笔记目录索引 (持续更新中)
- ctypes 传递opencv二值化图像给C++函数
- 锁定计算机密码如何取消,如何取消笔记本电脑硬盘密码锁?
- zblog php 二级菜单,zblog博客系统二级(下拉)导航菜单设置教程
- 【微信公众号】微信公众号授权出现的常见问题解决方案
- 硬件工程师常用的电路基础公式+换算!
- 获取java时间 小时_Java 如何获取当前时间前一个小时的时间
- 破解“低代码”的4大误区,拥抱低门槛高效率的软件开发新选择
- 2021-09-02牛客网每日10题--前端
- 时间煮雨,人生浅笑嫣然