当前位置:网站首页>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) };
}
边栏推荐
- [daily training -- Tencent select 50] 231 Power of 2
- call undefined function openssl_cipher_iv_length
- Oracle advanced (V) schema solution
- TPG x AIDU | AI leading talent recruitment plan in progress!
- C语言数组相关问题深度理解
- 2022-7-6 Leetcode 977.有序数组的平方
- Huawei image address
- Solve the cache breakdown problem
- How can the PC page call QQ for online chat?
- Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
猜你喜欢

"New red flag Cup" desktop application creativity competition 2022

2022-7-6 Leetcode 977. Square of ordered array

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

C语言数组相关问题深度理解

Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)

2022-7-7 Leetcode 844. Compare strings with backspace
![Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]](/img/35/5224252624cc76f42cbd0fd5c81d8c.png)
Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]

为租客提供帮助

Wired network IP address of VMware shared host

AI talent cultivation new ideas, this live broadcast has what you care about
随机推荐
XML文件的解析操作
FCOS3D label assignment
2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array
2022-7-6 Leetcode 977.有序数组的平方
Data refresh of recyclerview
高等數學---第八章多元函數微分學1
Use day JS let time (displayed as minutes, hours, days, months, and so on)
Dry goods | summarize the linkage use of those vulnerability tools
Is it safe to open an account online now? Which securities company should I choose to open an account online?
Leetcode simple question sharing (20)
Wired network IP address of VMware shared host
648. Word replacement: the classic application of dictionary tree
Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1
请问,如图,pyhon云函数提示使用了 pymysql模块,这个是怎么回事?
Transferring files between VMware and host
Is the spare money in your hand better to fry stocks or buy financial products?
请问,redis没有消费消息,都在redis里堆着是怎么回事?用的是cerely 。
AutoCAD - how to input angle dimensions and CAD diameter symbols greater than 180 degrees?
[daily training -- Tencent select 50] 231 Power of 2
Show the mathematical formula in El table