Pregunta

Actualmente estoy trabajando (o al menos planificando) un par de proyectos que trabajan con grandes cantidades de datos repetitivos.El tipo de datos que funcionan bien en una hoja de cálculo o base de datos, pero que son desagradables en XML.:)

NetCDF parece una gran opción para un formato de archivo.Sin embargo, mi trabajo está en C# y no hay una implementación NetCDF "oficial" disponible.Existe una versión "oficial" de Python que podría usar con IronPython.Otra opción es la "Biblioteca NetCDF para .Net" en CodePlex, pero parece bastante silenciosa (http://www.codeplex.com/netcdf).

¿Alguien ha trabajado con alguna de estas bibliotecas?¿Puedes darnos alguna recomendación?

¿Fue útil?

Solución

En primer lugar, ¿está seguro de que NetCDF es la elección correcta?Si desea interactuar con otros programas que necesitan leer grandes cantidades de datos y ya son compatibles con NetCDF, probablemente sea una excelente opción.No hay muchos formatos de archivos estándar y bien soportados que admitan grandes matrices multidimensionales.Pero si sólo va a leer y escribir archivos desde C#, puede que no sea una buena opción.

Soy un gran admirador del formato de archivo "clásico" NetCDF.Es compacto y extremadamente simple, pero lo suficientemente flexible como para admitir muchos tipos comunes de datos multidimensionales bien estructurados.Solo me tomó un día escribir un analizador completo para NetCDF clásico, y solo me tomó una hora escribir un programa para generar un caso especial bien formado de un archivo NetCDF clásico.Usted mismo podría implementar una biblioteca NetCDF de C# pura y no sería mucho problema.Podrías comenzar fácilmente implementando solo las funciones que necesitas. Aquí está la especificación.

Desafortunadamente, NetCDF-4 optó por utilizar HDF-5 como formato de datos.Agrega mucha complejidad y hace que sea mucho más difícil escribir un analizador NetCDF completo en otro idioma.HDF-5 es de uso muy general y, en mi opinión, fue diseñado en exceso: intenta ser demasiadas cosas para demasiadas personas.No recomendaría intentar trabajar con él directamente a menos que planee pasar un mes escribiendo pruebas unitarias.Si debe usar netCDF-4/HDF-5 de C#, su única opción realista sería empaquetar la biblioteca C usando SWIG o algo así.

Tenga en cuenta que NetCDF para Python es sólo un contenedor del código C, por lo que en realidad no es tan útil;Si va a utilizar una biblioteca C empaquetada, también puede escribir un contenedor C# en lugar de usar Python como capa intermedia.

Otros consejos

Estoy agregando esto ahora porque fue la respuesta principal cuando busqué en Google sobre este tema.


ETA Según la respuesta a continuación, ahora hay OTRA biblioteca Microsoft NetCDF disponible:

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

Conjunto de datos científicos Lite 1.4.0

Esta es una biblioteca multiplataforma para manipular archivos netCDF, CSV y TSV.


Dado que esta pregunta se formuló y respondió originalmente, Microsoft ha lanzado una biblioteca de conjuntos de datos científicos que admite NetCDF.

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

Descripción del Proyecto

La biblioteca SDS facilita a los desarrolladores .Net leer, escribir y compartir escalares, vectores, matrices y cuadrículas multidimensionales que son muy comunes en el modelado científico.Admite CSV, NetCDF y otros formatos de archivo

Los programas que utilizan la biblioteca almacenan datos relacionados y metadatos asociados en un paquete compacto de autodescripción.Las bibliotecas vienen con un conjunto de utilidades y paquetes:Utilidad de línea de comandos sds, aplicación DataSet Viewer y complemento para Microsoft Excel 2007 (y versiones posteriores).Consulte la página de lanzamiento para obtener más detalles.

Y ahora Microsoft ha lanzado una biblioteca más nueva para netCDF, disponible a través de NuGet:

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

Conjunto de datos científicos Lite 1.4.0

Esta es una biblioteca multiplataforma para manipular archivos netCDF, CSV y TSV.

En un proyecto estamos usando la implementación de ucar netcdf en c# usando ikvm.IKVM se puede utilizar para "convertir" proyectos Java en bibliotecas .Net sin necesidad de utilizar Java VM.No he realizado ninguna comprobación de rendimiento, pero es una forma sencilla de obtener netcdf en c# :).

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top