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

如何对TDSCatalog数据集列表排序以适配循环及动画生成需求

解决方案

你遇到的报错是因为Siphon返回的TDS Dataset 对象本身没有定义大小比较规则,无法直接调用默认的sort()方法排序。可以通过指定排序键的方式解决,以下是两种可行方案:

方案1:基于文件名直接排序

NEXRAD Level3的文件名自带按规则编排的时间戳,文件名的字典序和时间序完全一致,直接用文件名作为排序键即可:

datasets = list(catalog.datasets.values())
# 按文件名升序排列,得到时间从早到晚的数据集列表
datasets_sorted = sorted(datasets, key=lambda ds: ds.name)

方案2:解析时间戳排序(更严谨)

如果需要规避文件名格式变动带来的风险,可以把文件名中的时间字段解析为datetime对象再排序:

from datetime import datetime

def extract_time(ds):
    # 拆分 Level3_TWX_N0Q_20211110_2233.nids 格式的文件名,提取时间部分
    name_segments = ds.name.split('_')
    date_part = name_segments[3]
    time_part = name_segments[4].removesuffix('.nids')
    return datetime.strptime(f"{date_part}{time_part}", "%Y%m%d%H%M")

datasets = list(catalog.datasets.values())
datasets_sorted = sorted(datasets, key=extract_time)

排好序的datasets_sorted列表就可以直接适配matplotlib.animation.FuncAnimation的调用需求,按顺序迭代读取数据生成动画即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:36:10