使用 R 从另一个 nc 文件中提取基于值的 netcdf 文件的网格单元

Extracting grid cells of a netcdf file based values from another nc file with R

我想从 MERRA2 netcdf 文件中提取网格单元,该文件仅使用 R 标记为海:

然而,由于陆地区域下边界的弯曲性质,部分陆地区域在我的 selection 范围内。我想 select 离陆地最近的海域区域,但我想过滤掉 selection 中的陆地区域。

我有另一个 nc 文件,其中包含陆地和海洋区域的一部分,据我所知,可以从中提取我需要的网格单元:

所以我必须定义一个遮罩,我只能使用它来 select 来自我的第一个文件的具有特定阈值的海洋点,因为陆地和海洋的部分覆盖。 请问有没有办法用 R 或者在 ArcGIS

中做到这一点

也许您可以使用 CDO 做一些事情。如果您决定要使用 landsea 掩模文件 landsea.nc 中的陆地分数阈值 "c" 作为掩模(从您的描述听起来 c 需要是一个非常小的正实数),那么您可以定义一个掩码,海洋为零,陆地为一个

cdo lec,c landsea.nc mask.nc 

这会将所有值 < c 的点设置为 1,否则为 0(对于陆地)

或者如果你想将所有陆地点设置为 "missing" 那么你可以

cdo setrtomiss,0.5,2 mask.nc mask_miss.nc

现在土地点数设置为"missing"

然后您可以使用掩码缩放数据文件以将陆地点设置为零

cdo mul merra2.nc mask.nc out1.nc 

或者您可以将它们设置为缺失:

cdo mul merra2.nc mask_miss.nc out2.nc 

然后您可以处理。

当然,这里我假设 landsea.nc mask 文件和你的 merra 文件在同一个网格上。如果不是,则需要先重新网格化掩码文件,这也可以使用 CDO 来完成。