假设您有一个文件example.nc
,其中定义了 90N、90S、180E、180W 区域的风数据。无论如何我可以在 linux 中使用简单的 nc 类型命令(不提取 matlab/python 中的数据进行重写),裁剪此文件以包含一个较小的区域,即上述的子集。
例如,30N、10S、60E 和 30W。
假设您有一个文件example.nc
,其中定义了 90N、90S、180E、180W 区域的风数据。无论如何我可以在 linux 中使用简单的 nc 类型命令(不提取 matlab/python 中的数据进行重写),裁剪此文件以包含一个较小的区域,即上述的子集。
例如,30N、10S、60E 和 30W。
是的,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
确保使用整数值指定索引。
否则,您也可以直接指定所需的 lat 和 lon 值的范围,但在这种情况下,您必须确保使用小数点将范围作为浮点数传递。
ncks -d lat,30.,-10. -d lon,-30.,60. example.nc -O cropped_example.nc
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
解决方案更加稳健(参见评论)。
如果您使用的是 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