python通过经纬度计算两点之间距离

from math import sin, asin, cos, radians, fabs, sqrt

EARTH_RADIUS = 6371  # 地球平均半径,6371km


def hav(theta):
    s = sin(theta / 2)
    return s * s


def get_distance_hav(lat0, lng0, lat1, lng1):
    "用haversine公式计算球面两点间的距离。"
    # 经纬度转换成弧度
    lat0 = radians(lat0)
    lat1 = radians(lat1)
    lng0 = radians(lng0)
    lng1 = radians(lng1)

    dlng = fabs(lng0 - lng1)
    dlat = fabs(lat0 - lat1)
    h = hav(dlat) + cos(lat0) * cos(lat1) * hav(dlng)
    distance = 2 * EARTH_RADIUS * asin(sqrt(h))

    return distance


lon1, lat1 = (22.599578, 113.973129)  # 深圳野生动物园(起点)
lon2, lat2 = (22.6986848, 114.3311032)  # 深圳坪山站 (百度地图测距:38.3km)
d2 = get_distance_hav(lon1, lat1, lon2, lat2)
# print(d2)

lon2, lat2 = (39.9087202, 116.3974799)  # 北京天安门(1938.4KM)
d2 = get_distance_hav(lon1, lat1, lon2, lat2)
# print(d2)

lon2, lat2 = (34.0522342, -118.2436849)  # 洛杉矶(11625.7KM)
d2 = get_distance_hav(lon1, lat1, lon2, lat2)
# print(d2)

print(get_distance_hav(113.6917100000,34.8279700000,113.674250000, 34.8087700000))


  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值