Объедините различные переменные netcdf и напишите вывод

У меня есть файлы netcdf с 3 переменными, названными v1, v2, v3. Я хотел бы объединить эти переменные и создать новую переменную v4, как показано ниже:

v4 = (v1*0.1)+(v2*0.2)+(v3*0.2)

Я знаю, как агрегировать 2 переменные с помощью cdo:

cdo expr,’sum=var1+var2;’ ifile ofile

Но как я могу выполнить более конкретные вычисления netcdf, такие как требуемый?


person steve    schedule 24.11.2020    source источник


Ответы (3)


CDO сможет обработать требуемую формулу:

cdo expr,’v4=(v1*0.1)+(v2*0.2)+(v3*0.2)’ ifile ofile

Если вы хотите добавить переменную в файлы, просто сделайте следующее:

cdo aexpr,’sum=var1+var2;v4=(v1*0.1)+(v2*0.2)+(v3*0.2)’ ifile ofile
person Robert Wilson    schedule 25.11.2020

По умолчанию NCO распространяет метаданные из первой переменной на RHS в LHS, поэтому v4 получает те же атрибуты, что и v1 в примере Адриана. Вы можете изменить или дополнить эти атрибуты в той же команде ncap2, используя знак at @ для именования атрибутов, например,

ncap2 -O -s 'v4=(v1*0.1)+(v2*0.2)+(v3*0.2);v4@long_name="Fourth variable";v4@units="meters"' in.nc out.nc
person Charlie Zender    schedule 27.11.2020
comment
Хороший замечание, если вы не возражаете, я обновлю свой ответ, чтобы указать на эту информацию для пояснения. - person Adrian Tompkins; 28.11.2020

вы также можете использовать ncap2 в качестве альтернативы

ncap2 -O -s "v4=(v1*0.1)+(v2*0.2)+(v3*0.2)" ifile.nc ofile.nc

Хотя я обычно использую решение cdo, предложенное Робертом Уилсоном, приятная вещь в nco - это возможность также определять все метаданные:

ncatted -O -a units,v4,c,c,"units goes here" ofile.nc
ncatted -O -a long_name,v4,c,c,"long_name goes here" ofile.nc

РЕДАКТИРОВАТЬ: Как правильно указывает Чарли в своем ответе на этот вопрос, я должен был подчеркнуть тот факт, что ncap2 переносит метаданные из исходных переменных, поэтому, если метаданные, такие как единицы, уже существуют, вам нужно либо указать новые значения в команде ncap как на его ответ или используйте ncatted в режиме изменения этих атрибутов.

person Adrian Tompkins    schedule 27.11.2020