2017-01-04 4 views
0

У меня есть два файла netcdf: нисходящее излучение под названием rsds.nc и ограниченное излучение с именем rsns.nc. rsds.nc содержит переменную с именем rsds и rsns.nc содержит переменную с именем rsns. Теперь я хотел бы получить апвеллинговое излучение rsus.nc путем вычитания переменных в пределах rsds.nc и rsns.nc соответственно.вычитание переменных в двух разных файлах netcdf

Я попытался следующие методы:

ncdiff rsds.nc rsns.nc rsus.nc 
ncbo op_typ=diff rsds.nc rsns.nc rsus.nc 

Все они произвели rsus.nc но переменная rsus, в этот файл отсутствует. Любая идея, почему это так?

ответ

2

В качестве альтернативы @ RichSignell отвечают, вы можете комбинировать переменные в один файл и использовать ncap2 выполнить вычитание без переименования переменных.

ncks -A rsns.nc rsds.nc 
ncap2 -s 'rsus=(rsds-rsns)' rsds.nc rsus.nc 
+0

Ницца, спасибо! –

2

Включены только переменные с одинаковым именем, если вы ncdiff два файла. Таким образом, одним из решений было бы просто переименовать переменную в один из файлов, чтобы она была одинаковой. Например, попробуйте следующее:

ncrename -v rsds,rsns rsds.nc 
ncdiff rsds.nc rsns.nc rsus.nc 
+0

Да, я согласен с этим. Но я надеялся, что у кого-то есть идея, как это сделать без обхода изменения имени переменной. Спасибо, Рич! –

2

Альтернативное решение для CDO. Команда

CDO к югу может сделать это на одной строке:

cdo sub rsds.nc rsns.nc rsus.nc 

вы получите предупреждение

CDO суб (Предупреждение): Входные потоки имеют разные параметры!

Но вы можете игнорировать это. Обратите внимание, что вы можете изменить имя переменной на что-то более подходящее, так что вы можете сделать это на одной строке как:

cdo setname,rsus -sub rsds.nc rsns.nc rsus.nc 
Смежные вопросы