当前位置:网站首页>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) };
}
边栏推荐
- Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
- TPG x AIDU | AI leading talent recruitment plan in progress!
- Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
- PHP中用下划线开头的变量含义
- [1] Basic knowledge of ros2 - summary version of operation commands
- Flink | multi stream conversion
- mysql ”Invalid use of null value“ 解决方法
- 属性关键字Aliases,Calculated,Cardinality,ClientName
- Excerpt from "misogyny: female disgust in Japan"
- JS function returns multiple values
猜你喜欢

Battle Atlas: 12 scenarios detailing the requirements for container safety construction

Esp32 ① compilation environment

2022-7-6 初学redis(一)在 Linux 下下载安装并运行 redis

LIS longest ascending subsequence problem (dynamic programming, greed + dichotomy)

Enregistrement de la navigation et de la mise en service du robot ROS intérieur (expérience de sélection du rayon de dilatation)

2022-7-7 Leetcode 844. Compare strings with backspace

2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array

Build a secure and trusted computing platform based on Kunpeng's native security

Flink | 多流转换

JS slow motion animation principle teaching (super detail)
随机推荐
Data refresh of recyclerview
566. Reshaping the matrix
得物客服热线的演进之路
Server to server (S2S) event (adjust)
FCOS3D label assignment
move base参数解析及经验总结
2022-7-6 beginner redis (I) download, install and run redis under Linux
现在网上开户安全么?那么网上开户选哪个证券公司?
Excellent open source system recommendation of ThinkPHP framework
Vmware 与主机之间传输文件
【面试高频题】难度 2.5/5,简单结合 DFS 的 Trie 模板级运用题
Talk about pseudo sharing
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1
MySQL error 28 and solution
Help tenants
How far can it go to adopt a cow by selling the concept to the market?
[high frequency interview questions] difficulty 2.5/5, simple combination of DFS trie template level application questions
Esp32 construction engineering add components
postgresql array类型,每一项拼接