2017-01-16 254 views
1

正如标题所示,我想从一个.nc文件中抽取一个时间段,例如一月的变量wind_speed,该文件包含一年中每小时3次分辨率的风速。如果可能的话,我想用nco来做到这一点。从nco小时解析netcdf文件中提取月度数据

我尝试以下方法:ncrcat -O -F -d time,1,248 -v wind_speed sfcWind.nc out.nc和它的作品。对于这种方法,我需要计算所选月份的时间跨度。 nco中有没有其他方法可以指定月份并获取相应的数据?

另一件事是,如果一个人的十二月,一月想要的数据,然后二月不能使用这种方法,或者至少给我的知识。这里有什么建议?

最佳斯迈尔

+0

我建议创建一个简单的脚本,其生成指定的开始/结束索引(例如跨越DJF),然后构建基于这些开始/结束索引将被执行的'ncks'(或其它功能)命令。如果您分享有问题的netcdf文件,我可以提供更多指导。 – N1B4

+0

亲爱的N1B4, 感谢您的回复。我想查阅netcdf文件,但它大约2GB,这太大了。 –

+0

然后你可以提供一些关于其内容的更多细节,可能使用'ncdump -h yourfile.nc'? – N1B4

回答

1

NCO支持multislabs,即多个时间在一个命令hyperslabs。有了这个,你可以将任意月份组合在一起,并且--msa开关将保持它们的顺序。手册是你的朋友。

+0

谢谢,我将再次搜索该手册。 –

+0

亲爱的查理, 我用你所提出的方法和它的工作。我想知道是否存在从特定月份选择数据的任何方法。例如,如果我写了一些特定的命令,然后写了“3”,那么我将获得3月份包含的所有数据? –

+0

您可以基于hyperslab下标或hyperslab值提取数据。值可以是日期,假定时间变量具有UDUnits格式的“units”属性。如果我理解你的问题,那可能是你想要的。这在“hyperslabs”部分的手册中进行了说明。 –

0

CDO可以做的伎俩,指数设置为你选择的月份。

cdo selmon,1 sfcWind.nc sfcWind_jan.nc 

如果你要选择好几个月你提到,你可以提供一个逗号分隔的列表(当然,如果你有数据的一年,那么你的月会不会是“邻近”扬,2月)。