2016-04-16 16 views
1

既存のNetCDFファイルに緯度の境界を追加したいと思います。境界の定義については、http://www.cgd.ucar.edu/cms/eaton/netcdf/CF-20010629.htm#bndsを参照してください。netcdfファイルにbounds変数を追加する

境界を自動的に追加できるコマンドはありますか?私は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

FYI 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 –