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

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

5 голосов
/ 13 сентября 2008

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

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

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

Ответы [ 4 ]

10 голосов
/ 02 сентября 2014

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


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

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

Scientific DataSet Lite 1.4.0

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


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

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

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

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

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

7 голосов
/ 15 сентября 2008

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

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

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

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

3 голосов
/ 25 августа 2016

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

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

Scientific DataSet Lite 1.4.0

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

1 голос
/ 13 мая 2009

В проекте мы используем реализацию 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

...