Нужна помощь в добавлении двух файлов netcdf на основе выбора периода времени
У меня есть два файла netcdf: 1) BB_001.nc с 337 записями с переменной записи в качестве времени; 2) BB_002.nc, который является продолжением симуляции с 385 записями (переменная записи также является временем). Таким образом, эти два файла имеют одну запись перекрытия.
$ ncdump -h BB_001.nc
netcdf BB_WC {
dimensions:
nele = 278399 ;
node = 143546 ;
siglay = 18 ;
siglev = 19 ;
three = 3 ;
time = UNLIMITED ; // (337 currently)
DateStrLen = 26 ;
maxnode = 11 ;
maxelem = 9 ;
four = 4 ;
...
$ ncdump -h BB_002.nc
netcdf BB_0001 {
dimensions:
nele = 278399 ;
node = 143546 ;
siglay = 18 ;
siglev = 19 ;
three = 3 ;
time = UNLIMITED ; // (385 currently)
DateStrLen = 26 ;
maxnode = 11 ;
maxelem = 9 ;
four = 4 ;
...
Я хочу добавить их, но последняя запись BB_001.nc и первая запись BB_002.nc совпадают, и мне нужно удалить избыточную запись.
Я попробовал следующую команду:
ncks –A –d time,1,385 BB_002.nc BB_001.nc
Но это не сработало, и записи BB_001.nc остались прежними (337 вместо 337+384=721).
В качестве альтернативы я попытался:
ncrcat BB_001.nc BB_002.nc test.nc
Работает, но test.nc имеет 722 записей. Как я могу избавиться от лишней записи?
$ ncdump -h test.nc
netcdf test {
dimensions:
nele = 278399 ;
node = 143546 ;
siglay = 18 ;
siglev = 19 ;
three = 3 ;
time = UNLIMITED ; // (722 currently)
DateStrLen = 26 ;
maxnode = 11 ;
maxelem = 9 ;
four = 4 ;
Любая помощь очень ценится.
Спасибо,
3 ответа
Обычно люди делают это в два этапа, как указано выше, например,
ncks -d time,1, BB_002.nc 2.nc
ncrcat BB_001.nc 2.nc out.nc
Люди, которые читают http://nco.sf.net/nco.html, знают о --record_append
Опция, позволяющая сделать это за один шаг, т. е. быстрее. Упражнение осталось для читателя.
Прежде чем я отвечу, как это сделать в nco, я настоятельно рекомендую вам взять python и использовать библиотеку netCDF4, потому что, на мой взгляд, манипулирование файлами netCDF намного проще.
Сначала создайте новый файл netCDF и удалите последнюю запись:
ncks -d time,0,335 BB_001.nc BB_001_new.nc
Затем объедините BB_001_new.nc с BB_002.nc
ncrcat BB_001_new.nc BB_002.nc test.nc
Эквивалентное решение с использованием CDO:
cdo delete,timestep=1 BB_002.nc 2.nc
cdo mergetime BB_001.nc 2.nc out.nc
вы можете передать команду следующим образом:
cdo mergetime BB_001.nc -delete,timestep=1 BB_002.nc out.nc