2008-09-12 4 views
3

Ich arbeite gerade an (oder zumindest plane) ein paar Projekte, die mit großen Mengen sich wiederholender Daten arbeiten. Die Art von Daten, die in einer Kalkulationstabelle oder Datenbank gut funktioniert, aber in XML unangenehm ist. :)C# NetCDF Bibliothek

NetCDF scheint eine gute Option für ein Dateiformat zu sein. Meine Arbeit ist jedoch in C# und es gibt keine "offizielle" NetCDF-Implementierung. Es gibt eine "offizielle" Python-Version, die ich möglicherweise mit IronPython verwenden könnte. Eine andere Option ist die "NetCDF-Bibliothek für .Net" auf CodePlex, aber es scheint ziemlich ruhig (http://www.codeplex.com/netcdf).

Hat jemand mit einer dieser Bibliotheken gearbeitet? Kannst du irgendwelche Empfehlungen geben?

+0

Ich habe das nicht verwenden, also nimm es von wo es kommt. Der Hauptentwickler des CodePlex-Projekts (an dem er nicht mehr arbeitet) schlägt [link] (http://sds.codeplex.com/) als Alternative vor. Der Name bedeutet ** SDS: Scientific DataSet-Bibliothek und -Tools ** und schließt NetCDF-Unterstützung ein. Es scheint Dokumentation zu haben und ist nicht in der Betaversion. Während ich dieses 2011-10-14 schreibe, ist das letzte Update über ein Jahr alt (2010-07-18) jedoch. –

Antwort

7

Erstens, sind Sie sicher, dass NetCDF die richtige Wahl ist? Wenn Sie mit anderen Programmen interagieren möchten, die große Datenmengen einlesen müssen und NetCDF bereits unterstützen, ist dies wahrscheinlich eine gute Wahl. Es gibt nicht viele standardisierte und gut unterstützte Dateiformate, die große mehrdimensionale Arrays unterstützen. Wenn Sie jedoch nur Dateien aus C# lesen und schreiben, ist dies möglicherweise keine gute Wahl.

Ich bin ein großer Fan des "klassischen" NetCDF-Dateiformats. Es ist kompakt und extrem einfach, aber flexibel genug, um viele gängige Arten von mehrdimensionalen, gut strukturierten Daten zu unterstützen. Ich brauchte nur einen Tag, um einen kompletten Parser für die klassische NetCDF zu schreiben, und es dauerte nur eine Stunde, um ein Programm zu schreiben, das einen wohlgeformten Spezialfall einer klassischen NetCDF-Datei ausgab. Sie könnten eine reine C# NetCDF-Bibliothek selbst implementieren und es wäre nicht viel Mühe. Sie könnten einfach damit beginnen, nur die Funktionen zu implementieren, die Sie benötigen. Here's the specification.

Leider hat NetCDF-4 gewählt, HDF-5 als sein Datenformat zu verwenden. Es fügt eine Menge Komplexität hinzu und macht es viel schwieriger, einen vollständigen NetCDF-Parser in einer anderen Sprache zu schreiben. HDF-5 ist sehr allgemein und meiner Meinung nach war es überentwickelt - es versucht, zu viele Dinge zu viele Menschen zu sein. Ich würde nicht empfehlen, direkt damit zu arbeiten, es sei denn, Sie planen, einen Monat lang Testeinheiten zu schreiben. Wenn Sie netCDF-4/HDF-5 von C# verwenden müssen, wäre Ihre einzige realistische Option, die C-Bibliothek mit SWIG oder ähnlichem zu umhüllen.

Beachten Sie, dass NetCDF für Python nur ein Wrapper um den C-Code ist, also ist es nicht wirklich hilfreich; Wenn Sie eine umschlossene C-Bibliothek verwenden, können Sie auch einfach einen C# -Wrapper schreiben, anstatt Python als mittlere Ebene zu verwenden.

+3

+1 Eine weitere Option neben SWIG wäre die Verwendung des PInvoke Interop-Assistenten. Es wurde vom .NET-Framework-Team geschrieben. http://clrinterop.codeplex.com/releases/view/14120 – MarkJ

9

ich bin, diese jetzt, weil dies die Top-Antwort war, als ich über dieses Thema gegoogelt.


ETA Pro die Antwort unten gibt es eine weitere Microsoft NetCDF Bibliothek jetzt verfügbar:

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

Scientific DataSet Lite 1.4.0

Dies ist ein Cross-Plattform Bibliothek zur Manipulation von NetCDF-, CSV- und TSV-Dateien.


Da diese Frage ursprünglich gefragt wurde und antwortete Microsoft eine wissenschaftliche DataSet-Bibliothek veröffentlicht hat, die hat die Unterstützung für NetCDF

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

Projektbeschreibung

Die Bibliothek SDS macht es Einfach für .NET-Entwickler zum Lesen, Schreiben und Teilen von Skalaren, Vektoren, Matrizen und multidimensionalen Gittern, die in der wissenschaftlichen Modellierung sehr häufig vorkommen. Es unterstützt CSV-, NetCDF- und andere Dateiformate

Programme, die die Bibliotheksdaten und zugehörigen Metadaten in einem kompakten, selbstbeschreibenden Paket verwenden. Bibliotheken enthalten eine Reihe von Dienstprogrammen und Paketen: das Befehlszeilenprogramm sds, die Anwendung DataSet Viewer und ein Add-In für Microsoft Excel 2007 (und spätere Versionen). Siehe Release-Seite für Details.

2

Und jetzt hat Microsoft eine neuere Bibliothek für netCDF, erhältlich über NuGet Freigabe:

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

Scientific DataSet Lite 1.4.0

Dies ist ein Cross-Plattform-Bibliothek zur Manipulation von netCDF, CSV- und TSV-Dateien.