NCML を使用して CF-1.4 ファイルを CF-1.6 に「変換」しようとしています。特に興味深いのは、1) 次元を削除してから 2) 変数の次元を変更する方法です。たとえば、以下は 2 つのファイルの上部 ( ncdump
)です。netCDF
1 つ目は CF-1.4 で、寸法time
は 、z
、lat
およびlon
です。このファイルでは、変数 (temp など) は次の 4 つの関数ですtemp(time,z,lat,lon)
。2 番目のファイルに示すように、NCML を使用してこれを CF-1.6 ファイルに変換したいと思います。ここで、z
/ lat
/lon
は次元ではなく、変数は時間のみの関数です。ありがとう、
ファイル 1:
netcdf wqb_1.4 {
dimensions:
time = UNLIMITED ; // (109008 currently)
z = 1 ;
lat = 1 ;
lon = 1 ;
variables:
float time(time) ;
time:long_name = "Time" ;
time:standard_name = "time" ;
time:short_name = "time" ;
time:axis = "T" ;
time:units = "minutes since 2008-01-01 00:00:00 -10:00" ;
float z(z) ;
z:long_name = "depth below mean sea level" ;
z:standard_name = "depth" ;
z:short_name = "depth" ;
z:axis = "z" ;
z:units = "meters" ;
float lat(lat) ;
lat:long_name = "Latitude" ;
lat:standard_name = "latitude" ;
lat:short_name = "lat" ;
lat:axis = "Y" ;
lat:units = "degrees_north" ;
float lon(lon) ;
lon:long_name = "Longitude" ;
lon:standard_name = "longitude" ;
lon:short_name = "lon" ;
lon:axis = "X" ;
lon:units = "degrees_east" ;
float temp(time, z, lat, lon) ;
temp:long_name = "Temperature" ;
temp:standard_name = "sea_water_temperature" ;
temp:short_name = "temp" ;
temp:units = "Celsius" ;
temp:coordinates = "time lat lon alt" ;
temp:valid_range = 10., 35. ;
temp:_FillValue = -999.f ;
temp:observation_type = "measured" ;
ファイル 2:
netcdf wqb_1.6 {
dimensions:
time = UNLIMITED ; // (109008 currently)
name_strlen = 5 ;
variables:
char station_name(name_strlen) ;
station_name:long_name = "wqbaw" ;
station_name:cf_role = "timeseries_id" ;
float time(time) ;
time:long_name = "Time" ;
time:standard_name = "time" ;
time:short_name = "time" ;
time:axis = "T" ;
time:units = "minutes since 2008-01-01 00:00:00 -10:00" ;
float z ;
z:long_name = "depth below mean sea level" ;
z:standard_name = "depth" ;
z:short_name = "depth" ;
z:axis = "z" ;
z:units = "meters" ;
float lat ;
lat:long_name = "Latitude" ;
lat:standard_name = "latitude" ;
lat:short_name = "lat" ;
lat:axis = "Y" ;
lat:units = "degrees_north" ;
float lon ;
lon:long_name = "Longitude" ;
lon:standard_name = "longitude" ;
lon:short_name = "lon" ;
lon:axis = "X" ;
lon:units = "degrees_east" ;
float temp(time) ;
temp:long_name = "Temperature" ;
temp:standard_name = "sea_water_temperature" ;
temp:short_name = "temp" ;
temp:units = "Celsius" ;
temp:coordinates = "time lat lon alt" ;
temp:valid_range = 10., 35. ;
temp:_FillValue = -999.f ;
temp:observation_type = "measured" ;