簡體   English   中英

在作為 Raster Brick 導入 R 之前,NetCDF 中跨坐標的平均變量值?

[英]Average variable values across coordinates within NetCDF before importing into R as Raster Brick?

在使用 R 將其轉換為光柵磚之前,有沒有辦法使用 nco 在給定的緯度/經度坐標列表上計算 NetCDF 文件中的平均值? 此緯度/經度坐標列表表示非矩形區域。

現在,我有一個 .nc 文件,其中包含整個海洋一年的月度溫度數據。 我有一個描述我的研究區域的緯度/經度值列表。 我想在我的緯度/經度列表中的所有坐標中提取每個月的溫度平均值。 到目前為止,我一直在嘗試將 .nc 文件轉換為 R 中的 Raster Brick 后執行此操作,但是執行該操作需要太多內存。

因此,我想知道是否有一種方法可以使用 nco 在 bash 中執行此操作。

謝謝!

我不確定我是否理解你的問題的意圖。 這些命令中的任何一個都應該為每個點提供全年的單一溫度:

ncwa -a time in.nc out.nc

或者

ncra in.nc out.nc

從全球海洋中提取列表上的特定點(並將它們存儲在單個文件中而不使用_FillValue s作為其他點)是更多的問題,如果您使用ncremap首先將您的全球海洋數據從將(大概)矩形經緯度格式轉換為非結構化(即一維)數組,然后使用ncks -X將點列表提取到單個緊湊文件中。 用戶指南提供了有關每個步驟的更多信息。

如果 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 中聲明二維數組

此方法使用雙線性插值來獲取每個給定經緯度的值(並且它們需要有規律地間隔以獲得合理的答案,否則您會將平均值更多地加權到您的點距離更近的一個區域)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM