从4D NetCDF文件中提取底部温度

5

我有一个用于记录海洋温度的NetCDF文件。它有1个变量(“temp”)和4个维度(时间,经度,纬度和深度)。我想要仅提取每个时间,经度和纬度上的最大深度处的温度,以获取底部海洋温度栅格砖。我可以使用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)

感谢您的提前支持!
2个回答

2

可以尝试使用NCO的ncks命令,并使用负数超立方体

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

很难找到更简洁的解决方案。


你好。我该如何使用pynco来完成这个任务?我尝试了以下方法但没有成功:from nco import Nco from nco.custom import Limit, LimitSingle nco = Nco() opt = [ Limit("depth", -1) ] nco.ncks(input='filename.nc', output='filename_bottomT.nc', options=opt) - ArnoLB

0

CDO具有相同的功能,可以使用负索引表示从文件末尾(时间、高度等)反向计数,因此您也可以执行:

cdo sellevidx,-1 in.nc out.nc

但是Charlie是对的,nco更简洁,因为它只需要输入比cdo少一个字符,除非你想在使用垂直坐标的文件中使用比"depth"更长的名称,这种情况下cdo胜出 ;-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接