当前位置:网站首页>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) };
}
边栏推荐
- PostgreSQL array type, each splice
- Mysql怎样控制replace替换的次数?
- Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
- Xshell connection server changes key login to password login
- Flask session forged hctf admin
- AI talent cultivation new ideas, this live broadcast has what you care about
- 云计算安全扩展要求关注的安全目标和实现方式区分原则有哪些?
- Indoor ROS robot navigation commissioning record (experience in selecting expansion radius)
- Deep understanding of array related problems in C language
- Battle Atlas: 12 scenarios detailing the requirements for container safety construction
猜你喜欢

2022-7-6 Leetcode27.移除元素——太久没有做题了,为双指针如此狼狈的一天

高等数学---第八章多元函数微分学1

使用day.js让时间 (显示为几分钟前 几小时前 几天前 几个月前 )

DID登陆-MetaMask

2022-7-7 Leetcode 844.比较含退格的字符串

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)

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

MySQL error 28 and solution

Cinnamon taskbar speed

Social responsibility · value co creation, Zhongguancun network security and Information Industry Alliance dialogue, wechat entrepreneur Haitai Fangyuan, chairman Mr. Jiang Haizhou
随机推荐
【堡垒机】云堡垒机和普通堡垒机的区别是什么?
10 pictures open the door of CPU cache consistency
Split screen bug notes
2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array
Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)
2022-7-7 Leetcode 844. Compare strings with backspace
Esp32 construction engineering add components
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
Dry goods | summarize the linkage use of those vulnerability tools
Ogre introduction
Redis can only cache? Too out!
Cinnamon taskbar speed
Excerpt from "misogyny: female disgust in Japan"
566. Reshaping the matrix
供应链供需预估-[时间序列]
Vmware 与主机之间传输文件
The reason why data truncated for column 'xxx' at row 1 appears in the MySQL import file
Navicat run SQL file import data incomplete or import failed
Best practice | using Tencent cloud AI willingness to audit as the escort of telephone compliance
mysql ”Invalid use of null value“ 解决方法