创建带有数据掩盖的NetCDF文件仅保留土地点

问题描述 投票:0回答:2

我使用grads中的

basemap.gs
脚本掩盖了netcdf文件。这是我使用口罩的方法:

Example

,我想获得一个仅包含大陆数据的NetCDF文件,任何人可以帮助我吗?

mask netcdf cdo-climate grads
2个回答
3
投票
我已经正确理解了这个问题,希望拥有一个将所有值设置为丢失(即_fillvalue)的NetCDF文件。如果是这样,则有两个解决方案来自命令行:

solution1:

一种方法是使用CDO创建陆地面具,然后将所有海点设置为缺失:

cdo -f nc2 setctomiss,0 -gtc,0 -remapcon,your_data_.nc -topo seamask.nc

    where
  • remapCon将地形重新映射到数据文件的域和分辨率。 当内置地形比海平面更大时,GTC会产生1。 the setCtomiss将所有“零”指向丢失。
  • 您现在可以使用它来掩盖您的数据文件:
  • cdo mul datafile.nc seamask.nc masked_datafile.nc
,但是,在某些情况下,我发现重新映射过程在边缘周围留下了“海洋”数据的痕迹,在这种情况下,您可以使用第二种方法:

SULOTIE2
下载从此THEDDS服务器的1公里分辨率下载“距离到海洋的NETCDF数据文件:

Https://pae-paha.pacioos.hawaii.edu/thredds/ncss/ncss/dist2coast2coast_1deg_1deg_1deg_land/dataset.html

然后您可以掩盖海洋一定距离内的任何点以安全地发挥作用,而牺牲可能掩盖了少量的土地数据。

i首先将距离文件重新映射到目标分辨率: cdo remapbil,your_data.nc distance.nc remap_dist.nc

then面具(例如,在这种情况下,所有要点在海岸5公里以内,海点已经在此文件中“缺失”),而乘法则要

cdo mul your_data.nc -gtc,5 remap_dist.nc masked_data.nc

说,这有点安全,有点远,但可以掩盖一些土地数据。
Edit2021:
I刚刚上传了有关此主题的YouTube视频指南,以提供更多的详细信息。

由于您已经掩盖了非大陆值,因此该过程实际上相当简单。有一个名为“ sdfwrite”的命令,可以在文件中写入和变量。代码会这样进行:

define data = <insert expression for masked out data here> set sdfwrite out.nc sdfwrite data

*确保卸下角括号;这些只是为了表演 将这些输入毕业生将1)分配内存以将显示的数据保存在变量“数据”中2)将输出文件的名称设置为“ out.nc”(您当然可以将其更改为您喜欢的任何内容),而3)将信息写入变量“数据”中。 lod,据我所知,没有办法根本没有将蒙版的值写成文件,但是这样,它们将以零/未定义的值写入。


1
投票

希望这有帮助!!
    

这也是必要的要求

list项目

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.