Вывод измерения времени int32 в netCDF с помощью xarray


Допустим, у меня есть временные данные, которые выглядят следующим образом в наборе данных xarray:

ds = xr.Dataset({'time': pd.date_range('2000-01-01', periods=10)})
ds.to_netcdf('asdf.nc')

Метод Xarray to_netcdf() выводит измерение времени как int64:

$ ncdump -v time asdf.nc
netcdf asdf {
dimensions:
    time = 10 ;
variables:
    int64 time(time) ;
        time:units = "days since 2000-01-01 00:00:00" ;
        time:calendar = "proleptic_gregorian" ;
data:

 time = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;
}

Поскольку я работаю с сервером THREDDS, который не поддерживает int64, я хотел бы, чтобы эти временные данные были int32. Возможно ли это сделать с помощью xarray?

1 2

1 ответ:

Вы можете указать тип данных каждой выходной переменной с помощью свойства encoding или аргумента ключевого слова encoding в to_netcdf. В вашем примере это будет выглядеть просто так:

ds.to_netcdf('asdf.nc', encoding={'time': {'dtype': 'i4'}})

Дополнительную информацию о записи закодированных данных можно найти в документации xarray: http://xarray.pydata.org/en/latest/io.html#writing-encoded-data