1

如何给这个特殊的 netCDF 文件一个合适的时间轴?

“时间”既作为维度又作为变量存在,但时间变量使用“序列\日期\数字”作为其维度

有两个挑战: 1. 变量与维度的问题;和 2. "serial\ date\ number" 在某些系统上似乎表示空格(带有反斜杠分隔符),但在其他系统上带有下划线("serial_date_number")。

netcdf 
dimensions:
 lon = 80 ;
 lat = 41 ;
 pres = 27 ;
 time = 12053 ;
 serial\ date\ number = 12053 ;
variables:
 double u_mjo(time, pres, lat, lon) ;
 double lon(lon) ;
 lon:units = "degrees_east" ;
 double lat(lat) ;
 lat:units = "degrees_north" ;
 double p_level(pres) ;
 p_level:units = "hPa" ;
 double time(serial\ date\ number) ;
 time:units = "days since 0000-01-01 00:00 UTC" ;
  ...
4

3 回答 3

2

这是仅使用 NCO 命令对我有用的过程(无 ncdump/手动编辑/ncgen 步骤):

从 OPeNDAP 数据集提取 4 个时间步到本地 netCDF 文件allfields.nc

   ncks -d time,0,3 -d serial_date_number,0,3
    http://weather.rsmas.miami.edu/repository/opendap/synth:100ae90b-71ac-4d38-add9-f8982a976322:L2FsbGZpZWxkcy5uYw==/entry
    -O allfields.nc

将变量提取time到单独的文件中time.nc

ncks -v time allfields.nc time.nc

将除变量之外的所有内容提取time到单独的文件fixed.nc中(这也删除了有问题的serial_date_number维度):

ncks -C -x -v time allfields.nc fixed.nc

将维度重命名serial_data_numbertime

ncrename -O -d serial_date_number,time time.nc

将具有固定时间的文件附加到没有时间的文件中:

ncks -A time.nc fixed.nc

我在这个工作流程中使用和创建的文件可以在这里看到:http: //geoport.whoi.edu/thredds/catalog/usgs/data2/rsignell/models/mapes/catalog.html

于 2015-04-21T10:40:47.347 回答
0

将 original.nc 转换为 fixed.nc 的解决方案,解决了这两个挑战,(经过多次争论)是这样的:

# 1. extract time from the original.nc file to create a new file with only time:
 ncks -v time original.nc time.nc

# 2. remove the time variable from original.nc (which removes the problematic `serial_date_number dimension`)
 ncks -C -x -v time original.nc fixed.nc

#3. Fix the time.nc file manually, with a text editor:
 ncdump time.nc > time.txt   # dump netCDF to text
    ## text-edit time.txt to fix up header, 
    ## creating time = UNLIMITED ; // (12053 currently)
 ncgen -o newtime.nc < time.txt   # remake netCDF from text

# 4. Finally, concatenate the new time variable file into fixed.nc
 ncks -A newtime.nc fixed.nc
于 2015-04-20T21:15:18.317 回答
0

在 Ubuntu 14.04 上,我能够做到:

ncrename -v variable\ with\ whitespace,variable_with_whitespace filein.nc fileout.nc
于 2016-03-04T18:15:27.650 回答