Frage

Zur Zeit arbeite ich an (oder zumindest Planung) ein paar Projekte, die mit großen Mengen von sich wiederholenden Daten arbeiten. Die Art der Daten, die auch in einer Tabellenkalkulation oder Datenbank funktioniert, aber ist böse in XML. :)

NetCDF scheint wie eine gute Option für ein Dateiformat. Allerdings ist meine Arbeit in C # und es gibt keine „offizielle“ NetCDF Implementierung zur Verfügung. Es gibt eine „offizielle“ Python-Version, die ich möglicherweise mit Ironpython nutzen könnte. Eine weitere Option ist die "NetCDF-Bibliothek für .NET" auf CodePlex, aber es scheint ziemlich ruhig ( http: //www.codeplex .com / netcdf ).

Hat mit einem dieser Bibliotheken jemand gearbeitet? Können Sie Empfehlungen zur Verfügung stellen?

War es hilfreich?

Lösung

Zuerst sind Sie sicher, dass NetCDF die richtige Wahl ist? Wenn Sie mit anderen Programmen zu interagieren möchten, die in großen Mengen von Daten lesen müssen und sie bereits NetCDF unterstützen, dann ist es wahrscheinlich eine gute Wahl. Es gibt nicht so viele Standards und gut unterstützte Dateiformate, die große mehrdimensionale Arrays unterstützen. Aber wenn Sie nur zu lesen und Schreiben von Dateien von C # gehen, es kann nicht so eine gute Wahl.

Ich bin ein großer Fan von dem „klassischen“ NetCDF-Dateiformat. Es ist kompakt und extrem einfach, aber flexibel genug, um viele gemeinsame Arten von mehrdimensionalen gut strukturierte Daten zu unterstützen. Es dauerte nur einen Tag einen vollständigen Parser für klassische NetCDF zu schreiben, und es dauerte nur eine Stunde ein Programm zur Ausgabedatei eines wohlgeformter Sonderfall einer klassischen NetCDF zu schreiben. Sie könnten eine reine C # NetCDF Bibliothek selbst implementieren und es würde nicht viel Mühe. Sie könnten leicht durch die Umsetzung nur die Funktionen starten Sie benötigen. Hier ist die Spezifikation.

Leider NetCDF-4 wählten HDF-5 als Datenformat zu verwenden. Es fügt eine Menge von Komplexität und macht es viel schwieriger, einen vollständigen NetCDF-Parser in einer anderen Sprache zu schreiben. HDF-5 ist sehr Allzweck- und meiner Meinung nach war es overengineered - es versucht, zu viele Dinge zu sein, die Menschen zu viel. Ich würde versuchen, mit ihm nicht empfehlen, direkt zu arbeiten, es sei denn, Sie planen, einen Monat schriftlich Unit-Tests zu verbringen. Wenn Sie netCDF-4 / HDF-5 aus C #, Ihre einzige realistische Option wäre, wickeln Sie die C-Bibliothek unter Verwendung von SWIG oder etwas ähnliches verwenden müssen.

Hinweis

, dass NetCDF für Python ist nur ein Wrapper um den C-Code, so dass es nicht wirklich alles, was nützlich; wenn Sie eine verpacktes C-Bibliothek verwenden werden können Sie auch nur einen C # Wrapper schreiben, anstatt verwenden Python als Mittelschicht.

Andere Tipps

Ich füge dies jetzt, da dies die Top-Antwort war, als ich über dieses Thema gegoogelt.


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

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

Scientific DataSet Lite 1.4.0

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


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

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

Projektbeschreibung

Die SDS-Bibliothek macht es einfach für .NET-Entwickler zu lesen, schreiben und mit anderen teilen Skalare, Vektoren, Matrizen und mehrdimensionalen Gitter, die in der wissenschaftlichen Modellierung sehr verbreitet sind. Es unterstützt CSV, NetCDF und anderes Dateiformat

Programme, die die Bibliothek speichern bezogenen Daten und zugehörige Metadaten in einem kompakten selbstbeschreibende Paket verwenden. Bibliotheken werden mit einer Reihe von Dienstprogrammen und Packages: sds Zeilen-Utility-Befehl, DataSet Viewer-Anwendung und ein Add-In für Microsoft Excel 2007 (und spätere Versionen). Lassen Sie Siehe Seite für Details.

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 eine Cross-Plattform-Bibliothek zur Manipulation von netCDF, CSV und TSV-Dateien.

In einem Projekt verwenden wir die ucar netcdf Implementierung in C # ikvm. IKVM kann für Java VM ohne Verwendung zu ‚konvertieren‘ Java-Projekte in .NET-Bibliotheken verwendet werden. Ich habe keine Leistungsprüfung gemacht, aber es ist ein einfacher Weg netcdf in c # zu erhalten:.)

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top