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

时间:2017-07-04 09:40:22

标签: r arcgis netcdf

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

enter image description here

然而,由于陆地下边界的弯曲性质,部分陆地区域在我的选择范围内。我想选择最接近陆地的海域区域,但是我想要过滤掉我选择的土地区域。

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

enter image description here

所以我必须定义一个面具,我可以用它来从我的第一个文件中选择具有一定阈值的海洋点,因为有陆地和海洋的分数覆盖。 请问有没有办法用R或者在ArcGIS中执行此操作

1 个答案:

答案 0 :(得分:1)

你可以用CDO做点什么。如果您决定使用陆地分数阈值“c”从陆地掩模文件landsea.nc(从您的描述听起来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。