コードは、この答えは機能します新しい次元を追加しますが、それは私がやりたいことをしません。
私の問題をさらに説明するために、次の定義があります。時間(無制限)、緯度、経度、レベルとして 4 つの次元と 1 つの可変ジオポテンシャルの高さです。私がやりたいことは、ディメンション dimz_Z を既存の可変ジオポテンシャルの高さに追加することです。
現在、上記のコードの答えは、netCDF ファイルが ncdump でどのように見えるかです。
float hgt(time, level, lat, lon)
しかし、ncks の出力から以下に示すように、dimz_Z 次元が欠落しています。
hgt dimension 0: time, size = 1 NC_DOUBLE, chunksize = 1 (Record coordinate is time)
hgt dimension 1: level, size = 1 NC_FLOAT, chunksize = 1 (Coordinate is level)
hgt dimension 2: lat, size = 23 NC_FLOAT, chunksize = 23 (Coordinate is lat)
hgt dimension 3: lon, size = 21 NC_FLOAT, chunksize = 21 (Coordinate is lon)
定義には表示されますが、スタンドアロンのディメンションとして表示され、hgt のディメンションの一部ではありません。
dimz_Z: type NC_FLOAT, 1 dimension, 0 attributes, compressed? no, chunked? no, packed? no
dimz_Z size (RAM) = 483*sizeof(NC_FLOAT) = 483*4 = 1932 bytes
dimz_Z dimension 0: dimz_Z, size = 483 NC_FLOAT (Coordinate is dimz_Z)
これはファイルの出力です
time[0]=1879032 level[0]=1000 lat[0]=60 lon[0]=50 hgt[0]=53 m
time[0]=1879032 level[0]=1000 lat[0]=60 lon[1]=52.5 hgt[1]=55 m
私が欲しいのは次のとおりです
time[0]=1879032 level[0]=1000 lat[0]=60 lon[0]=50 dimz_Z[0]=0 hgt[0]=53 m
time[0]=1879032 level[0]=1000 lat[0]=60 lon[1]=52.5 dimz_Z[0]=0 hgt[1]=55 m
私が友人から言われたのは、この次元を既存の変数に追加することはできないということです。代わりに、Fortran では、変数 hgt を 5 次元変数としてもう一度定義し、値をもう一度入力する必要があります。それは正しいですか、それとも代替手段はありますか? Fortran 77 netcdf API を使用しています。