当前位置:网站首页>Cesium 已知一点经纬度和距离求另一个点的经纬度
Cesium 已知一点经纬度和距离求另一个点的经纬度
2022-07-07 11:59:00 【最凶残的小海豹】
整篇参考了:GIS算法–已知一点经纬度,方位角,距离求另一点
大神用的算法:
大圆算法:http://www.movable-type.co.uk/scripts/latlong.html
使用方法:直接传值,返回的就是另一个点的经纬度。
说明:本方法没有考虑高程问题。
/** * * @param {*} lon 经度 * @param {*} lat 纬度 * @param {*} angle 角度 (0~360度) * @param {*} distance 距离 (米) * */
function get_another_point(lon, lat, angle, distance) {
// WGS84坐标系
var a = 6378137; // 赤道半径
var b = 6356752.3142; // 短半径
var f = 1 / 298.257223563; // 扁率
var alpha1 = angle * (Math.PI / 180)
var sinAlpha1 = Math.sin(alpha1);
var cosAlpha1 = Math.cos(alpha1);
var tanU1 = (1 - f) * Math.tan(lat * (Math.PI / 180));
var cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)), sinU1 = tanU1 * cosU1;
var sigma1 = Math.atan2(tanU1, cosAlpha1);
var sinAlpha = cosU1 * sinAlpha1;
var cosSqAlpha = 1 - sinAlpha * sinAlpha;
var uSq = cosSqAlpha * (a * a - b * b) / (b * b);
var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq)));
var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));
var sigma = distance / (b * A), sigmaP = 2 * Math.PI;
while (Math.abs(sigma - sigmaP) > 1e-12) {
var cos2SigmaM = Math.cos(2 * sigma1 + sigma);
var sinSigma = Math.sin(sigma);
var cosSigma = Math.cos(sigma);
var 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;
}
var tmp = sinU1 * sinSigma - cosU1 * cosSigma * cosAlpha1;
var lat2 = Math.atan2(sinU1 * cosSigma + cosU1 * sinSigma * cosAlpha1,
(1 - f) * Math.sqrt(sinAlpha * sinAlpha + tmp * tmp));
var lambda = Math.atan2(sinSigma * sinAlpha1, cosU1 * cosSigma - sinU1 * sinSigma * cosAlpha1);
var C = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha));
var L = lambda - (1 - C) * f * sinAlpha *
(sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));
var revAz = Math.atan2(sinAlpha, -tmp); // final bearing
return {
lon: Number(lon) + L * (180 / Math.PI), lat: lat2 * (180 / Math.PI) };
}
边栏推荐
- 作战图鉴:12大场景详述容器安全建设要求
- The delivery efficiency is increased by 52 times, and the operation efficiency is increased by 10 times. See the compilation of practical cases of financial cloud native technology (with download)
- Flink | multi stream conversion
- 2022-7-7 Leetcode 844.比较含退格的字符串
- 供应链供需预估-[时间序列]
- Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
- Huawei image address
- Redis只能做缓存?太out了!
- THINKPHP框架的优秀开源系统推荐
- Final review notes of single chip microcomputer principle
猜你喜欢
MySQL error 28 and solution
2022-7-6 sigurg is used to receive external data. I don't know why it can't be printed out
Evolution of customer service hotline of dewu
[fortress machine] what is the difference between cloud fortress machine and ordinary fortress machine?
数据库系统概论-第一章绪论【概念模型、层次模型和三级模式(外模式、模式、内模式)】
Esp32 ① compilation environment
How far can it go to adopt a cow by selling the concept to the market?
Milkdown control icon
Detr introduction
Enregistrement de la navigation et de la mise en service du robot ROS intérieur (expérience de sélection du rayon de dilatation)
随机推荐
MySQL error 28 and solution
The meaning of variables starting with underscores in PHP
Enregistrement de la navigation et de la mise en service du robot ROS intérieur (expérience de sélection du rayon de dilatation)
mysql 局域网内访问不到的问题
SSRF vulnerability file pseudo protocol [netding Cup 2018] fakebook1
社会责任·价值共创,中关村网络安全与信息化产业联盟对话网信企业家海泰方圆董事长姜海舟先生
2022-7-6 Leetcode27.移除元素——太久没有做题了,为双指针如此狼狈的一天
How does MySQL control the number of replace?
Help tenants
2022-7-6 Leetcode 977. Square of ordered array
Show the mathematical formula in El table
ES日志报错赏析-Limit of total fields
Leetcode simple question sharing (20)
SSRF漏洞file伪协议之[网鼎杯 2018]Fakebook1
最佳实践 | 用腾讯云AI意愿核身为电话合规保驾护航
THINKPHP框架的优秀开源系统推荐
[high frequency interview questions] difficulty 2.5/5, simple combination of DFS trie template level application questions
现在网上开户安全么?那么网上开户选哪个证券公司?
搜索框效果的实现【每日一题】
Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)