已知两地经纬度的情况下,可以使用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)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐