CDO处理气候数据非常方便,尤其是NetCDF格式的数据。 可以说是气候数据处理的瑞士军刀。
本文以CMIP数据为例,说明如何使用CDO裁剪NetCDF数据。
定期种植
规则裁剪一般有两种方法:
按经纬度裁剪
根据经纬度裁剪需要一个由经纬度决定的box经纬度范围,即lonmin、lonmax、latmin、latmax。 此选择操作使用 CDO 中的 sellonlatbox 命令。 例如,如果我们想从全球数据中选择中国的范围,那么我们可以使用如下命令:
cdo sellonlatbox,73,136,3,54 global.nc china.nc
以上四个数字分别对应您目标区域的最小经度、最大经度、最小纬度和最大纬度。
根据网格的ID裁剪
这个一般用于特殊网格,比如高斯N16网格。 示例用法如下:
cdo selindexbox,60,11,3,11 infile outfile
(我不是很熟悉,就不说了,因为很少用到)
不规则种植
按照以上规则裁剪的结果一般是这样的:
定期种植
但是很多时候我们想要的是根据shp文件进行不规则裁剪的结果,比如这样:
不规则种植
首先我们要知道,不规则裁剪是屏蔽掉(设置为nodata)不需要的格子,而不是删除那些格子!
得到上面的结果有很多方法,比如用R,Python,MATLAB等,其他的账号楼主写的很多,我就不再赘述了。 这里介绍一种不用打开编程语言直接在命令行完成的方法。
想用的工具是CDO和GDAL(GIS一般安装GDAL)经纬度范围,思路是:
光栅化shp文件
我们可以很方便的在命令行中使用gdal_rasterize命令对shp文件进行光栅化:
gdal_rasterize -of netCDF -burn 1 -tr 0.01 0.01 china.sha china.nc
通过上面的命令,我们得到了china.nc:
面具
进行掩码
CDO提供了ifthen命令来帮助我们完成这一步,它的用法是:
cdo ifthen china.nc global.nc china_masked.nc
最终结果如下:
掩码结果如何执行反向掩码?
只需将上面的 ifthen 命令更改为 ifnotthen。
参考
【1】cdo官方用户文档
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。