具有两个gps坐标之间的路线



晚上好,我有每次旅行的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='ss+')
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)

最新更新