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

您所在的位置:网站首页 经纬度之间的距离计算方法是什么 计算两个经纬度点之间的方位角(初始方位角)

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

2024-07-12 14:29| 来源: 网络整理| 查看: 265

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

一:思路

要计算两个经纬度点之间的夹角(通常称为方位角或初始方位角),你可以使用大圆距离公式或者一些近似方法。 假设你有两个点,点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 + "°");


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3