3 年前的真实案例:Folium可视路径优化模型结果 在上一篇文章 《Folium 终极参数手册:完整 GIS 可视化指南》 ,是基于我 3 年前的一个路径优化项目总结而来——这个项目也是我从业务转向 IT、是我首次接触路径优化,并且首次用python独立 落地路径优化项目。
起初我用Folium构建了一个物流路径优化 Demo,用来和业务沟通模型效果并对模型进行优化,以今天的眼光看这可视化效果略显粗糙,但它帮助我快速实现了配送路径优化的原型,并赢得了宝贵的学习时间, 后续我给公司独立开发的智能路由优化系统便是基于该Demo 逐步升级而成。
一个不完美的开始,远比完美的等待更重要!真实业务场景:路径优化的痛点与解决方案
挑战 1:配送路径规划难,业务如何验证优化方案?
痛点:
供应链优化模型提供的最优路径可能与业务经验不符,导致一线运营团队难以信任新方案。
业务希望能直观对比优化前后的路径差异,判断方案是否合理。
Folium 解决方案:
使用
PolyLine叠加优化前后路径,让业务团队直接对比新旧配送方案,理解路径调整的意义。结合高德 API 获取真实导航路径,避免纸上谈兵,让路径优化更符合实际运输情况。
技术实现:folium.PolyLine(locations=real_navigation_path, color="blue", weight=5, popup="优化后路径")挑战 2:路径优化的收益难以量化,管理层难以感知价值
痛点:
业务和管理层难以直观看到路径优化后运输成本降低、行驶时间缩短等收益。
传统表格数据不够直观,难以快速展现优化带来的价值。
Folium 解决方案:
在地图上叠加订单数据统计表,展示各条线路的订单数、载重利用率、运输成本,让管理层一目了然。
利用
DualMap左右对比优化前后方案,业务可以动态查看路径调整带来的运输距离变化,直观评估优化收益。
技术实现: branca.element.Template() 用于在地图上显示 订单数据统计表 plugins.DualMap() 创建 左右对比优化前后的地图挑战 3:配送数据零散,业务缺乏整体感知
痛点:
业务需要综合考虑多个维度(工厂 → 配送中心 → 终端门店),但数据过于分散,缺乏整体感知能力。
需要一种方式将供应链网络的核心节点、路径、订单数据直观呈现。
Folium 解决方案:
在地图上标记工厂、配送中心、终端门店,形成完整的供应链配送网络可视化。
使用
FeatureGroup对配送线路进行分层管理,业务团队可以按区域或配送模式筛选特定路线,清晰查看特定区域的配送情况。
技术实现: folium.Marker(location=[32.03, 116.13], icon=folium.Icon(color="red", icon="bank")) folium.FeatureGroup("线路 A").add_to(m)挑战 4:业务如何确认路径优化后的合理性?
痛点:
业务团队担心优化后的路径调整会影响既有的配送习惯,导致执行困难。
需要一种方式直观呈现配送的先后顺序,确保调整后路径仍符合实际业务需求。
Folium 解决方案:
使用
BeautifyIcon在地图上标记配送顺序,让业务团队清晰看到优化后站点访问的先后顺序。结合
LayerControl图层管理,让业务可以自由切换不同路径,逐步适应优化方案的调整。
技术实现: plugins.BeautifyIcon(number=1, text_color="#00ABDC") 标记配送站点编号 folium.LayerControl(collapsed=False).add_to(m) 实现动态线路切换
Folium使用高德地图作为底图,更符合用户习惯
Folium 默认使用国外地图,但在国内,我们可以替换为高德地图,保证更真实的导航路线,这样就是我们熟悉的地图,更接地气。
folium.raster_layers.TileLayer( tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}', attr="AutoNavi", name="高德地图", max_zoom=20, overlay=False, control=True, ).add_to(m)应用场景:
✅ 让地图更符合国内使用习惯
✅ 搭配高德 API获取真实导航路径
地图上标记配送网络,标记工厂、配送中心、终端门店
folium.Marker( location=[32.2, 116.1], icon=folium.Icon(color="red", icon="bank", prefix="fa"), popup=folium.Popup("工厂") ).add_to(m)应用场景: ✅工厂 → 配送中心 → 门店都可以用folium.Marker()标记,点击后弹出信息框,信息框可以承载业务很多细节信息。
地图上获取真实高德导航路线
供应链优化必须考虑真实路况,我们可以用高德 API 获取导航路径,然后用PolyLine()绘制。
folium.PolyLine( locations=real_navigation_path, # 真实导航路径 color="blue", weight=5, opacity=0.8, popup="配送路线" ).add_to(m)应用场景:
✅确保配送路径符合实际导航
✅评估优化后的行驶距离 & 运输时间
标记配送顺序,根据顺序判断线路合理性
业务人员关心配送的先后顺序,我们用plugins.BeautifyIcon()添加编号:
icon_number = plugins.BeautifyIcon( border_color="green", text_color="#00ABDC", number=1, # 第 1 个配送点 inner_icon_style="margin-top:0;" ) folium.Marker(location=[31.5, 116.0], icon=icon_number).add_to(m)应用场景:
✅标记配送路线的顺序,减少混乱
✅快速识别不同门店的配送先后
分组管理配送线路,通过颜色等属性快速分辨不同类型
如果有不同的分组类型,我们可以使用FeatureGroup()分组管理:
line_A = folium.FeatureGroup("线路 A") m.add_child(line_A) line_B = folium.FeatureGroup("线路 B") m.add_child(line_B)应用场景:
✅支持按线路筛选 & 显示/隐藏特定线路
✅清晰管理不同区域的配送路线
在地图上加载表格统计信息,结果一目了然
如何让数据更直观?在地图上加载订单统计表!我们用HTML + CSS在地图上显示配送数据统计。
from branca.element import MacroElement, Template table_html = """ position: fixed; bottom: 20px; left: 20px; background: white; padding: 10px; border-radius: 8px; opacity: 0.9; z-index:9999; font-size:12px; "> 配送线路统计 "> 1 线路 订单数 载重利用率 运输成本 线路 A 25 80% ¥5000 线路 B 30 85% ¥6000 """ macro = MacroElement() macro._template = Template(table_html) m.get_root().add_child(macro)应用场景:
✅在地图上实时查看订单数据
✅展示各线路的订单数量 & 运输成本
方案对比:优化前 vs. 优化后
在供应链优化中,我们需要对比优化前后的方案,看是否降低了配送成本。我们用plugins.DualMap()显示优化前后的路径:
m = plugins.DualMap(location=[35.5427, 116.2317], zoom_start=5, tiles=None)应用场景:
✅左侧:显示优化前方案
✅右侧:显示优化后方案
添加图层控制,精细控制线路展示
多条配送线路时,我们需要“筛选开关”来控制显示/隐藏特定路线。
folium.LayerControl(collapsed=False).add_to(m)应用场景:
✅手动切换不同的配送线路
✅更清晰地分析每条线路的优化效果
保存地图
最终,我们可以将地图保存成 HTML,方便随时查阅:
m.save("配送网络优化.html")路径优化 Folium 组件总结功能Folium 组件应用场景创建地图
folium.Map()供应链网络可视化
使用高德地图folium.raster_layers.TileLayer()
国内地图兼容性更好
标记配送点folium.Marker()
显示工厂/仓库/门店
绘制运输路线folium.PolyLine()
展示真实导航路径
配送顺序编号plugins.BeautifyIcon()
标记配送顺序
对比优化前后方案plugins.DualMap()
评估优化效果
在地图上加载表格m.get_root().add_child(macro)
显示配送数据
如果你只需要一个离线可视化工具,Folium 版本完全够用。 如果你想打造更智能的优化系统,那就得关注我了,后续我除了分享供应链建模的知识外,还将分享我是怎么能够从业务成功转型背后的因素。 在后续的路径优化课程学习时,我们可以来复现这个案例。
THE END
近期活动
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.