我使用folium创建的地图无法保存为html文件,该如何解决?
folium地图导出失败排查与解决方法
- 首先检查代码语法错误:你提供的代码中
for循环最后一行末尾有一个多余的反引号,若实际运行的代码也包含该符号,会导致后续map.save语句未被执行,先删除该多余符号。 - 检查文件保存路径:当前代码使用相对路径保存html,文件会生成在Python脚本的当前工作目录,而非你读取数据源的文件夹。可在代码开头加入如下代码打印工作目录,运行后前往对应路径查找生成的文件:
import os print(os.getcwd())
如果需要指定保存到固定路径,直接把save的参数改成绝对路径即可,比如map.save(r"C:\Users\Jon\Downloads\volc1.html")。
- 修复GeoJson文件读取的编码问题:Windows系统下直接读取utf-8编码的json文件容易出现编码错误,部分场景下不会显式抛出异常但会中断代码执行,修改GeoJson加载代码为:
folium.GeoJson(data = open(r'C:\Users\Jon\Downloads\Extract+me+json\world.json', 'r', encoding='utf-8-sig').read()).add_to(map)
- 避免变量名冲突:你的代码中使用了Python内置函数名
map作为地图对象变量名,可将变量名替换为m等自定义名称,避免潜在的命名冲突导致的执行异常。
修正后完整可运行代码
import pandas import folium import os # 打印当前工作目录,方便后续找生成的文件 print("文件将保存到:", os.getcwd()) df = pandas.read_csv(r"C:\Users\Jon\Downloads\Webmap_datasources\Volcanoes.txt") lat = list(df["LAT"]) lon = list(df["LON"]) el = list(df["ELEV"]) # 替换变量名避免冲突 m = folium.Map(location =[lat[1],lon[1]], zoom_start=3, tiles= "Stamen Terrain") # 指定编码读取json文件 folium.GeoJson(data = open(r'C:\Users\Jon\Downloads\Extract+me+json\world.json', 'r', encoding='utf-8-sig').read()).add_to(m) for x,y,z in zip(lat, lon, el): folium.CircleMarker(location= (x,y), popup= str(z)).add_to(m) # 可替换为绝对路径指定保存位置 m.save("volc1.html")
内容的提问来源于stack exchange,提问作者jdfried
相关产品推荐
相关产品推荐

