You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Folium按行程ID分组绘制各行程GPS坐标点间路线问题求解

解决方法

问题根源

你原来的代码存在两处核心错误:

  • groupby('id')返回的是Pandas分组迭代对象,不能直接用你写的方式索引坐标值,所以加了这段代码后会运行报错
  • 直接遍历全表索引i取i和i+1的坐标,会跨行程ID取点,导致不同行程的点被错误连接

修改后代码

import folium
import pandas as pd

# 初始化地图,可替换为你原来的地图初始化逻辑
map = folium.Map(location=[df['latitude'].mean(), df['longitude'].mean()], zoom_start=12)
tooltip = "Click me!"

# 按行程ID分组逐个处理
for trip_id, trip_df in df.groupby('id'):
    # 提取当前行程的所有坐标点,folium坐标顺序为[纬度, 经度]
    coords = trip_df[['latitude', 'longitude']].values.tolist()
    
    # 给当前行程的每个坐标点添加标记
    for lat, lng in coords:
        folium.Marker(
            [lat, lng],
            popup=f"行程ID: {trip_id}",
            tooltip=tooltip
        ).add_to(map)
    
    # 绘制当前行程的连线,自动按坐标顺序连接同行程所有点
    folium.PolyLine(
        coords,
        tooltip=f"行程ID: {trip_id}",
        weight=3, # 可自定义调整线宽
        color='blue' # 可自定义调整线条颜色
    ).add_to(map)

# 保存或展示地图
map.save('trips_route.html')

代码说明

  • 先通过groupby('id')把所有行程拆分,每个行程单独处理,完全避免跨行程连线的问题
  • 直接提取单个行程的全部坐标列表传给PolyLine,无需手动循环拼接相邻坐标点,代码更简洁也不会出现索引越界问题
  • 你可以根据需求调整连线的粗细、颜色、透明度等参数,适配你的展示需求

内容的提问来源于stack exchange,提问作者Hermoine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:06:04