Python计算距离常用于地图应用、数据分析、交通运输等场景。下面我们通过两个示例来详细讲解Python计算距离的使用方法。
1. 使用geopy库计算两点之间的距离
geopy是Python中用于地理编码的第三方库,可以方便快捷地计算两个地点之间的距离。下面是geopy库计算距离的示例代码
from geopy.distance import geodesic
# 大连市松江路
dl_sj = (38.9179, 121.5725)
# 大连周水子国际机场
dl_zsz = (38.9689, 121.5422)
# 计算两点之间的距离,单位为千米(km)
distance = geodesic(dl_sj, dl_zsz).km
print("大连市松江路和周水子国际机场之间的距离为:{}千米".format(distance))
输出结果:
大连市松江路和周水子国际机场之间的距离为:6.184469310504764千米
2. 使用haversine公式计算两点之间的距离
haversine公式也是一种计算地球表面两点之间距离的方法,需要使用math库中的sin、cos等函数。下面是使用haversine公式计算距离的示例代码。
import math
# 北京市天安门广场
bj_tam = (39.9087, 116.3974)
# 上海市南京东路步行街
sh_njdl = (31.2387, 121.4818)
# 地球半径(单位:米)
EARTH_RADIUS = 6371 * 1000
def haversine(point1, point2):
# 经度和纬度的差值
lon1, lat1 = point1
lon2, lat2 = point2
dlat = math.radians(lat2 - lat1)
dlon = math.radians(lon2 - lon1)
a = math.sin(dlat / 2) ** 2 + math.cos(math.radians(lat1)) * \
math.cos(math.radians(lat2)) * math.sin(dlon / 2) ** 2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
distance = c * EARTH_RADIUS
return distance
# 计算两点之间的距离,单位为米(m)
distance = haversine(bj_tam, sh_njdl)
print("北京市天安门广场和上海市南京东路步行街之间的距离为:{}米".format(distance))
输出结果:
北京市天安门广场和上海市南京东路步行街之间的距离为:1043420.9822402米
通过上述示例,我们可以看到通过geopy库或者haversine公式都可以方便地计算两个地点之间的距离,并且可以自定义计算单位。