-1

有没有办法在使用 R 将其转换为光栅砖之前,使用 nco 在给定的纬度/经度坐标列表上平均 NetCDF 文件中的值?这个纬度/经度坐标列表表示一个非矩形区域。

现在,我有一个 .nc 文件,其中包含整个海洋一年的月度温度数据。我有一个描述我的研究区域的纬度/经度值列表。我想在我的纬度/经度列表中的所有坐标中提取每个月的温度平均值。到目前为止,我一直在尝试将 .nc 文件转换为 R 中的 Raster Brick 后执行此操作,但执行此操作需要太多内存。

因此,我想知道是否有一种方法可以在 bash 中使用 nco 代替。

谢谢!

4

2 回答 2

1

我不确定我是否理解你的问题的意图。这些命令中的任何一个都应为每个点提供全年的单一温度:

ncwa -a time in.nc out.nc

或者

ncra in.nc out.nc

从全球海洋中提取列表中的特定点(并将它们存储在单个文件中,而不使用_FillValues 表示其他点)问题更大,如果您曾经ncremap先将全球海洋数据从 (大概)矩形纬度经度格式到非结构化(即一维)数组,然后用于ncks -X将点列表提取到单个紧凑文件中。用户指南提供了有关每个步骤的更多信息。

于 2019-08-27T00:02:43.763 回答
0

如果 lat lon 点是一个矩形区域(即 lon1-lon2 和 lat1-lat2),那么您可以将它们提取出来,然后用 CDO 以这种方式取空间平均值:

cdo fldmean -sellonlatbox,lon1,lon2,lat1,lat2 in.nc out.nc 

如果有问题的区域不是一个简单的“盒子”,那么您需要将最近的网格点提取到一个文件中,然后使用整体平均:

for lonlat in $lonlatlist ; do
   lable=`echo $lonlat | sed  's/\//_/g' # replace / in output name
   cdo remapbil,$lonlat in.nc point_${lonlat}.nc
done 
cdo ensmean point_*.nc out.nc 

其中 lonlat list 是字符串“lon=X/lat=Y”中的数组索引列表(或者您可以在 bash 中使用替代的仿二维数组(如何在 bash 中声明二维数组

此方法使用双线性插值来获取每个给定 lat-lon 的值(并且它们需要定期间隔以获得合理的答案,否则您将平均值更多地加权到您的点更接近空间的一个区域)

于 2019-08-27T07:22:53.663 回答