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

使用GeoJson多边形颜色功能修改国家颜色时遇ValueError求助

解决folium中GeoJson加载文件时的ValueError问题

嘿,我看到你在尝试用folium给地图上的国家添加颜色时遇到了错误,别担心,这是个新手常踩的小坑,咱们一步步把它解决掉~

错误原因解析

你现在直接把open('world.json','r', encoding='utf-8-sig')传给了folium.GeoJson的data参数,但folium需要的是解析好的JSON数据或者文件路径字符串,而不是你现在传入的「打开的文件对象」(报错信息里的<_io.TextIOWrapper>就是这个文件对象)。它不知道怎么处理这个对象,所以就抛出了ValueError。

两种快速解决方法

方法1:直接传入文件路径(最简单)

folium支持直接接收文件路径字符串,它会自动帮你读取并解析JSON内容,把代码里的GeoJson部分改成这样就行:

fg.add_child(folium.GeoJson(
    data='world.json',
    style_function = lambda x: {'fillColor':'yellow'}
))

方法2:手动读取文件内容

如果你需要手动处理文件(比如做一些内容修改),可以先读取文件的文本内容再传入:

# 先读取JSON文件内容
with open('world.json','r', encoding='utf-8-sig') as f:
    geo_json_data = f.read()

# 再传入GeoJson
fg.add_child(folium.GeoJson(
    data=geo_json_data,
    style_function = lambda x: {'fillColor':'yellow'}
))

修改后的完整代码(附带两个小优化)

我还帮你调整了两个细节:一是把fillColour改成美式拼写fillColor(folium遵循美式拼写,英式的可能不生效);二是把fill_opacity=1.15改成0.7(opacity取值范围是0-1,超过的话会被自动设为1,0.7的视觉效果更自然):

import folium
import pandas

data = pandas.read_csv("Volcanoes_USA.txt")
lat = list(data["LAT"])
lon = list(data["LON"])
elev = list(data["ELEV"])

def color_producer(elevation):
    if elevation < 1000:
        return 'green'
    elif 1000 <= elevation < 3000:
        return 'orange'
    else:
        return 'red'

map = folium.Map(location=[38.58,-99.09], zoom_start=6, tiles="Mapbox Bright")
fg = folium.FeatureGroup(name="My Map")

for lt,ln,el in zip(lat, lon, elev):
    fg.add_child(folium.CircleMarker(
        location=[lt, ln], 
        radius=6, 
        popup=str(el)+ " m", 
        color=color_producer(el), 
        fill_color='grey', 
        fill_opacity=0.7
    ))

# 修正后的GeoJson加载代码
fg.add_child(folium.GeoJson(
    data='world.json',
    style_function = lambda x: {'fillColor':'yellow'}
))

map.add_child(fg)
map.save("map.html")  # 别忘了保存成HTML文件才能查看效果哦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:18:11