使用python计算两地之间的距离

已知两地经纬度的情况下,可以使用Python中的geopy库来计算两地之间的距离,具体代码如下:

from geopy.distance import geodesic

# 两地经纬度
lat1 = 39.9042     # 纬度1
lon1 = 116.4074    # 经度1
lat2 = 31.2304     # 纬度2
lon2 = 121.4737    # 经度2

# 创建位置
location1 = (lat1, lon1)
location2 = (lat2, lon2)

# 计算距离
distance = geodesic(location1, location2).kilometers
print("两地的距离为:", distance, "千米")

如果想以“米”为单位计算两地的距离,只需把

distance = geodesic(location1, location2).kilometers

修改为:

distance = geodesic(location1, location2).meters

即可。

如果 有一个包含了很多个经纬度的DataFrame,我们想要计算其两两之间的距离,并将距离存入新的df中,并按距离的生序进行排列,可使用如下代码实现:

import pandas as pd
from geopy.distance import geodesic

# 创建示例DataFrame
df = pd.DataFrame({
    'Latitude': [39.9042, 31.2304, 40.7128],
    'Longitude': [116.4074, 121.4737, 74.0060]
})

# 创建新的DataFrame来存储距离
distance_df = pd.DataFrame(columns=['LocationA', 'LocationB', 'Distance'])

# 计算两两之间的距离
for i in range(len(df)):
    for j in range(i+1, len(df)):
        location_a = (df['Latitude'][i], df['Longitude'][i])
        location_b = (df['Latitude'][j], df['Longitude'][j])
        distance = geodesic(location_a, location_b).kilometers
        distance_df = distance_df.append({'LocationA': i, 'LocationB': j, 'Distance': distance},
                                         ignore_index=True)

# 按距离生序排列
distance_df = distance_df.sort_values('Distance')

print(distance_df)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值