我想从MERRA2 netcdf文件中提取网格单元格,这些文件仅用R标记为海:
然而,由于陆地下边界的弯曲性质,部分陆地区域在我的选择范围内。我想选择最接近陆地的海域区域,但是我想要过滤掉我选择的土地区域。
我有另一个nc文件,其中包含陆地和海域的分数,据我所知,它可以从中提取我需要的网格单元格:
所以我必须定义一个面具,我可以用它来从我的第一个文件中选择具有一定阈值的海洋点,因为有陆地和海洋的分数覆盖。 请问有没有办法用R或者在ArcGIS中执行此操作
答案 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。