想象一下,您有一个文件example.nc
,其风力数据定义在90N,90S,180E,180W区域。无论如何我可以在linux中使用简单的nc类型命令(不用matlab / python中的数据提取来重写),裁剪此文件以包含一个较小的区域,上面的子集。
例如,30N,10S,60E和30W。
答案 0 :(得分:9)
是的,使用ncks
包中的NCO
: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
答案 1 :(得分:3)
NCO工作正常,但只是为了列出一个替代方案,人们也可以使用cdo(气候数据运算符)来做到这一点,我发现它更容易记住,意味着你可以直接指定经度和纬度值:
cdo sellonlatbox,lon1,lon2,lat1,lat2 infile.nc outfile.nc
其中lon1,lon2,lat1,lat2定义了所需区域的边界。 如果您还没有安装它,可以使用
在Ubuntu上获取它sudo apt-get install cdo
cdo还有许多其他功能,用于处理,组合和拆分文件以及优秀的在线文档。
请注意,要使CDO工作,需要根据CDF约定定义坐标变量(lat / lon)。 ncks方法更加强大,因为它可以切割任何轴,但你需要计算索引。
答案 2 :(得分:2)
如果您使用的是Linux或macOS,则可以在Python上使用nctoolkit(https://nctoolkit.readthedocs.io/en/latest/)轻松完成此操作。
import nctoolkit as nc
nc.options(lazy = True)
data = nc.open_data("example.nc")
data.clip(lon = [25, 50], lat = [30, 40])
data.write_nc("output.nc")
在后台,nctoolkit使用CDO。因此,以上等效于上述CDO方法:
cdo sellonlatbox,lon1,lon2,lat1,lat2 infile.nc outfile.nc