folium.GeoJson报错ValueError:无法处理TextIOWrapper对象求助
解决folium加载GeoJSON时的ValueError问题
嘿,我来帮你搞定这个错误!你遇到的问题是因为folium.GeoJson()并不接受open()返回的文件对象(也就是那个<_io.TextIOWrapper>),它需要的是GeoJSON数据的字符串内容或者已经解析好的Python字典/列表对象。
两种可行的解决方案:
方案1:直接读取文件内容为字符串
用read()方法把文件内容读出来,再传给GeoJson():
tacoma = folium.Map(location=[47.26, -122.46], zoom_start = 12) # 使用with语句安全读取文件 with open('../data/Tacoma-Census-Blocks.geojson', 'r') as f: geojson_str = f.read() folium.GeoJson(geojson_str).add_to(tacoma) folium.LayerControl().add_to(tacoma) tacoma
方案2:用json模块解析为Python对象
如果之后需要对GeoJSON数据做修改,这种方式会更灵活:
import json tacoma = folium.Map(location=[47.26, -122.46], zoom_start = 12) with open('../data/Tacoma-Census-Blocks.geojson', 'r') as f: geojson_data = json.load(f) folium.GeoJson(geojson_data).add_to(tacoma) folium.LayerControl().add_to(tacoma) tacoma
小提示:
用with语句处理文件是最佳实践,它会在代码块结束后自动关闭文件,避免不必要的资源占用。原来的代码直接传open()的返回值,folium无法识别这个文件流对象,所以才抛出了ValueError。
内容的提问来源于stack exchange,提问作者bmeredit
相关产品推荐
相关产品推荐

