【发布时间】:2017-06-13 13:41:14
【问题描述】:
我正在读取 ncl 的大型 wrfout 数据(空间约 100x100,垂直 30,时间 400)。
fid=addfile("wrfout_d03.nc","r")
u=fid->U
变量U大概500M左右,所以耗时比较多,还需要读取其他变量。ncl有什么办法可以快速读取大的netcdf数据?或者我可以使用其他语言吗?
【问题讨论】:
-
一个好的起点是预先压缩文件(例如使用 CDO 或 NCO)。读取中最慢的部分通常是磁盘访问,因此即使 CPU 必须进行解压缩,将其减少到最低速度也会加快速度。如果精度损失可以接受,另一种选择是将变量减少为更小的类型,例如将降水量(毫米/天)转换为无符号整数。如果您可以/想要一次仅读取文件的一部分(例如时间序列或垂直配置文件),您可以了解分块,这对 NeCDF 读取时间有巨大影响,如果压缩则影响更大。
-
"一个很好的起点是压缩...*;请参阅我对 Adrian 回答的评论。我用 Python 尝试过,它似乎是(至少用 Python)非常慢。我个人也会从选择您实际需要分析的数据开始。如果那是完整的 3D 字段 + 所有时间步长,那么我想您必须忍受很长的加载时间,除非您想做一些花哨的事情比如并行读取和后处理。