我想从 MERRA2 netcdf 文件中提取网格单元,这些文件仅使用 R 标记为海:
然而,由于土地区域下边界的弯曲性质,部分土地区域在我的选择范围内。我想选择最接近陆地的海域区域,但我的选择中有一些陆地区域我想过滤掉。
我有另一个 nc 文件,其中包含我理解的陆地和海域的一部分,可以从中提取我需要的网格单元:
所以我必须定义一个掩码,我只能使用它从我的第一个文件中选择具有一定阈值的海洋点,因为陆地和海洋的覆盖范围很小。请问有没有办法用 R 或者在 ArcGIS 中做到这一点
我想从 MERRA2 netcdf 文件中提取网格单元,这些文件仅使用 R 标记为海:
然而,由于土地区域下边界的弯曲性质,部分土地区域在我的选择范围内。我想选择最接近陆地的海域区域,但我的选择中有一些陆地区域我想过滤掉。
我有另一个 nc 文件,其中包含我理解的陆地和海域的一部分,可以从中提取我需要的网格单元:
所以我必须定义一个掩码,我只能使用它从我的第一个文件中选择具有一定阈值的海洋点,因为陆地和海洋的覆盖范围很小。请问有没有办法用 R 或者在 ArcGIS 中做到这一点
您也许可以使用 CDO 做一些事情。如果您决定从您的landsea遮罩文件landsea.nc中决定要用于遮罩的陆地分数阈值“c”(从您的描述中听起来c需要是一个非常小的正实数),那么您可以定义一个掩码,海洋为零,陆地为一
cdo lec,c landsea.nc mask.nc
这会将所有值 < c 的点设置为 1,否则为 0(对于土地)
或者,如果您想将所有着陆点设置为“缺失”,那么您可以
cdo setrtomiss,0.5,2 mask.nc mask_miss.nc
现在陆地点设置为“缺失”
然后,您可以使用掩码缩放数据文件以将土地点设置为零
cdo mul merra2.nc mask.nc out1.nc
或者您可以将它们设置为缺少:
cdo mul merra2.nc mask_miss.nc out2.nc
然后你可以处理。
当然,这里我假设landsea.nc 掩码文件与您的merra 文件在同一个网格上。如果不是,您将需要首先重新网格化掩码文件,您也可以使用 CDO 执行此操作。