12

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

例如,30N、10S、60E 和 30W。

4

3 回答 3

17

是的,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

确保使用整数值指定索引。

否则,您也可以直接指定所需的 lat 和 lon 值的范围,但在这种情况下,您必须确保使用小数点将范围作为浮点数传递。

 ncks -d lat,30.,-10. -d lon,-30.,60. example.nc -O cropped_example.nc
于 2014-09-09T18:40:13.163 回答
9

nco工作正常,但只是列出一个替代方案,也可以使用cdo(气候数据运算符)来完成,我发现它更容易记住。您可以通过这种方式直接指定经度和纬度值:

cdo sellonlatbox,lon1,lon2,lat1,lat2 infile.nc outfile.nc

其中 lon1,lon2,lat1,lat2 定义您需要的区域的边界。

有关提取子区域的更多详细信息,我已 在 youtube 上发布了此视频教程

如果你还没有cdo安装,你可以在 Ubuntu 上使用

sudo apt-get install cdo

cdo具有许多其他用于处理、合并和拆分文件的功能以及出色的在线文档。请注意,cdo坐标变量(纬度/经度)需要根据 CF 约定定义,因此该nco解决方案更加稳健(参见评论)。

于 2017-01-09T14:42:45.740 回答
3

如果您使用的是 Linux 或 macOS,则可以在 Python 上使用 nctoolkit ( https://nctoolkit.readthedocs.io/en/latest/ ) 轻松完成此操作。

import nctoolkit as nc
data = nc.open_data("example.nc")
data.crop(lon = [25, 50], lat = [30, 40])
data.to_nc("output.nc")

在后台,nctoolkit 使用 CDO。所以上面就是上面提到的CDO方法的等价物:

cdo sellonlatbox,lon1,lon2,lat1,lat2 infile.nc outfile.nc
于 2020-09-11T12:32:00.777 回答