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

Folium GroupedLayerControl报错:如何构造含FeatureGroup的分组字典?

解决Folium GroupedLayerControl的AttributeError问题

你的猜测完全正确——报错是因为fgslice里存的是FeatureGroup的名称字符串,而GroupedLayerControl需要接收实际的FeatureGroup对象实例,不是字符串。要解决这个问题,需要把字符串映射到对应的FeatureGroup对象上,有两种常用方法:

方法1:通过全局/局部命名空间获取对象

如果fg1、fg2等已经在全局或当前局部作用域中定义为FeatureGroup实例,可以用globals()(全局作用域)或locals()(局部作用域)直接根据字符串名称获取对象:

修改循环代码如下:

mapfg = {}
for a, fgsingle in zip(cat1, fgslice):
    # 把每个字符串转换成对应的FeatureGroup对象
    fg_objects = [globals()[fg_name] for fg_name in fgsingle]
    mapfg[a] = fg_objects

方法2:提前用字典管理FeatureGroup对象(更安全规范)

如果不想依赖全局命名空间,建议提前把所有FeatureGroup对象存入一个字典,后续直接从字典中取值,避免命名冲突:

# 先定义所有FeatureGroup并存入字典
fg_dict = {
    'fg1': fg1,
    'fg2': fg2,
    'fg3': fg3,
    'fg4': fg4,
    'fg5': fg5,
    # ... 补充其他fg对象
}

# 构建分组字典
mapfg = {}
for a, fgsingle in zip(cat1, fgslice):
    fg_objects = [fg_dict[fg_name] for fg_name in fgsingle]
    mapfg[a] = fg_objects

修改后,mapfg里的列表就都是实际的FeatureGroup对象了,再传入GroupedLayerControl就能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:51:17