Извлечение переменной из группы в netCDF

У меня есть файл netCDF со следующим. нкдамп:

netcdf test_nc {
dimensions:
    time = UNLIMITED ; // (20 currently)
    latitude = 360 ;
    longitude = 720 ;
    N = 3 ;
    strlen = 1 ;
variables:
    float data_array(time, latitude, longitude, N) ;
        data_array:_FillValue = -9999.f ;
        data_array:units = "1" ;
        data_array:long_name = "data_array" ;
    char N(N, strlen) ;
    double latitude(latitude) ;
        latitude:standard_name = "latitude" ;
        latitude:units = "degrees_north" ;
    double longitude(longitude) ;
        longitude:standard_name = "longitude" ;
        longitude:units = "degrees_east" ;
    double time(time) ;
        time:standard_name = "time" ;
        time:units = "days since 2000-01-01 00:00:00.0" ;
        time:calendar = "gregorian" ;
}

Как извлечь последнюю переменную в группе data_array? Если я использую ncks, я могу извлечь все data_array следующим образом:

ncks -v data_array test_nc.nc output_nc.nc

Однако я хочу извлечь только переменную, соответствующую N=3 в data_array. Любое решение, использующее инструменты python netCDF4 или nco, будет работать для меня (но не с использованием cdo), также должно работать в Windows.


person user308827    schedule 05.12.2016    source источник


Ответы (1)


Если я правильно понимаю, вы используете эксцентричную терминологию и называете «группой» и «переменной» то, что другие называют «переменной» и «гиперлабом» соответственно. Решение NCO состоит в том, чтобы использовать параметр Hyperslab (-d) практически с любым оператором, например нккс :

ncks -d N,2 -v data_array in.nc out.nc

Индексы по умолчанию отсчитываются от 0, поэтому N=2 дает вам последний срез в N.

person Charlie Zender    schedule 06.12.2016
comment
Спасибо! это именно то, что мне было нужно, также спасибо за исправление терминологии - person user308827; 06.12.2016