Geopandas连接点

2024-04-16 18:16:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个基本的起点/终点线地图。我的数据具有以下结构:

ID lon_origin  lat_origin  lon_destination  lat_destination
0  -116.284    43.617      -116.304         43.608
1  -116.291    43.610      -116.304         43.608

关于如何连接出发地和目的地有什么想法吗?我试过压缩它们,但我不能让geopandas同时识别两个几何列。在


Tags: 数据id地图origin结构destinationgeopandaslon
2条回答

最后我放弃了drawgreatcircle函数,因为在我使用的比例下,它不会非常大或很圆。plt.绘图做了我想做的事: Code & Output

如果您只想计算距离,这里有一个解决方案:

from geopy.distance import lonlat, distance
data = """
  id      lon_origin  lat_origin  lon_destination  lat_destination
   0    -116.284    43.617      -116.304         43.608
   1    -116.291    43.610      -116.304         43.608
    """
df = pd.read_csv(pd.compat.StringIO(data), sep='\s+')
df['KM'] = df.apply(
    (lambda row:distance(lonlat(row['lon_origin'], row['lat_origin']),
                         lonlat(row['lon_destination'], row['lat_destination'])).km), axis=1)

print(df)

输出:

^{pr2}$

如果要使用英里数,只需更改度量:

df['MILES'] = df.apply(
    (lambda row:distance(lonlat(row['lon_origin'], row['lat_origin']),
                         lonlat(row['lon_destination'], row['lat_destination'])).miles), axis=1)

   id  lon_origin  lat_origin  lon_destination  lat_destination     MILES
0   0    -116.284      43.617         -116.304           43.608  1.180046
1   1    -116.291      43.610         -116.304           43.608  0.666588

相关问题 更多 >