python根据经纬度计算两点间距离

需要计算两点间距离,可以通过经纬度来计算,具体公式如下

#!/usr/bin/python3
#coding:utf-8
from math import radians, cos, sin, asin, sqrt

def point_distance(lon1, lat1, lon2, lat2):
    # 将十进制度数转化为弧度
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
    # haversine公式
    dlon = lon2 - lon1
    dlat = lat2 - lat1
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * asin(sqrt(a))
    r = 6378.137 # 地球平均半径,单位为公里
    return c * r * 1000

print(point_distance(113.363232, 31.879132, 113.362455, 31.878233))

最后打印结果,单位是米

123.99814644654447

另外我们可以通过geopy包来计算,这个比较简单,直接安装,然后一行代码就可以算出来了

pip instal geopy

然后一行代码可以算出来,还可以直接出米和千米单位的数值

from geopy.distance import geodesic
print(geodesic((30.28708,120.12802999999997), (28.7427,115.86572000000001)).m)
print(geodesic((30.28708,120.12802999999997), (28.7427,115.86572000000001)).km)

经纬度误差

赤道周长(米)     度数(度)
40076000     360
111322.2222     1
11132.22222     0.1
1113.222222     0.01
111.3222222     0.001
11.13222222     0.0001
1.113222222     0.00001
0.111322222     0.000001
0.011132222     0.0000001


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/698.html