Извлечение только нижней температуры из файла 4d NetCDF

У меня есть файл NetCDF для температуры океана. Он имеет 1 переменную («темп») и 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)

Заранее спасибо!


person zoek    schedule 16.08.2019    source источник


Ответы (2)


Попробуйте ncks с отрицательным знаком hyperslab:

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

Более лаконичного решения вряд ли найдется.

person Charlie Zender    schedule 16.08.2019

CDO действительно имеет ту же функциональность с отрицательным индексом для обозначения обратного отсчета от конца файла (по времени, высоте и т. Д.), Поэтому вы также можете:

cdo sellevidx,-1 in.nc out.nc

Но Чарли прав, nco более лаконичен, поскольку требует ввода на один символ меньше, чем с cdo, если, конечно, вы не хотите сделать это с файлом, который использует более длинное имя для вертикальной координаты, чем "глубина", и в этом случае cdo побеждает; -)

person Adrian Tompkins    schedule 17.08.2019