Извлечение только нижней температуры из файла 4d NetCDF
У меня есть файл 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 ответа
Попробуйте NCO NKS с отрицательной гиперсилой:
ncks -d depth,-1 in.nc out.nc
Вряд ли найдется более сжатое решение.
CDO имеет такую же функциональность с отрицательным индексом для обозначения обратного отсчета от конца файла (по времени, высоте и т. Д.), Так что вы также можете сделать:
cdo sellevidx,-1 in.nc out.nc
Но Чарли прав, nco более лаконичен, так как требует ввода на один символ меньше, чем cdo;-), если, конечно, вы не захотите сделать это с файлом, который использует более длинное имя для вертикальной координаты, чем "глубина", в этом случае CDO выигрывает;-);-)