1908 0

如何利用经纬度计算两个地点的球面距离? [推广有奖]

  • 0关注
  • 9粉丝

已卖:346份资源

讲师

40%

还不是VIP/贵宾

-

威望
0
论坛币
5933 个
通用积分
175.0222
学术水平
10 点
热心指数
13 点
信用等级
8 点
经验
9215 点
帖子
232
精华
0
在线时间
332 小时
注册时间
2018-9-28
最后登录
2020-7-17

楼主
诗人都在海底 在职认证  发表于 2018-12-10 17:10:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
球面距离计算思路:
球面距离其实是一段弧长,计算弧长的公式是
l/2π*r=θ/2π
故 l=r*θ
其中r为地球半径




1. Python版本:环境:Python3、math、numpy
  1. EARTH_REDIUS = 6378.137
  2. import math
  3. def rad(d):
  4.     return d * math.pi / 180.0

  5. def getDistance(lat1, lng1, lat2, lng2):
  6.     radLat1 = rad(lat1)
  7.     radLat2 = rad(lat2)
  8.     a = radLat1 - radLat2
  9.     b = rad(lng1) - rad(lng2)
  10.     s = 2 * math.asin(math.sqrt(math.pow(math.sin(a/2), 2) + math.cos(radLat1) * math.cos(radLat2) * math.pow(math.sin(b/2), 2)))
  11.     s = s * EARTH_REDIUS
  12.     return s
复制代码

2. Javascript版本:
  1. function getDistance(lat1, lng1, lat2, lng2) {
  2.     var radLat1 = toRadians(lat1);
  3.     var radLat2 = toRadians(lat2);
  4.     var deltaLat = radLat1 - radLat2;
  5.     var deltaLng = toRadians(lng1) - toRadians(lng2);
  6.     var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2)
  7.             + Math.cos(radLat1) *
  8.             Math.cos(radLat2) *
  9.             Math.pow(Math.sin(deltaLng / 2), 2)));
  10.     return dis * 6378.137;

  11.     function toRadians(d) {
  12.         return d * Math.PI / 180;
  13.     }
  14. }
复制代码





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:球面距离 距离计算 经纬度 经纬度计算距离

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 11:27