Forgot password?
 Create new account
View 108|Reply 0

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

[Copy link]

3148

Threads

8496

Posts

610K

Credits

Credits
66183
QQ

Show all posts

hbghlyj Posted at 2023-4-11 19:41:52 |Read mode
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
Copy the Code

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

手机版Mobile version|Leisure Math Forum

2025-4-21 01:46 GMT+8

Powered by Discuz!

× Quick Reply To Top Return to the list