在两个 gps 坐标之间有一条路线

having a route between two gps coordinates

晚上好, 我每次旅行都有gps坐标,我试图在每次旅行的每个点之间画一条线.. 我正在使用此代码,但仍然不起作用,如果我删除 groupby(id) 它会起作用,但我也在来自不同 tripId 的点之间得到一条线 ..

tooltip = "Click me!"
for i in range(11):
    folium.Marker(df.groupby('id')
        [df['latitude'][i],df['longitude'][i]], popup=df['id'][i], tooltip=tooltip ).add_to(map)
    
    route = folium.PolyLine(df.groupby('id')
        [[df['latitude'][i],df['longitude'][i]],[df['latitude'][i+1],df['longitude'][i+1]]],
        tooltip = "trip"  ).add_to(map)

我的数据框看起来像这样:

    longitude   latitude    id
0   5.184529    52.032471   66168
1   5.184513    52.032047   66168
2   5.184468    52.031559   66168
7   5.183908    52.027328   66168
8   5.175724    52.084732   89751
9   5.175513    52.084743   89751
10  5.174866    52.084713   89751

我建议将折线和标记分开添加到地图中。标记可以单独添加,折线作为地理位置列表。由于后者需要按 id 聚类,因此在 groupby 之后按组添加它们是有意义的:

import pandas as pd
import folium
import io

data = '''    longitude   latitude    id
0   5.184529    52.032471   66168
1   5.184513    52.032047   66168
2   5.184468    52.031559   66168
7   5.183908    52.027328   66168
8   5.175724    52.084732   89751
9   5.175513    52.084743   89751
10  5.174866    52.084713   89751'''

df = pd.read_csv(io.StringIO(data), sep='\s\s+')

tooltip = "Click me!"
m = folium.Map(location=[52.031559, 5.184468],
              zoom_start=15)

for index, row in df.iterrows():
    folium.Marker([row['latitude'], row['longitude']],
                        popup=row['id'],
                        tooltip=tooltip
                       ).add_to(m)
    
for index, row in df.groupby('id',as_index=False)[['latitude','longitude']].agg(list).iterrows():
    loc = list(zip(row.latitude, row.longitude))
    folium.PolyLine(loc, tooltip = "trip").add_to(m)