python3关于经纬度、方向角、目标距离

博主搞了半天haversin公式倒腾距离之后,发现有现成的geopy可用,且网上查到的一些函数用法似乎有改变,遂整理如下

已知两点经纬度求距离

from geopy.distance import geodesic

nodes = [(-22.8981672 -43.2219277),(-22.8835229 -43.2631313)]

#以千米为单位求两点之间距离
distance = geodesic(nodes[0],nodes[1]).kilometers
print('两点之间距离:',distance)

注意以上geodesic是geopy2.0版本的用法,在1.19版本中使用时为VincentyDistance

 

已知两点经纬度求方向角(方向角:与正北顺时针夹角)

from math import sin, cos, atan2, pi

#计算方向角
def calcu_azimuth(lat1, lon1, lat2, lon2):
    lat1_rad = lat1 * pi / 180
    lon1_rad = lon1 * pi / 180
    lat2_rad = lat2 * pi / 180
    lon2_rad = lon2 * pi / 180
    y = sin(lon2_rad - lon1_rad) * cos(lat2_rad)
    x = cos(lat1_rad) * sin(lat2_rad) - sin(lat1_rad) * cos(lat2_rad) * cos(lon2_rad - lon1_rad)
    brng = atan2(y, x) / pi * 180
    return float((brng + 360.0) % 360.0)

已知一点经纬度、方向角、目标距离

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值