当前位置:网站首页>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) };
}
边栏推荐
- flask session伪造之hctf admin
- 3D detection: fast visualization of 3D box and point cloud
- 实现IP地址归属地显示功能、号码归属地查询
- Build a secure and trusted computing platform based on Kunpeng's native security
- 带你掌握三层架构(建议收藏)
- Show the mathematical formula in El table
- 【日常训练--腾讯精选50】231. 2 的幂
- Evolution of customer service hotline of dewu
- Getting started with MySQL
- 现在网上开户安全么?那么网上开户选哪个证券公司?
猜你喜欢
Battle Atlas: 12 scenarios detailing the requirements for container safety construction
Show the mathematical formula in El table
Vmware 与主机之间传输文件
交付效率提升52倍,运营效率提升10倍,看《金融云原生技术实践案例汇编》(附下载)
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
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)
"Song of ice and fire" in the eleventh issue of "open source Roundtable" -- how to balance the natural contradiction between open source and security?
Use day JS let time (displayed as minutes, hours, days, months, and so on)
Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1
Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
随机推荐
How to check the ram and ROM usage of MCU through Keil
Detr introduction
TPG x AIDU | AI leading talent recruitment plan in progress!
Attribute keywords aliases, calculated, cardinality, ClientName
Is it safe to open an account online now? Which securities company should I choose to open an account online?
Social responsibility · value co creation, Zhongguancun network security and Information Industry Alliance dialogue, wechat entrepreneur Haitai Fangyuan, chairman Mr. Jiang Haizhou
Custom thread pool rejection policy
请问,如图,pyhon云函数提示使用了 pymysql模块,这个是怎么回事?
Mysql怎样控制replace替换的次数?
Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)
Lavarel之环境配置 .env
供应链供需预估-[时间序列]
请问,在使用flink sql sink数据到kafka的时候出现执行成功,但是kafka里面没有数
作战图鉴:12大场景详述容器安全建设要求
室内ROS机器人导航调试记录(膨胀半径的选取经验)
C语言数组相关问题深度理解
社会责任·价值共创,中关村网络安全与信息化产业联盟对话网信企业家海泰方圆董事长姜海舟先生
Excerpt from "misogyny: female disgust in Japan"
【日常训练】648. 单词替换
[1] Basic knowledge of ros2 - summary version of operation commands