2016-04-16 47 views
1

我想將緯度邊界添加到現有的netCDF文件。有關邊界的定義,請參見http://www.cgd.ucar.edu/cms/eaton/netcdf/CF-20010629.htm#bnds將邊界變量添加到netcdf文件

有沒有可以自動添加邊界的命令?我願意使用任何使用nco或netCDF4或cdms工具包的解決方案。不過,我寧願它是一個後期處理解決方案。

回答

3

添加範圍爲現有協調這樣的:

ncap2 -O -s '[email protected]="crd_bnds";defdim("bnds",2);crd_bnds[$crd,$bnds]=0.0;*crd_dff=0.5*(crd(1)-crd(0));crd_bnds(:,0)=crd-crd_dff;crd_bnds(:,1)=crd+crd_dff;' in.nc out.nc 

這就產生

[email protected]:~$ ncks --cdl -v crd ~/foo2.nc 
netcdf foo2 { 
    dimensions: 
    bnds = 2 ; 
    crd = 10 ; 

    variables: 
    int crd(crd) ; 
     crd:bounds = "crd_bnds" ; 

    double crd_bnds(crd,bnds) ; 

    data: 
    crd = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ; 

    crd_bnds = -0.5, 0.5, 0.5, 1.5, 1.5, 2.5, 2.5, 3.5, 3.5, 4.5, 4.5, 5.5, 5.5, 6.5, 6.5, 7.5, 7.5, 8.5, 8.5, 9.5 ; 

} // group/

此時的座標被命名爲 「CRD」,並且邊界被命名爲 「crd_bnds」。當座標改變一個固定值(如上)時,邊界值的公式可以很簡單,或者更多地涉及到變量間距(讀者的練習)。我們將添加一個ncap2函數在不久的將來自動完成此操作。

cz

+0

太棒了!謝謝,這個作品很棒! – user308827

+1

僅供參考ncap2的最新快照有一個新功能來創建符合CF規範的邊界: defdim(「bnd_dmn」,2); bounds_var = make_bounds(crd_var,$ bnd_dmn,「bounds_var_nm」); 「bounds_var_nm」是可選的。通過它會導致make_bounds()到 添加屬性crd_var @ bounds =「bounds_var_nm」。 http://nco.sf.net/nco.html#make_bounds –