当前位置:网站首页>Cesium knows the longitude and latitude of one point and the distance to find the longitude and latitude of another point
Cesium knows the longitude and latitude of one point and the distance to find the longitude and latitude of another point
2022-07-07 14:04:00 【The most ferocious little seal】
The whole article refers to :GIS Algorithm – Know a little latitude and longitude , azimuth , Find another point from distance
The algorithm used by the great God :
Great circle algorithm :http://www.movable-type.co.uk/scripts/latlong.html
Usage method : Direct value transfer , What you return is the longitude and latitude of another point .
explain : Elevation is not considered in this method .
/** * * @param {*} lon longitude * @param {*} lat latitude * @param {*} angle angle (0~360 degree ) * @param {*} distance distance ( rice ) * */
function get_another_point(lon, lat, angle, distance) {
// WGS84 Coordinate system
var a = 6378137; // Equatorial radius
var b = 6356752.3142; // Short radius
var f = 1 / 298.257223563; // Oblateness
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) };
}
边栏推荐
- Help tenants
- C语言数组相关问题深度理解
- 交付效率提升52倍,运营效率提升10倍,看《金融云原生技术实践案例汇编》(附下载)
- Thread pool reject policy best practices
- Data refresh of recyclerview
- 3D detection: fast visualization of 3D box and point cloud
- [high frequency interview questions] difficulty 2.5/5, simple combination of DFS trie template level application questions
- 请问,我kafka 3个分区,flinksql 任务中 写了 join操作,,我怎么单独给join
- Take you to master the three-tier architecture (recommended Collection)
- .net core 关于redis的pipeline以及事务
猜你喜欢

.net core 关于redis的pipeline以及事务

MySQL error 28 and solution

Vmware 与主机之间传输文件
![供应链供需预估-[时间序列]](/img/2c/82d118cfbcef4498998298dd3844b1.png)
供应链供需预估-[时间序列]

带你掌握三层架构(建议收藏)

高等數學---第八章多元函數微分學1

2022-7-6 Leetcode27. Remove the element - I haven't done the problem for a long time. It's such an embarrassing day for double pointers

"Song of ice and fire" in the eleventh issue of "open source Roundtable" -- how to balance the natural contradiction between open source and security?

作战图鉴:12大场景详述容器安全建设要求

DID登陆-MetaMask
随机推荐
PC端页面如何调用QQ进行在线聊天?
Supply chain supply and demand estimation - [time series]
Solve the cache breakdown problem
Attribute keywords aliases, calculated, cardinality, ClientName
Flask session forged hctf admin
118. Yanghui triangle
[1] Basic knowledge of ros2 - summary version of operation commands
118. 杨辉三角
参数关键字Final,Flags,Internal,映射关键字Internal
Is the compass stock software reliable? Is it safe to trade stocks?
2022-7-6 sigurg is used to receive external data. I don't know why it can't be printed out
Best practice | using Tencent cloud AI willingness to audit as the escort of telephone compliance
Vmware 与主机之间传输文件
Help tenants
实现IP地址归属地显示功能、号码归属地查询
为租客提供帮助
Indoor ROS robot navigation commissioning record (experience in selecting expansion radius)
TPG x AIDU | AI leading talent recruitment plan in progress!
室內ROS機器人導航調試記錄(膨脹半徑的選取經驗)
Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1