如何调整NCO命令以按负经度范围裁剪OpenDAP上的NetCDF文件?
解决NCO提取跨本初子午线负经度区域的问题
我之前处理CMIP5数据集时也碰到过一模一样的问题——这是因为你的目标数据集采用了0-360°东经格式的经度,而非常用的-180到180°东西经混合格式。当你在ncks里指定负经度范围时,NCO会默认取数据集的最小经度值(也就是0°)作为起始边界,所以只提取了0到13°的区域,漏掉了西经13°到0°的部分。
直接调整命令提取目标区域
要覆盖西经13°(对应360-13=347°东经)到东经10°的范围,你需要让NCO同时选择两个连续的经度区间:347°到360°(对应西经13°到0°),以及0°到10°(东经0°到10°)。修改后的命令如下:
ncks -d lat,40.,70. -d lon,347.,360. -d lon,0.,10. https://dataserver.nccs.nasa.gov/thredds/dodsC/CMIP5/NASA/GISS/rcp85/E2-H_rcp85_r2i1p1_day/tos_day_GISS-E2-H_rcp85_r2i1p1_20510101-20751231.nc out.nc
这个命令会自动合并两个区间的经度数据,最终输出的文件正好覆盖你需要的-13°到10°范围。
可选:将经度转换为-180到180°格式
如果之后需要把输出文件的经度转换成更通用的-180到180°格式,可以用NCO工具链快速处理:
- 先给原经度变量重命名为临时名称:
ncrename -v lon,lon360 out.nc
- 计算新的经度值(大于180°的数值减去360°):
ncap2 -s 'lon=lon360; where(lon>180) lon=lon-360;' out.nc out_lon180.nc
- 删除临时变量,得到最终文件:
ncks -x -v lon360 out_lon180.nc final.nc
内容的提问来源于stack exchange,提问作者Robert Wilson
相关产品推荐
相关产品推荐

