距离
根据经纬度计算距离是有固定公式的,按照公式写个函数很简单。 import math
def cal_dis(lat1, lon1,lat2, lon2):
latitude1 = (math.pi/180)*lat1
latitude2 = (math.pi/180)*lat2
longitude1 = (math.pi/180)*lon1
longitude2= (math.pi/180)*lon2
中央一号文件2018全文
#因此AB两点的球⾯距离为:{arccos[sinb*siny+cosb*cosy*cos(a-x)]}*R
#地球半径
文章与人品
中国同学录
R = 6378.137
d = math.acos(math.sin(latitude1)*math.sin(latitude2)+ s(latitude1)*s(latitude2)*s(longitude2-longitude1))*R
return d
if__name__ == '__main__':
print cal_dis(23.0,101.1,23.06,113.34)
注意,经纬度是⾓度,⽽三⾓函数的输⼊是弧度,⾓度与弧度的关系 180=pi
有⼀次我在⼀个项⽬中发现 matlab 的计算距离和上⾯这个函数有些出⼊,虽然相差不⼤,但是确实不⼀样,当时也折腾了好久,后来发现python 有个⾃带的函数计算结果和 matlab 相同。
from geopy.distance import geodesic
丙烯腈-丁二烯-苯乙烯
geodesic((30.28708,120.12802999999997), (28.7427,115.86572000000001)).m
⽅位⾓
def calc_azimuth(lat1, lon1, lat2, lon2):
lat1_rad = lat1 * math.pi / 180
lon1_rad = lon1 * math.pi / 180
lat2_rad = lat2 * math.pi / 180
lon2_rad = lon2 * math.pi / 180
大气稳定度
y = math.sin(lon2_rad - lon1_rad) * s(lat2_rad)
三叶草成人x = s(lat1_rad) * math.sin(lat2_rad) - \
math.sin(lat1_rad) * s(lat2_rad) * s(lon2_rad - lon1_rad)
brng = math.atan2(y, x) * 180 / math.pi
return float((brng + 360.0) % 360.0)
所谓⽅位⾓是与正北⽅向、顺时针之间的夹⾓