Что это за формат?
Данные, применяемые в климатических моделях, требуют не только соответствующего пространственного разрешения, но и должны содержать изменения параметра (температуры, давления и других) во времени. Растровый формат предполагает лишь пространственную привязку, и ручная или полуавтоматизированная работа по включению в модель нужных слоев за каждый временной отрезок неэффективна. Под такую задачу был создан формат, сочетающий в себе несколько один или несколько рассматриваемых параметров, даты и метаданные, описывающие единицы измерения и необходимую дополнительную информацию.
NetCDF (Network Common Data Form) – формат файлов, использующийся в различных языках программирования, предназначенный для хранения многомерных научных данных, таких как температура, давление или скорость ветра, в виде массивов. Он разработан программой Unidata, и в настоящее время является стандартом для обмена научными данными и весьма эффективен для разделения и структуризации больших наборов данных.
Почему ученые часто выбирают работу с этим форматом при создании климатических моделей?
Самоописываемость
Файлы NetCDF сразу содержат внутри себя метаданные: имена переменных, единицы измерения, референсные года, если единицы имеют не абсолютные значения, а аномалии. Это предоставляет контекст хранимых данных, таким образом легче не запутаться при обработке слоев.
Машинно-независимый формат
Данные, хранящиеся в файле NetCDF, доступны на различных операционных системах и языках программирования без необходимости переформатирования данных.
Многомерность
В отличие от простых электронных таблиц или растров с двумя измерениями, NetCDF может хранить данные в нескольких измерениях, таких как время, широта, долгота и высота, что делает его подходящим для решения задач, связанных с климатическим моделированием.
Масштабируемость
На основе соответствующих программ можно получать доступ к отдельным, небольшим фрагментам большого файла NetCDF, не читая его целиком. Это важно для работы с большими наборами данных, например, если NetCDF файл глобального уровня.
Где с ним работают, и какие программы применяют?
Основная область применения – климатологические и океанографические исследования, так как этот формат изначально был основан для них. Позже он начал использоваться в геологии для учета изменений в профилях.
Файл чаще всего имеет расширение .nc, для работы с ним используются библиотеки языков C++, Java и Python. Для визуализации чаще всего используется программа Panoply. Рассмотрим работу с таким файлом на примере данных о аномалиях температуры воздуха и поверхности океана с 1850 по 2024 год, ежемесячные значения, центр Хэдли Метеорологического управления Великобритании (HadCRUT).
После скачивания файла из источника его стоит визуализировать для проверки цельности, а также для получения большего информация через метаданные, подписанные у каждого параметра. Удобно делать это через специальный софт – Panoply. У карт можно менять все параметры: от проекции и экстента до цветовой палитры значений и всех подписей.
Для просмотра данных может быть использованы и другие средства, например, через библиотеки в Python, из которых самой удобной является xarray. Пример базовой визуализации и анализа NetCDF файла:
import xarray as xr
# Открытие файла
d = xr.open_dataset('file.nc')
# Просмотр структуры данных
print(d)
d.info()
# Доступ к переменным
temp = d['temperature']
lat = d.latitude
# Срезы данных
temp_jan = d['temperature'].sel(time='2024-01-01')
temp_tropics = d['temperature'].sel(lat=slice(-45, 40))
# Вычисления
mean_temp = d['temperature'].mean(dim='time')
anomaly = d['temperature'] - mean_temp
# Сохранение
ds.to_netcdf('output.nc')
Единственный минус работы с таким форматом в Python – трудности с обработкой больших файлов. Для этого есть удобный аналог библиотеки в Linux, созданный специально под NetCDF: CDO (Climate Data Operator). Так как она не требует визуализации, даже файлы с высоким разрешением и глобальным масштабом можно обработать в течение 10 минут.
Установка на Ubuntu/Debian
sudo apt-get install cdo
Базовые команды, в которых пишется название входного файла, через пробел название выходного файла:
Информация о файле
# Информация о структуре файла
cdo sinfo input.nc
# Подробная информация о переменных
cdo info input.nc
Операции со временем и масштабом
# Выбор временного периода
cdo seldate,2024-01-01,2024-12-31 input.nc output.nc
# Выбор переменной
cdo selname,temperature input.nc temp.nc
# Выбор по уровню/высоте
cdo sellevel,800 input.nc output_800.nc
# Выбор региона: мин. долгота, мин. широта, макс. долгота, макс. широта
cdo sellonlatbox,40,65,120,80 input.nc arctic.nc
Операции с вычислениями
# Среднее по времени
cdo timmean input.nc mean.nc
# Среднее по пространству
cdo fldmean input.nc global_mean.nc
# Годовое среднее
cdo yearmean input.nc annual_mean.nc
# Сезонное среднее
cdo seasmean input.nc seasonal_mean.nc
# Стандартное отклонение
cdo timstd input.nc std_dev.nc
# Разность файлов
cdo sub file1.nc file2.nc difference.nc
# Сумма файлов
cdo add file1.nc file2.nc sum.nc
# Усреднение нескольких файлов
cdo ensmean file1.nc file2.nc file3.nc ensemble_mean.nc
Пользователи могут использовать инструменты и библиотеки для создания файлов NetCDF и, при необходимости, распаковывать их перед использованием для обеспечения совместимости. Такой стандартизированный формат позволяет обмениваться климатическими данными разных моделей и реанализов, пополняя общую научную базу данных по этому направлению.