Формат файла для научных данных
NetCDF ( Network Common Data Form ) — это набор программных библиотек и самоописываемых, машинно-независимых форматов данных, которые поддерживают создание, доступ и совместное использование массивно-ориентированных научных данных. Домашняя страница проекта [2] размещена программой Unidata в University Corporation for Atmospheric Research (UCAR). Они также являются главным источником программного обеспечения netCDF, разработки стандартов, обновлений и т. д. Формат является открытым стандартом . NetCDF Classic и 64-битный Offset Format являются международным стандартом Open Geospatial Consortium . [3]
Проект стартовал в 1988 году и до сих пор активно поддерживается UCAR. Оригинальный двоичный формат netCDF (выпущенный в 1990 году, теперь известный как «классический формат netCDF») до сих пор широко используется во всем мире и продолжает полностью поддерживаться во всех выпусках netCDF. Версия 4.0 (выпущенная в 2008 году) позволила использовать формат файла данных HDF5 . Версия 4.1 (2010) добавила поддержку клиентского доступа C и Fortran к указанным подмножествам удаленных данных через OPeNDAP . Версия 4.3.0 (2012) добавила систему сборки CMake для сборок Windows . Версия 4.7.0 (2019) добавила поддержку чтения объектов Amazon S3 . Версия 4.8.0 (2021) добавила дополнительную поддержку Zarr . Версия 4.9.0 (2022) добавила поддержку сжатия zstandard. Планируются дальнейшие выпуски для улучшения производительности, добавления функций и исправления ошибок.
История
Первоначально формат был основан на концептуальной модели Common Data Format, разработанной NASA , но с тех пор отклонился и несовместим с ней. [4] [5]
Описание формата
Библиотеки netCDF поддерживают несколько различных двоичных форматов для файлов netCDF:
- Классический формат использовался в первой версии netCDF и до сих пор является форматом по умолчанию для создания файлов.
- 64-битный формат смещения был представлен в версии 3.6.0 и поддерживает большие размеры переменных и файлов.
- Формат netCDF-4/HDF5 был представлен в версии 4.0; это формат данных HDF5 с некоторыми ограничениями.
- Формат HDF4 SD поддерживается только для чтения.
- Формат CDF5 поддерживается в сотрудничестве с проектом parallel-netcdf.
Все форматы являются « самоописываемыми ». Это означает, что есть заголовок , который описывает структуру остальной части файла, в частности массивы данных , а также произвольные метаданные файла в форме атрибутов имя/значение . Формат не зависит от платформы , а такие проблемы, как порядок байтов, решаются в библиотеках программного обеспечения . Данные хранятся таким образом, что позволяют эффективное подмножество.
Начиная с версии 4.0, API netCDF [6] позволяет использовать формат данных HDF5 . Пользователи NetCDF могут создавать файлы HDF5 с преимуществами, недоступными в формате netCDF, такими как гораздо большие файлы и несколько неограниченных измерений.
Поддерживается полная обратная совместимость при доступе к старым файлам netCDF и использовании предыдущих версий API C и Fortran.
Программное обеспечение
Доступ к библиотекам
Библиотеки программного обеспечения, предоставляемые UCAR, обеспечивают доступ для чтения и записи к файлам netCDF, кодируя и декодируя необходимые массивы и метаданные. Основная библиотека написана на языке C и предоставляет API для C, C++ и два API для приложений Fortran , один для Fortran 77 и один для Fortran 90. Независимая реализация, также разработанная и поддерживаемая Unidata, написана на 100% Java , что расширяет основную модель данных и добавляет дополнительную функциональность. Интерфейсы к netCDF на основе библиотеки C также доступны в других языках, включая R ( пакеты ncdf , [7] ncvar и RNetCDF [8] ), Perl , Python , Ruby , Haskell , [9] Mathematica , MATLAB , IDL , Julia и Octave . Спецификация вызовов API очень похожа на разных языках, за исключением неизбежных различий в синтаксисе. Вызовы API для версии 2 довольно сильно отличались от вызовов в версии 3, но также поддерживаются версиями 3 и 4 для обратной совместимости. Программистам приложений, использующим поддерживаемые языки, обычно не нужно беспокоиться о самой структуре файла, даже если она доступна в виде открытых форматов.
Приложения
Написан широкий спектр прикладного программного обеспечения, использующего файлы netCDF. Они варьируются от утилит командной строки до пакетов графической визуализации . Некоторые из них перечислены ниже, а более длинный список [10] находится на веб-сайте UCAR.
- Обычно используемый набор утилит командной строки Unix для файлов netCDF — это набор NetCDF Operators (NCO), который предоставляет ряд команд для обработки и анализа файлов netCDF, включая базовую конкатенацию записей , нарезку массивов и усреднение .
- ncBrowse [11] — это универсальный просмотрщик файлов netCDF, включающий графику Java, анимацию и 3D-визуализации для широкого спектра соглашений о файлах netCDF.
- ncview [12] — визуальный браузер для файлов формата netCDF. Эта программа — простой, быстрый, основанный на графическом интерфейсе инструмент для визуализации полей в файле netCDF. Можно просматривать различные измерения массива данных, просматривая необработанные значения данных. Также можно изменять цветовые карты, инвертировать данные и т. д.
- Panoply [13] — это просмотрщик файлов netCDF, разработанный в NASA Goddard Institute for Space Studies , который фокусируется на представлении геосетчатых данных. Он написан на Java и, таким образом, не зависит от платформы. Хотя его набор функций пересекается с ncBrowse и ncview, Panoply отличается тем, что предлагает широкий спектр картографических проекций и может работать с различными масштабными цветовыми таблицами.
- Командный язык NCAR (NCL) используется для анализа и визуализации данных в файлах netCDF (среди других форматов).
- Язык программирования Python может получать доступ к файлам netCDF с помощью модуля PyNIO [14] (который также облегчает доступ к множеству других форматов данных). Файлы netCDF также можно читать с помощью модуля Python
netCDF4-python
[ 15] и в формате pandasDataFrame
с помощью модуля [16]xarray
. - Ferret — это интерактивная компьютерная среда визуализации и анализа, разработанная для удовлетворения потребностей океанографов и метеорологов, анализирующих большие и сложные наборы данных с сеткой. Ferret предлагает подход к анализу, подобный Mathematica; новые переменные могут быть определены интерактивно как математические выражения, включающие переменные набора данных. Расчеты могут применяться к произвольно сформированным областям. Полностью документированная графика создается с помощью одной команды.
- Система анализа и отображения сетки (GrADS) [17] — это интерактивный настольный инструмент, который используется для легкого доступа, обработки и визуализации данных по наукам о Земле. GrADS был реализован по всему миру на различных распространенных операционных системах и свободно распространяется через Интернет.
- nCDF_Browser [18] — визуальный браузер nCDF, написанный на языке программирования IDL . Переменные, атрибуты и измерения можно немедленно загрузить в командную строку IDL для дальнейшей обработки. Все файлы библиотеки Coyote [19], необходимые для запуска nCDF_Browser, доступны в zip-файле.
- Версии ArcGIS после 9.2 [20] поддерживают файлы netCDF, которые следуют соглашениям о метаданных Climate and Forecast и содержат прямоугольные сетки с равноотстоящими координатами. Набор инструментов Multidimensional Tools может использоваться для создания растровых слоев, слоев объектов и табличных представлений из данных netCDF в ArcMap или для преобразования данных объектов, растров и таблиц в netCDF.
- OriginPro версии 2021b поддерживает [21] netCDF CF Convention . Усреднение может выполняться во время импорта, что позволяет обрабатывать большие наборы данных в программном обеспечении с графическим интерфейсом.
- Библиотека абстракции геопространственных данных обеспечивает поддержку [22] доступа для чтения и записи данных netCDF.
- netCDF Explorer — многоплатформенный графический браузер для файлов netCDF. netCDF Explorer может просматривать файлы локально или удаленно с помощью OPeNDAP.
- R поддерживает netCDF через такие пакеты, как ncdf4 (включая поддержку HDF5) [23] или RNetCDF (без поддержки HDF5). [24]
- HDFql позволяет пользователям управлять файлами netCDF-4/HDF5 с помощью языка высокого уровня (похожего на SQL) на C, C++, Java, Python, C#, Fortran и R.
- Рабочая станция Metview и пакетная система ECMWF могут обрабатывать NetCDF вместе с GRIB и BUFR .
- OpenChrom поставляет конвертер на условиях Eclipse Public License [25]
Распространенное использование
Он широко используется в климатологии , метеорологии и океанографии (например, прогнозирование погоды , изменение климата ), а также в ГИС- приложениях.
Это формат ввода/вывода для многих приложений ГИС и для общего обмена научными данными. Цитата с их сайта: [26]
- «NetCDF (сетевая общая форма данных) — это набор интерфейсов для доступа к данным, ориентированным на массивы, и свободно распространяемая коллекция библиотек доступа к данным для C, Fortran, C++, Java и других языков. Библиотеки netCDF поддерживают машинно-независимый формат представления научных данных. Вместе интерфейсы, библиотеки и формат поддерживают создание, доступ и совместное использование научных данных».
Конвенции
Соглашения Climate and Forecast (CF) — это соглашения о метаданных для данных по наукам о Земле, призванные содействовать обработке и обмену файлами, созданными с помощью NetCDF Application Programmer Interface (API). Соглашения определяют метаданные, которые включены в тот же файл, что и данные (таким образом, делая файл «самоописывающим»), которые предоставляют окончательное описание того, что представляют данные в каждой переменной, а также пространственных и временных свойств данных (включая информацию о сетках, такую как границы ячеек сетки и методы усреднения ячеек). Это позволяет пользователям данных из разных источников решать, какие данные сопоставимы, и позволяет создавать приложения с мощными возможностями извлечения, пересчета и отображения.
Parallel-NetCDF
Расширение netCDF для параллельных вычислений под названием Parallel-NetCDF (или PnetCDF) было разработано Аргоннской национальной лабораторией и Северо-Западным университетом . [27] Оно построено на основе MPI-IO , расширения ввода-вывода для коммуникаций MPI . Используя высокоуровневые структуры данных netCDF, библиотеки Parallel-NetCDF могут использовать оптимизации для эффективного распределения приложений чтения и записи файлов между несколькими процессорами. Пакет Parallel-NetCDF может читать/писать только классические и 64-битные форматы смещения. Parallel-NetCDF не может читать или записывать формат на основе HDF5, доступный в netCDF-4.0. Пакет Parallel-NetCDF использует разные, но похожие API в Fortran и C.
Параллельный ввод-вывод в библиотеке Unidata netCDF поддерживается с версии 4.0 для файлов данных HDF5. Начиная с версии 4.1.1 библиотека Unidata NetCDF C поддерживает параллельный ввод-вывод для классических и 64-битных файлов смещения с использованием библиотеки Parallel-NetCDF, но с API NetCDF.
Взаимодействие библиотек C/Fortran/C++ с другими форматами
Библиотека netCDF C и библиотеки на ее основе (Fortran 77 и Fortran 90, C++ и все сторонние библиотеки) могут, начиная с версии 4.1.1, читать некоторые данные в других форматах данных. Данные в формате HDF5 могут читаться с некоторыми ограничениями. Данные в формате HDF4 могут читаться библиотекой netCDF C, если они созданы с использованием API HDF4 Scientific Data (SD).
Общая модель данных NetCDF-Java
Библиотека NetCDF-Java в настоящее время считывает следующие форматы файлов и протоколы удаленного доступа:
- Документация формата BUFR [28] (текущая разработка)
- CINRAD уровень II [29] (китайский формат радара)
- DMSP [30] ( Программа оборонных метеорологических спутников )
- Формат файла радара DORADE [31]
- Формат изображения GINI [32] ( интерфейс GOES Ingest и NOAA PORT)
- GEMPAK [33] данные сетки
- GRIB версии 1 и 2 (текущая работа над таблицами)
- GTOPO [34] 30-секундный набор данных о высоте ( USGS )
- Иерархический формат данных (HDF4, HDF-EOS2, HDF5, HDF-EOS5)
- NetCDF [35] (классический и большой формат)
- NetCDF-4 [36] (построен на HDF5 )
- Радар NEXRAD [37] уровня 2 и уровня 3.
В разработке находится ряд других форматов. Поскольку каждый из них доступен прозрачно через API NetCDF, библиотека NetCDF-Java, как говорят, реализует общую модель данных для научных наборов данных.
Общая модель данных Java состоит из трех слоев, которые надстраиваются друг над другом, последовательно добавляя более богатую семантику:
- Уровень доступа к данным , также известный как синтаксический уровень, обрабатывает чтение данных.
- Слой системы координат определяет координаты массивов данных. Координаты являются совершенно общей концепцией для научных данных; специализированные системы координат геореференции , важные для сообщества наук о Земле, специально аннотируются.
- Слой научных типов данных определяет конкретные типы данных, такие как сетки, изображения и точечные данные, а также добавляет специализированные методы для каждого типа данных.
Модель данных уровня доступа к данным является обобщением модели данных NetCDF-3 и по существу совпадает с моделью данных NetCDF-4. Уровень системы координат реализует и расширяет концепции конвенций Climate and Forecast Metadata Conventions . Уровень типа научных данных позволяет манипулировать данными в координатном пространстве, аналогично спецификациям Open Geospatial Consortium . Идентификация систем координат и типизация данных продолжаются, но пользователи могут подключать собственные классы во время выполнения для специализированной обработки.
Смотрите также
- Общий формат данных (CDF)
- CGNS ( общая система обозначений CFD )
- EAS3 (система Ein-Ausgabe)
- FITS (Гибкая система транспортировки изображений)
- GRIB (двоичный с сеткой)
- Иерархический формат данных (HDF)
- Клиент-серверные протоколы OPeNDAP
- Двоичные файлы Tecplot
- XDMF (формат расширяемой модели данных)
- XMDF (формат данных расширяемой модели)
- Зарр
Ссылки
- ^ "NetCDF 4.9.2". 17 марта 2023 г.
- ^ "Домашняя страница NetCDF". Unidata/UCAR. Архивировано из оригинала 2017-12-06 . Получено 2017-12-05 .
- ^ "OGC standard netCDF Classic и 64-битное смещение". Opengeospatial.org. Архивировано из оригинала 2017-11-30 . Получено 2017-12-05 .
- ^ "Предыстория - Руководство пользователя NetCDF". Unidata.ucar.edu . Получено 27.11.2013 .
- ^ "CDF - Часто задаваемые вопросы". NASA . Архивировано из оригинала 2018-06-19 . Получено 2018-11-02 .
- ^ "Версия 4.0 API netCDF". Unidata.ucar.edu. Архивировано из оригинала 2015-06-17 . Получено 2013-11-27 .
- ^ "ncdf". Cirrus.ucsd.edu. 2013-08-06. Архивировано из оригинала 2013-12-03 . Получено 2013-11-27 .
- ^ "Rnetcdf". Cran.r-project.org. 2012-07-19. Архивировано из оригинала 2013-12-02 . Получено 2013-11-27 .
- ^ "hnetcdf: библиотека Haskell NetCDF". hackage.haskell.org. 2014-07-10. Архивировано из оригинала 2014-07-09 . Получено 2014-07-10 .
- ^ "Программное обеспечение для обработки или отображения данных NetCDF". Unidata.ucar.edu . Получено 2020-10-23 .
- ^ "ncBrowse". Epic.noaa.gov. Архивировано из оригинала 2013-12-03 . Получено 2013-11-27 .
- ^ "ncview". Meteora.ucsd.edu. Архивировано из оригинала 2014-02-12 . Получено 2013-11-27 .
- ^ "Panoply". Giss.nasa.gov . Goddard Institute for Space Studies . Архивировано из оригинала 2014-06-20 . Получено 2013-11-27 .
- ^ "PyNIO". Pyngl.ucar.edu. 2011-07-28. Архивировано из оригинала 2013-11-25 . Получено 2013-11-27 .
- ^ "netCDF4". Архивировано из оригинала 2017-11-29 . Получено 2017-12-04 .
- ^ "xarray: ND-маркированные массивы и наборы данных в Python". Архивировано из оригинала 2016-09-01 . Получено 2016-09-07 .
- ^ "GrADS Home Page". Архивировано из оригинала 2016-02-13 . Получено 2018-04-10 .
- ^ "Coyote's Guide to IDL Programming". Dfanning.com. 2013-11-23. Архивировано из оригинала 2015-09-23 . Получено 2013-11-27 .
- ^ "Библиотека Койота". Dfanning.com. 2013-11-23. Архивировано из оригинала 2015-09-23 . Получено 2013-11-27 .
- ^ "ArcGIS версия 9.2". Esri.com. Архивировано из оригинала 2013-11-22 . Получено 2013-11-27 .
- ^ "Импорт и обработка NetCDF". originlab.com . Получено 2021-05-11 .
- ^ "NetCDF network Common Data Form". Gdal.org. Архивировано из оригинала 2013-06-06 . Получено 2013-11-27 .
- ^ Дэвид Пирс (2014). ncdf4: Интерфейс к файлам данных формата Unidata netCDF (версии 4 или более ранней). Пакет R версии 1.13. https://cran.r-project.org/package=ncdf4
- ^ Павел Мична и при участии Милтона Вудса (2015). RNetCDF: Интерфейс к наборам данных NetCDF. Версия пакета R 1.7-3. https://cran.r-project.org/package=RNetCDF
- ^ OpenChrom: кроссплатформенное программное обеспечение с открытым исходным кодом для масс-спектрометрического анализа хроматографических данных , Филип Вениг, Юрген Одерматт, BMC Bioinformatics ; 2010 ; doi :10.1186/1471-2105-11-405
- ^ "Что такое netCDF?". Центр программ Unidata. Архивировано из оригинала 2013-03-15 . Получено 2012-11-26 .
- ^ "parallel-netcdf". Mcs.anl.gov. 2013-11-17. Архивировано из оригинала 2008-12-01 . Получено 2013-11-27 .
- ^ "BUFR FORMAT DOCUMENTATION". Архивировано из оригинала 9 октября 2007 г. Получено 2 февраля 2008 г.
- ^ [1] Архивировано 5 сентября 2008 г. на Wayback Machine.
- ↑ [2] Архивировано 14 декабря 2005 г. на Wayback Machine.
- ↑ [3] Архивировано 21 мая 2008 г. на Wayback Machine.
- ^ "Спутниковый формат GINI". Weather.unisys.com. Архивировано из оригинала 2013-12-02 . Получено 2013-11-27 .
- ^ "Unidata | GEMPAK". Unidata.ucar.edu. Архивировано из оригинала 2013-11-04 . Получено 2013-11-27 .
- ↑ [4] Архивировано 12 февраля 2008 г. на Wayback Machine.
- ^ "NetCDF". Unidata.ucar.edu. Архивировано из оригинала 2013-11-29 . Получено 2013-11-27 .
- ^ "NetCDF-4". Unidata.ucar.edu. Архивировано из оригинала 2015-06-17 . Получено 2013-11-27 .
- ^ Стив Ансари. "NCDC: Radar Resources". Ncdc.noaa.gov. Архивировано из оригинала 2013-12-02 . Получено 2013-11-27 .
Внешние ссылки
- Официальный сайт
- Руководство пользователя NetCDF — описывает формат файла
- «Введение в распределенную визуализацию»; раздел 4.2 содержит сравнение CDF, HDF и netCDF.
- Анимация данных NetCDF в ArcMap
- Список программных утилит, использующих файлы netCDF