5

我有一个用于海洋温度的 NetCDF 文件。它有 1 个变量('temp')和 4 个维度(时间、经度、纬度和深度)。我想仅在每次 lon 和 lat 的最大深度提取温度,以获得海底温度栅格砖。我愿意使用 R,或在终端中使用气候数据运算符。

NetCDF 文件的属性

nc_open('data.pre1980.nc')
File data.pre1980.nc (NC_FORMAT_CLASSIC):

     1 variables (excluding dimension variables):
        float temp[lon,lat,depth,time]   
            standard_name: sea_water_temperature
            long_name: TEMPERATURE
            units: Celsius_scale
            _FillValue: -9.98999971057742e+33
            missing_value: -9.98999971057742e+33
            pointwidth: 1

     4 dimensions:
        time  Size:324   *** is unlimited ***
            standard_name: time
            units: months since 1960-01-01
            calendar: 360_day
            axis: T
        lon  Size:440
            standard_name: longitude
            long_name: longitude
            units: degree_east
            axis: X
        lat  Size:179
            standard_name: latitude
            long_name: latitude
            units: degree_north
            axis: Y
        depth  Size:40
            units: meters
            axis: Z
            gridtype: 0

    4 global attributes:
        CDI: Climate Data Interface version 1.9.6 (http://mpimet.mpg.de/cdi)
        Conventions: CF-1.6
        history: Fri Aug 16 13:33:42 2019: cdo merge data.nc data.nc.1 data.nc.2 data.nc.3 data.nc.4 data.nc.5 data.pre1980.nc
        CDO: Climate Data Operators version 1.9.6 (http://mpimet.mpg.de/cdo)

提前致谢!

4

2 回答 2

2

尝试使用负hyperslab的NCO 的ncks

ncks -d depth,-1 in.nc out.nc

不太可能有更简洁的解决方案。

于 2019-08-16T20:05:46.183 回答
0

CDO 确实具有与负索引相同的功能,以表示从文件末尾反向计数(时间、高度等),因此您还可以执行以下操作:

cdo sellevidx,-1 in.nc out.nc

但是查理是正确的,nco 更简洁,因为它需要输入比使用 cdo 少一个字符,除非您当然想使用垂直坐标名称比“深度”更长的文件来执行此操作,在这种情况下 cdo 获胜; -)

于 2019-08-17T05:38:35.833 回答