Pergunta

Atualmente estou trabalhando (ou pelo menos planejando) alguns projetos que trabalham com grandes quantidades de dados repetitivos.O tipo de dado que funciona bem em uma planilha ou banco de dados, mas é desagradável em XML.:)

NetCDF parece uma ótima opção para formato de arquivo.No entanto, meu trabalho é em C# e não existe uma implementação "oficial" do NetCDF disponível.Existe uma versão "oficial" do Python que eu poderia usar com o IronPython.Outra opção é a "Biblioteca NetCDF para .Net" no CodePlex, mas parece bastante silenciosa (http://www.codeplex.com/netcdf).

Alguém já trabalhou com alguma dessas bibliotecas?Você pode fornecer alguma recomendação?

Foi útil?

Solução

Primeiro, você tem certeza de que o NetCDF é a escolha certa?Se você deseja interagir com outros programas que precisam ler grandes quantidades de dados e já suportam NetCDF, provavelmente é uma ótima escolha.Não existem muitos formatos de arquivo padrão e bem suportados que suportem grandes matrizes multidimensionais.Mas se você for apenas ler e gravar arquivos em C#, pode não ser uma escolha tão boa.

Sou um grande fã do formato de arquivo NetCDF "clássico".É compacto e extremamente simples, mas flexível o suficiente para suportar muitos tipos comuns de dados multidimensionais bem estruturados.Levei apenas um dia para escrever um analisador completo para o NetCDF clássico e apenas uma hora para escrever um programa para gerar um caso especial bem formado de um arquivo NetCDF clássico.Você mesmo poderia implementar uma biblioteca C# NetCDF pura e não seria um grande problema.Você poderia facilmente começar implementando apenas os recursos necessários. Aqui está a especificação.

Infelizmente, o NetCDF-4 optou por usar HDF-5 como formato de dados.Isso adiciona muita complexidade e torna muito mais difícil escrever um analisador NetCDF completo em outra linguagem.O HDF-5 é de uso geral e, na minha opinião, foi projetado demais - ele tenta ser muitas coisas para muitas pessoas.Eu não recomendaria tentar trabalhar diretamente com ele, a menos que você planeje passar um mês escrevendo testes de unidade.Se você precisar usar netCDF-4/HDF-5 de C#, sua única opção realista seria agrupar a biblioteca C usando SWIG ou algo parecido.

Observe que o NetCDF para Python é apenas um wrapper em torno do código C, portanto não é tão útil;se você for usar uma biblioteca C empacotada, você também pode escrever um wrapper C# em vez de usar Python como camada intermediária.

Outras dicas

Estou adicionando isso agora porque essa foi a resposta principal quando pesquisei sobre esse tópico no Google.


HEC De acordo com a resposta abaixo, há OUTRA biblioteca Microsoft NetCDF disponível:

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

Conjunto de dados científicos Lite 1.4.0

Esta é uma biblioteca multiplataforma para manipulação de arquivos netCDF, CSV e TSV.


Como esta pergunta foi originalmente feita e respondida, a Microsoft lançou uma biblioteca Scientific DataSet que oferece suporte para NetCDF

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

Descrição do Projeto

A biblioteca SDS facilita aos desenvolvedores .Net a leitura, gravação e compartilhamento de escalares, vetores, matrizes e grades multidimensionais que são muito comuns na modelagem científica.Suporta CSV, NetCDF e outros formatos de arquivo

Os programas que usam a biblioteca armazenam dados relacionados e metadados associados em um pacote compacto e autodescritivo.As bibliotecas vêm com um conjunto de utilitários e pacotes:utilitário de linha de comando sds, aplicativo DataSet Viewer e um complemento para Microsoft Excel 2007 (e versões posteriores).Consulte a página de lançamento para obter detalhes.

E agora a Microsoft lançou uma biblioteca mais recente para netCDF, disponível via NuGet:

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

Conjunto de dados científicos Lite 1.4.0

Esta é uma biblioteca multiplataforma para manipulação de arquivos netCDF, CSV e TSV.

Em um projeto estamos usando a implementação ucar netcdf em c# usando ikvm.IKVM pode ser usado para 'converter' projetos Java em bibliotecas .Net sem usar Java VM.Não fiz nenhuma verificação de desempenho, mas é uma maneira simples de obter o netcdf em c# :).

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

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top