Библиотека C# NetCDF

В настоящее время я работаю (или, по крайней мере, планирую) пару проектов, которые работают с большими объемами повторяющихся данных. Тип данных, который хорошо работает в электронной таблице или базе данных, но неприятен в XML. :)

NetCDF кажется отличным вариантом для формата файла. Однако я работаю на C#, и "официальной" реализации NetCDF нет. Есть «официальная» версия Python, которую я потенциально мог бы использовать с IronPython. Другой вариант - это «Библиотека NetCDF для .Net» на CodePlex, но она кажется довольно тихой (http://www.codeplex.com/netcdf).

Кто-нибудь работал с любой из этих библиотек? Вы можете дать какие-нибудь рекомендации?

Я этим не пользовался, так что возьмите его там, где он есть. Ведущий разработчик проекта CodePlex (над которым он больше не работает) предлагает связь в качестве альтернативы. Название означает SDS: библиотека и инструменты Scientific DataSet и включает поддержку NetCDF. Похоже, что у него есть документация, и он вышел из бета-версии. Однако, когда я пишу этот 2011-10-14, последнее обновление вышло более года назад (2010-07-18).

Mike Gale 14.10.2011 07:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
1
11 211
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Во-первых, уверены ли вы, что NetCDF - правильный выбор? Если вы хотите взаимодействовать с другими программами, которым необходимо читать большие объемы данных, и они уже поддерживают NetCDF, то это, вероятно, отличный выбор. Не так много стандартных и хорошо поддерживаемых форматов файлов, которые поддерживают большие многомерные массивы. Но если вы собираетесь читать и писать файлы только с C#, это может быть не такой уж хороший выбор.

Я большой поклонник "классического" формата файлов NetCDF. Он компактен и чрезвычайно прост, но достаточно гибок, чтобы поддерживать множество распространенных видов многомерных хорошо структурированных данных. Мне потребовался всего один день, чтобы написать полный синтаксический анализатор для классического NetCDF, и мне потребовалось всего час, чтобы написать программу для вывода хорошо сформированного частного случая классического файла NetCDF. Вы можете реализовать чистую библиотеку NetCDF на C# самостоятельно, и это не составит особого труда. Вы можете легко начать с реализации только тех функций, которые вам нужны. Вот спецификация.

К сожалению, NetCDF-4 решил использовать HDF-5 в качестве формата данных. Это значительно усложняет процесс написания полного анализатора NetCDF на другом языке. HDF-5 очень универсален и, на мой взгляд, был чрезмерно спроектирован - он пытается быть слишком большим количеством вещей для слишком большого количества людей. Я бы не рекомендовал пытаться работать с ним напрямую, если вы не планируете потратить месяц на написание модульных тестов. Если вы должны использовать netCDF-4 / HDF-5 из C#, ваш единственный реальный вариант - обернуть библиотеку C с помощью SWIG или чего-то подобного.

Обратите внимание, что NetCDF для Python - это просто оболочка для кода C, так что на самом деле это не так уж и полезно; если вы собираетесь использовать обернутую библиотеку C, вы можете просто написать оболочку C#, а не использовать Python в качестве среднего уровня.

+1 Другой вариант помимо SWIG - использовать помощника взаимодействия PInvoke. Он был написан командой .NET framework. clrinterop.codeplex.com/releases/view/14120

MarkJ 20.05.2010 21:30

В проекте мы используем реализацию ucar netcdf на C# с использованием ikvm. IKVM можно использовать для «преобразования» проектов Java в библиотеки .Net без использования виртуальной машины Java. Я не проверял производительность, но это простой способ получить netcdf на C# :).

http://www.ikvm.net/stories.html

http://www.unidata.ucar.edu/downloads/netcdf/netcdf-java-4/index.jsp

Я добавляю это сейчас, потому что это был главный ответ, когда я искал в Google по этой теме.


ETA Согласно ответу ниже, теперь доступна ДРУГАЯ библиотека Microsoft NetCDF:

https://www.nuget.org/packages/SDSLite

Научный набор данных Lite 1.4.0

Это кроссплатформенная библиотека для работы с файлами netCDF, CSV и TSV.


Поскольку этот вопрос был первоначально задан и дан ответ, Microsoft выпустила научную библиотеку DataSet, которая поддерживает NetCDF.

http://research.microsoft.com/en-us/downloads/ccf905f6-34c6-4845-892e-a5715a508fa3/

Описание Проекта

Библиотека SDS упрощает для разработчиков .Net чтение, запись и совместное использование скаляров, векторов, матриц и многомерных сеток, которые очень распространены в научном моделировании. Он поддерживает CSV, NetCDF и другие форматы файлов.

Программы, использующие библиотеку, хранят связанные данные и связанные метаданные в компактном самоописывающем пакете. Библиотеки поставляются с набором утилит и пакетов: служебной программой командной строки sds, приложением DataSet Viewer и надстройкой для Microsoft Excel 2007 (и более поздних версий). См. Подробности на странице выпуска.

А теперь Microsoft выпустила новую библиотеку для netCDF, доступную через NuGet:

https://www.nuget.org/packages/SDSLite

Научный набор данных Lite 1.4.0

Это кроссплатформенная библиотека для работы с файлами netCDF, CSV и TSV.

Другие вопросы по теме