Question

Je travaille actuellement sur (ou du moins je planifie) quelques projets qui fonctionnent avec de grandes quantités de données répétitives.Le type de données qui fonctionnent bien dans une feuille de calcul ou une base de données, mais qui sont désagréables en XML.:)

NetCDF semble être une excellente option pour un format de fichier.Cependant, mon travail est en C# et il n’existe pas d’implémentation NetCDF « officielle » disponible.Il existe une version "officielle" de Python que je pourrais potentiellement utiliser avec IronPython.Une autre option est la "Bibliothèque NetCDF pour .Net" sur CodePlex mais elle semble assez silencieuse (http://www.codeplex.com/netcdf).

Quelqu'un a-t-il travaillé avec l'une ou l'autre de ces bibliothèques ?Pouvez-vous fournir des recommandations?

Était-ce utile?

La solution

Tout d’abord, êtes-vous sûr que NetCDF est le bon choix ?Si vous souhaitez interagir avec d'autres programmes qui ont besoin de lire de grandes quantités de données et qui prennent déjà en charge NetCDF, alors c'est probablement un excellent choix.Il n'existe pas beaucoup de formats de fichiers standard et bien pris en charge prenant en charge de grands tableaux multidimensionnels.Mais si vous comptez uniquement lire et écrire des fichiers à partir de C#, ce n'est peut-être pas un si bon choix.

Je suis un grand fan du format de fichier NetCDF "classique".Il est compact et extrêmement simple, mais suffisamment flexible pour prendre en charge de nombreux types courants de données multidimensionnelles bien structurées.Il ne m'a fallu qu'une journée pour écrire un analyseur complet pour NetCDF classique, et il ne m'a fallu qu'une heure pour écrire un programme permettant de générer un cas particulier bien formé d'un fichier NetCDF classique.Vous pouvez implémenter vous-même une bibliothèque NetCDF pure C# et cela ne poserait pas trop de problèmes.Vous pouvez facilement commencer par implémenter uniquement les fonctionnalités dont vous avez besoin. Voici le cahier des charges.

Malheureusement, NetCDF-4 a choisi d'utiliser HDF-5 comme format de données.Cela ajoute beaucoup de complexité et rend beaucoup plus difficile l'écriture d'un analyseur NetCDF complet dans un autre langage.Le HDF-5 est très polyvalent et à mon avis, il a été sur-conçu – il essaie d'être trop de choses pour trop de gens.Je ne recommanderais pas d'essayer de travailler directement avec, sauf si vous prévoyez de passer un mois à écrire des tests unitaires.Si vous devez utiliser netCDF-4/HDF-5 à partir de C#, votre seule option réaliste serait d'encapsuler la bibliothèque C à l'aide de SWIG ou quelque chose comme ça.

Notez que NetCDF pour Python n'est qu'un wrapper autour du code C, donc ce n'est pas vraiment utile ;si vous envisagez d'utiliser une bibliothèque C encapsulée, vous pouvez tout aussi bien écrire un wrapper C# plutôt que d'utiliser Python comme couche intermédiaire.

Autres conseils

J'ajoute ceci maintenant parce que c'était la principale réponse lorsque j'ai recherché ce sujet sur Google.


ETA Selon la réponse ci-dessous, une AUTRE bibliothèque Microsoft NetCDF est désormais disponible :

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

Ensemble de données scientifiques Lite 1.4.0

Il s'agit d'une bibliothèque multiplateforme permettant de manipuler les fichiers netCDF, CSV et TSV.


Depuis que cette question a été initialement posée et répondue, Microsoft a publié une bibliothèque de jeux de données scientifiques prenant en charge NetCDF.

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

Description du projet

La bibliothèque SDS permet aux développeurs .Net de lire, d'écrire et de partager facilement des scalaires, des vecteurs, des matrices et des grilles multidimensionnelles très courantes dans la modélisation scientifique.Il prend en charge CSV, NetCDF et autres formats de fichiers

Les programmes qui utilisent la bibliothèque stockent les données associées et les métadonnées associées dans un package compact et auto-descriptif.Les bibliothèques sont livrées avec un ensemble d'utilitaires et de packages :Utilitaire de ligne de commande sds, application DataSet Viewer et complément pour Microsoft Excel 2007 (et versions ultérieures).Voir la page Version pour plus de détails.

Et maintenant, Microsoft a publié une nouvelle bibliothèque pour netCDF, disponible via NuGet :

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

Ensemble de données scientifiques Lite 1.4.0

Il s'agit d'une bibliothèque multiplateforme permettant de manipuler les fichiers netCDF, CSV et TSV.

Dans un projet, nous utilisons l'implémentation ucar netcdf en c# en utilisant ikvm.IKVM peut être utilisé pour « convertir » des projets Java en bibliothèques .Net sans utiliser Java VM.Je n'ai effectué aucune vérification des performances mais c'est un moyen simple d'obtenir netcdf en c# :).

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top