计算两个经纬度点之间的方位角(初始方位角)

本文介绍了如何利用大圆距离公式计算两个经纬度点之间的方位角,提供了一个JavaScript函数示例,并提醒在长距离或高纬度时可能需要考虑精度问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做地图上轨迹计算方位角的时候,需要计算两个经纬度点之间的方位角,这里把计算过程记录分享一下。

一:思路

要计算两个经纬度点之间的夹角(通常称为方位角或初始方位角),你可以使用大圆距离公式或者一些近似方法。
假设你有两个点,点A(纬度LatA, 经度LonA)和点B(纬度LatB, 经度LonB)。你可以使用以下公式来计算从点A到点B的方位角(以度为单位):
计算经纬度差值(以弧度为单位):
ΔLon = LonB - LonA
ΔLat = LatB - LatA
使用以下公式计算方位角(单位为弧度):
θ = atan2(sin(ΔLon) * cos(LatB), cos(LatA) * sin(LatB) - sin(LatA) * cos(LatB) * cos(ΔLon))
最后将方位角从弧度转换为度:
θ_deg = θ * (180 / π)
由于地球是一个椭球体,不是完美的球体,因此上述公式在长距离或高纬度地区可能不够精确。对于需要更高精度的应用,你可能需要使用更复杂的地理计算方法或库。上诉公式只能大概计算

二:实例代码


//计算旋转角度
function getAngle( lon1, lat1, lon2,lat2) {
  const deg2rad = Math.PI / 180;
  const dlat = (lat2 - lat1) * deg2rad;
  const dlon = (lon2 - lon1) * deg2rad;
  const y = Math.sin(dlon) * Math.cos(lat2 * deg2rad);
  const x = Math.cos(lat1 * deg2rad) * Math.sin(lat2 * deg2rad) - Math.sin(lat1 * deg2rad) * Math.cos(lat2 * deg2rad) * Math.cos(dlon);
  const angle = Math.atan2(y, x) * 180 / Math.PI;
  return angle;
}

// 示例用法  
var lat1 = 39.907522; // 纬度1  
var lon1 = 116.3972333; // 经度1  
var lat2 = 31.230422; // 纬度2  
var lon2 = 121.473733; // 经度2  
  
var bearing = getAngle( lon1, lat1, lon2,lat2);  
console.log("方位角(初始方位角)是: " + bearing + "°");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Devil枫

发财小手鼓励一下作者大大

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值