如何使用 CDO 在 NetCDF 文件上应用 Sea mask
How to apply a Sea mask over a NetCDF file using CDO
假设我制作了一个 netCDF
文件,其中有很多零。我想对数据应用海洋遮罩,这样只有海中的区域才真正被遮蔽,而陆地上的数据被保留。
我的数据在陆地上有很多零点(这是正确的),但在海洋中也有很多零点(这是不正确的)。
我本可以使用 cdo setmissval,nan input.nc output.nc
,但这也会将土地的价值更改为 NaN
。
有人对此有任何(好的)解决方案吗?
这个问题已经在这里提出:Create a NetCDF file with data masked to retain land points only
解决方案 1:
所以基本上你可以使用内置的地形函数构建海陆掩模,然后将所有海点设置为缺失:
cdo -f nc setctomiss,0 -gtc,0 -remapcon,your_data_file.nc -topo seamask.nc
- topo : 生成地形文件
- remapcon :将其重新映射到您的输入
文件分辨率
- gtc,0 : 对以上所有地形点设置为 1
海平面,否则为 0
- setctomiss: 海点的零点是
转换为 "missing"
您现在可以使用它来屏蔽您的数据文件:
cdo mul your_data_file.nc seamask.nc masked_datafile.nc
然而,在某些情况下,我发现重新映射过程会在边缘留下 "ocean" 数据痕迹,在这种情况下,为了更安全,您可以使用第二种方法:
解决方案 2:
从这个 thredds 服务器以 1km 分辨率下载 "distance to ocean" 的 netcdf 数据文件:https://pae-paha.pacioos.hawaii.edu/thredds/ncss/dist2coast_1deg_land/dataset.html
然后您可以屏蔽掉海洋一定距离内的任何点以确保安全,代价是可能屏蔽掉少量陆地数据。
我先将距离文件重新映射到目标分辨率:
cdo remapbil,your_data.nc distance.nc remap_dist.nc
然后掩码(例如,在这种情况下,距离海岸 5 公里以内的所有点,海点在该文件中已经 "missing")并相乘
cdo mul your_data.nc -gtc,5 remap_dist.nc masked_data.nc
如前所述,这更安全一点,也更冗长一点,但可能会掩盖一些陆地数据。
假设我制作了一个 netCDF
文件,其中有很多零。我想对数据应用海洋遮罩,这样只有海中的区域才真正被遮蔽,而陆地上的数据被保留。
我的数据在陆地上有很多零点(这是正确的),但在海洋中也有很多零点(这是不正确的)。
我本可以使用 cdo setmissval,nan input.nc output.nc
,但这也会将土地的价值更改为 NaN
。
有人对此有任何(好的)解决方案吗?
这个问题已经在这里提出:Create a NetCDF file with data masked to retain land points only
解决方案 1:
所以基本上你可以使用内置的地形函数构建海陆掩模,然后将所有海点设置为缺失:
cdo -f nc setctomiss,0 -gtc,0 -remapcon,your_data_file.nc -topo seamask.nc
- topo : 生成地形文件
- remapcon :将其重新映射到您的输入 文件分辨率
- gtc,0 : 对以上所有地形点设置为 1 海平面,否则为 0
- setctomiss: 海点的零点是 转换为 "missing"
您现在可以使用它来屏蔽您的数据文件:
cdo mul your_data_file.nc seamask.nc masked_datafile.nc
然而,在某些情况下,我发现重新映射过程会在边缘留下 "ocean" 数据痕迹,在这种情况下,为了更安全,您可以使用第二种方法:
解决方案 2:
从这个 thredds 服务器以 1km 分辨率下载 "distance to ocean" 的 netcdf 数据文件:https://pae-paha.pacioos.hawaii.edu/thredds/ncss/dist2coast_1deg_land/dataset.html
然后您可以屏蔽掉海洋一定距离内的任何点以确保安全,代价是可能屏蔽掉少量陆地数据。
我先将距离文件重新映射到目标分辨率:
cdo remapbil,your_data.nc distance.nc remap_dist.nc
然后掩码(例如,在这种情况下,距离海岸 5 公里以内的所有点,海点在该文件中已经 "missing")并相乘
cdo mul your_data.nc -gtc,5 remap_dist.nc masked_data.nc
如前所述,这更安全一点,也更冗长一点,但可能会掩盖一些陆地数据。