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

使用xarray isel选取NASA DAYMET日期范围数据时年份更新异常问题

问题根因

你代码的核心问题是误用了xarray的isel()函数的索引逻辑:
isel()是基于数据集全局时间轴的位置索引取值,你计算的beg_day/end_day是单年的年积日(比如每年6月1日通常是当年第152天),但你直接将单年的年积日传入作用于全时段数据集的isel(time=spec_day),永远取到的是整个数据集时间轴第spec_day个位置的记录,也就是第一年的对应日期数据,自然所有输出的实际数据都相同。

另外注意你原代码中定义的end_date = dt.datetime(spec_year,7,1)只会取每年6月的数据,要实现6-8月提取的需求,需要把结束日期改为9月1日。


修复方案(两种可选)

方案1:改用sel()按日期值筛选(更推荐,无需计算索引,不易出错)

无需计算年积日,直接按日期范围筛选对应时段数据,代码更简洁容错性更高:

for spec_year in range(2000, 2004): # 要取4年数据范围的话调整为2000到2004
    print(f"处理年份:{spec_year}")
    start_date = dt.datetime(spec_year, 6, 1)
    end_date = dt.datetime(spec_year, 9, 1) # 6-8月完整时段,slice左闭右开所以设为9月1日
    # 筛选当前年份夏季的所有降水数据
    prcp_summer = prcp_clip.sel(time=slice(start_date, end_date))
    
    # 遍历每日数据导出
    for day_idx in range(len(prcp_summer.time)):
        prcp_1day_export = prcp_summer.isel(time=day_idx)
        current_date = prcp_1day_export.time.dt.strftime("%Y%m%d").item()
        # 导出tif
        prcp_1day_export.rio.to_raster(f"prcp_1day_export_{current_date}.tif")
        # 绘图导出
        fig, ax = plt.subplots(figsize = (20,10))
        prcp_1day_export.plot(ax=ax, robust=True, cbar_kwargs={'label': 'mm/day'})
        ga_shape_lcc.plot(ax = ax, color = 'none', edgecolor = 'red')
        fig.savefig(f"prcp_1day_export_{current_date}.png")
        plt.close(fig) # 避免循环生成大量图占满内存

print("Finished")

方案2:保留年积日计算逻辑,先筛选单年数据再取索引

如果需要沿用原来的年积日计算逻辑,需要先把单年的数据从全时段数据集中拆分出来,再基于单年的时间轴做isel索引:

for spec_year in range(2000, 2004):
    print(f"处理年份:{spec_year}")
    # 先筛选当前年份的所有数据
    prcp_year = prcp_clip.sel(time=prcp_clip.time.dt.year == spec_year)
    start_date = dt.datetime(spec_year, 6, 1)
    end_date = dt.datetime(spec_year, 9, 1)
    beg_day = (start_date - dt.datetime(spec_year, 1, 1)).days
    end_day = beg_day + 92 

    for spec_day in range(beg_day, end_day):
        prcp_1day_export = prcp_year.isel(time=spec_day)
        # 后续导出、绘图逻辑和原代码一致即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:45:07