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

Streamlit中为pydeck ColumnLayer添加get_elevation出现JSON错误如何解决

问题原因

你遇到的报错是因为pydeck解析字段名时,带空格、括号的特殊字段名rain (mm)被识别为了JavaScript函数表达式,而非数据字段,因此触发了JSON表达式不允许函数调用的错误。

解决方法

  • 方案1:重命名特殊字段(最稳妥,适配性最高)
    将数据框中带特殊字符的rain (mm)字段重命名为无特殊符号的名称,比如rain_mm,修改后即可正常引用:
# 先处理输入数据,重命名字段
data = data.rename(columns={"rain (mm)": "rain_mm"})

# Layer参数对应修改
column_layer = pdk.Layer(
    "ColumnLayer",
    data=data,
    get_position=["lon", "lat"],
    get_elevation="rain_mm", # 直接引用重命名后的字段
    elevation_scale=20,
    radius=2000,
    get_fill_color=[180, 0, 200, 140],
    pickable=True,
    auto_highlight=True,
    extruded=True
)

该方案同时适配你现有tooltip里的{rain_mm}占位符,无需额外修改tooltip配置。

  • 方案2:不修改原字段,调整字段引用格式
    如果不想修改原始字段名,可以改用方括号包裹的引用格式,明确告知pydeck这是字段访问而非函数调用:
# 仅修改get_elevation参数即可
get_elevation="['rain (mm)']"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:36:00