有没有办法裁剪NETCDF文件?

jhc*_*jhc 6 linux netcdf nco cdo-climate

想象一下,您有一个文件example.nc,其风力数据定义在90N,90S,180E,180W区域.无论如何我可以在linux中使用简单的nc类型命令(不用在matlab/python中提取数据来重写),裁剪此文件以包含一个较小的区域,上面的子集.

例如,30N,10S,60E和30W.

N1B*_*1B4 10

是的,ncksNCO包中使用:http://nco.sourceforge.net/nco.html

您需要知道与您想要的纬度/经度范围相对应的指数.假设它们在纬度为30-40,经度为25-50.然后你可以裁剪netCDF文件

ncks -d lat,30,40 -d lon,25,50 example.nc -O cropped_example.nc
Run Code Online (Sandbox Code Playgroud)

  • @brews使用小数表示要提取的实际lats/lons的范围,而使用整数表示_indices_的范围对应于实际的lats/lons.很好澄清! (5认同)

Adr*_*ins 5

NCO可以很好地工作,但是仅列出一个替代方案,也可以使用cdo(气候数据运算符)来实现,我发现它更容易记住。您可以通过以下方式直接指定经度和纬度值:

cdo sellonlatbox,lon1,lon2,lat1,lat2 infile.nc outfile.nc
Run Code Online (Sandbox Code Playgroud)

其中lon1,lon2,lat1,lat2定义所需区域的边界。如果尚未安装,则可以在Ubuntu上使用

sudo apt-get install cdo
Run Code Online (Sandbox Code Playgroud)

cdo还有许多其他功能可用于处理,合并和拆分文件,以及出色的在线文档。

请注意,要使CDO工作,必须根据CDF约定定义坐标变量(纬度/经度),因此NCO解决方案更加健壮(请参见注释)。

  • CDO 为+1。我刚刚进行了实验,它有*很多*有用的功能,我举了几个示例如何[在此处按 bbox、z 轴和时间维度进行裁剪](https://medium.com/@danwild .io/crop-a-netcdf-file-by-xy-z-and-time-with-cdo-ee3f1e3a2678)(当然不需要知道索引) (2认同)