Я создаю файл NetCDF с в основном значениями NaN. Есть ли способ указать, что он должен быть сжат, а не занимать много места на диске? Я использую библиотеку C ++ NetCDF Университетской корпорации атмосферных исследований.
Спасибо!
Да, но это зависит от того, какой NetCDF C ++ API вы используете, устаревшего (netcdf-cxx-4.2) C ++ API или более нового netcdf-cxx4-4.2 C ++ API.
С помощью библиотеки netCDF-4 C ++, документированной Вот, просто используйте метод NcVar :: setCompression.
С устаревшей библиотекой netCDF-3 C ++ нет метода C ++, чтобы делать то, что вы хотите напрямую. Но эта библиотека реализована в виде тонкого слоя над C-библиотекой netCDF, поэтому, добавив конструктор NcVar, который устанавливает уровень сжатия, вызывая функцию C nc_def_var_deflate, она должна быть достаточно простой. Конечно, вам нужно убедиться, что ваша устаревшая библиотека C ++ создана для использования ранее установленной библиотеки netCDF-4.
Очевидно, что лучше создавать сжатые файлы netcdf4 во время создания, но я просто хотел добавить, что если уже написан код, который создает файл в несжатом виде, можно использовать CDO для существующих файлов для преобразования в соглашения netcdf4 и сжать одновременно:
cdo -f nc4c -z zip_9 copy in.nc out.nc