如何解决将数千个IMERG 30分钟降雨netcdf文件合并为单个netcdf
我从https://disc.gsfc.nasa.gov/datasets/GPM_3IMERGHH_06/summary?keywords=IMERG下载了具有命名约定的8736 nc4文件(从2000年6月1日至12月31日,降雨量为30分钟)
3B-HHR.MS.MRG.3IMERG.20000601-S000000-E002959.0000.V06B.HDF5.nc4
3B-HHR.MS.MRG.3IMERG.20000601-S003000-E005959.0030.V06B.HDF5.nc4
开始日期/时间:GPM中的所有文件都将使用产品中包含的数据的时间周期的开始日期/时间来命名。该字段具有两个由连字符分隔的子字段。
开始日期:YYYYMMDD
开始时间:以大写字母S
开始,然后以HHMMSS
结尾
结束时间:以大写字母E
开始,然后以HHMMSS
结尾
小时以24小时制显示,“ 00”表示午夜。 GPM中的所有时间都将采用世界协调时间(UTC)。
半小时序列从0000
开始,一天中每半小时增加30。
我想将所有文件合并到单个nc4中。原因是,我想做进一步处理。计算滚动总和以获得6或12小时的降雨累积,并进行其他分析。
我遵循了来自其他类似主题的建议,方法是:
cdo mergetime file*.nc4 output.nc4
和ncecat file*.nc4 output.nc4
但是两者都失败,并显示错误argument list too long
根据下面的答案建议,将文件分成单独的列表(按月),我确实使用以下脚本:for i in $(seq -f "%02g" 1 12); do mkdir -p "Month$i"; mv 3B-HHR.MS.MRG.3IMERG.????$i*.nc4 "Month$i"; done
增加限制,现在Mac上的ulimit -s
给出了答案65536
然后,我在包含1440个文件的文件夹中再次尝试使用ncecat file*.nc4 output.nc4
,并且可以正常工作。
但是我只是意识到结果的记录维度为UNLIMITED,时间为1。
当我使用Panoply打开output.nc4时,Record = 1440和Time仅具有1条信息:日期2000年6月1日
这对我作为新用户来说是新的东西,我希望我将获得与使用每日或每月数据时类似的输出,时间维度将具有UNLIMITED值。
任何建议如何解决上述问题?我应该采取什么步骤?
解决方法
几乎可以肯定这是特定于OS的问题。如果您使用的是Linux,则默认情况下一次只能打开1024个文件。我不知道macOS。
您可以更改限制(例如,参见here),但这可能不是一个好主意。
所以最好的办法是将文件分成9个单独的列表,创建9个合并的文件,然后合并这些文件。
,听起来像是外壳的限制(可能是Windows?)。 ncecat
一次最多打开3个文件。 NCO Users Guide描述了用于处理任意长输入文件列表的多种解决方法。这些方法中至少有一种适合您。提示:尝试将-n
选项与符号链接结合使用,如手册中所示。
根据评论2020-10-22编辑: 该手册演示了如何创建指向一百万个文件的命名正确的符号链接:
# Create enumerated symbolic links
/bin/ls | grep \.nc | perl -e \
'$idx=1;while(<STDIN>){chop;symlink $_,sprintf("%06d.nc",$idx++);}'
ncecat -n 999999,6,1 000001.nc foo.nc
# Remove symbolic links when finished
/bin/rm ??????.nc
您可以通过使用模式限制列表来缩短传递到/ bin / ls的自变量的数量,以便外壳程序停止抱怨,然后重复执行直到所有文件都具有链接为止。然后,使用示例文件中的 one 文件名执行示例中显示的单个ncecat
命令。
针对最新问题20201101进行编辑:
当您真正需要的是ncecat
时,您似乎使用了ncrcat
。它们之间的差异有些微妙。现在您已经解决了外壳程序限制,解决问题的最简单方法就是使用ncrcat
而不是ncecat
重新执行命令:
ncrcat file*.nc4 output.nc4
,
我认为这是传递给命令的参数大小的堆栈限制,您可以通过键入
查看ulimit -s
您可能会得到8192的答案。
您可以尝试增加该值,例如
ulimit -s 32768
,然后查看是否可以解决问题。在我的MAC上,我无法超越这个新值。尝试将此软限制设置为65536,给我一个“ ulimit:值超出硬限制”错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。