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

Python/Folium绘制ERA5日风速报image参数缺失问题排查

错误根因

触发EEException: Image.visualize: Parameter 'image' is required.报错的直接原因是传入渲染接口的影像对象为空(null),具体问题点:

  • 你调用的ECMWF/ERA5/DAILY数据集在GEE平台的公开版本时间覆盖范围为1979-01-02至2020-07-09,你设置的2022-04-28至2022-07-01查询区间无任何可用数据,经filterDate()筛选后得到空影像集合,此时调用.first()会返回null值
  • 空值传入自定义的add_ee_layer方法后,ee.Image()无法将其转换为有效影像对象,最终触发影像参数缺失的报错
  • 代码额外存在两处逻辑问题:
    • 你选择的u_component_of_wind_10m是东西向风矢量分量,存在负值,设置min:0的可视化规则会截断所有负向值
    • 单风分量不等于实际风速,实际风速需要通过东向(u)、北向(v)两个分量合成计算
修复方法

按以下步骤调整代码即可正常运行:

  • 将查询日期范围调整到数据集覆盖的时间区间内
  • 若需要绘制实际风速大小,同时筛选u、v两个10米风分量,先对时间区间做均值合成,再通过平方和开根号的方式计算合风速
  • 调整可视化参数的数值范围,匹配近地面10米风速的实际取值区间(0-30m/s可覆盖绝大多数近地面场景)

修正后的完整可运行代码如下:

import ee
import folium
import webbrowser

# 认证并初始化GEE
ee.Authenticate()
ee.Initialize()

# 加载ERA5日值数据集
wind_col = ee.ImageCollection('ECMWF/ERA5/DAILY')
# 调整查询日期到数据集覆盖范围内
i_date = '2020-04-28'
f_date = '2020-07-01'

# 定义folium加载GEE图层的方法
def add_ee_layer(self, ee_image_object, vis_params, name):
    map_id_dict = ee.Image(ee_image_object).getMapId(vis_params)
    folium.raster_layers.TileLayer(
        tiles=map_id_dict['tile_fetcher'].url_format,
        attr='Map Data © Google Earth Engine',
        name=name,
        overlay=True,
        control=True
    ).add_to(self)
folium.Map.add_ee_layer = add_ee_layer

# 筛选时间区间,计算平均风速
wind_filtered = wind_col.filterDate(i_date, f_date)
wind_mean = wind_filtered.select(['u_component_of_wind_10m', 'v_component_of_wind_10m']).mean()
# 合成10米风速
wind_speed = wind_mean.expression(
    'sqrt(u**2 + v**2)',
    {
        'u': wind_mean.select('u_component_of_wind_10m'),
        'v': wind_mean.select('v_component_of_wind_10m')
    }
).rename('wind_speed_10m')

# 设置风速可视化参数
wind_vis_params = {
    'min': 0,
    'max': 30,
    'palette': ['white', 'blue', 'green', 'yellow', 'orange', 'red']
}

# 创建底图
lat, lon = 45.77, 4.855
my_map = folium.Map(location=[lat, lon], zoom_start=5)
# 添加风速图层
my_map.add_ee_layer(wind_speed, wind_vis_params, '10m Wind Speed')

# 添加图层控件
folium.LayerControl(collapsed=False).add_to(my_map)

# 保存结果并打开
save_path = "c:/data/weather.html"
my_map.save(save_path)
webbrowser.open(save_path)

补充说明:如果需要使用2022年及之后的ERA5日值数据,更换为平台上持续更新的同类ERA5数据集即可,注意同步核对目标数据集的波段名、时间覆盖、分辨率等元数据信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:57:19