找回密码
 快速注册
搜索
查看: 36|回复: 0

[几何] 计算纬度/经度点之间的距离、方位角等

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-4-11 19:41 |阅读模式
Calculate distance, bearing and more between Latitude/Longitude points
这是计算两点之间大圆距离的“haversine formula(半正矢公式)”——即地球表面上的最短距离。
$φ$ 纬度
$λ$ 经度
$R$ 地球半径(平均半径 = 6,371 km)
$a = \sin^2(\Deltaφ/2) +\cos φ_1 ⋅ \cos φ_2 ⋅ \sin^2(\Deltaλ/2)$
$c = 2 ⋅ \text{atan2}( \sqrt a, \sqrt{1−a} )$
$d = R ⋅ c$

JavaScript:
  1. const R = 6371e3; // metres
  2. const φ1 = lat1 * Math.PI/180; // φ, λ in radians
  3. const φ2 = lat2 * Math.PI/180;
  4. const Δφ = (lat2-lat1) * Math.PI/180;
  5. const Δλ = (lon2-lon1) * Math.PI/180;
  6. const a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
  7.           Math.cos(φ1) * Math.cos(φ2) *
  8.           Math.sin(Δλ/2) * Math.sin(Δλ/2);
  9. const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  10. const d = R * c; // in metres
复制代码

php 根据两个经纬度获取到两者之间的距离
mysql,php和js根据经纬度计算距离
js计算两个经纬度之间的距离

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 15:30

Powered by Discuz!

× 快速回复 返回顶部 返回列表