2008-09-12 190 views
3

我目前正在研究(或至少計劃)一些處理大量重複數據的項目。這種數據在電子表格或數據庫中運行良好,但在XML中令人討厭。 :)C#NetCDF Library

NetCDF似乎是一個很好的文件格式選項。但是,我的工作是使用C#,並沒有可用的「官方」NetCDF實施。有一個「官方」Python版本,我可能會用IronPython。另一種選擇是CodePlex上的「NetCDF Library for .NET」,但它看起來很安靜(http://www.codeplex.com/netcdf)。

有沒有人與這些庫中的任何一個一起工作?你能提供任何建議嗎?

+0

我沒有使用它,所以把它從它來。 CodePlex項目的主要開發人員(他不再工作)建議將[鏈接](http://sds.codeplex.com/)作爲替代方案。名稱的意思是** SDS:Scientific DataSet庫和工具**,並且包括NetCDF支持。它似乎有文檔,並且不在測試版中。正如我在2011-10-14撰寫的那樣,最近一次更新已超過一年(2010-07-18)。 – 2011-10-14 03:24:55

回答

7

首先,你確定NetCDF是正確的選擇嗎?如果您想與其他需要讀取大量數據並且已經支持NetCDF的程序進行交互,那麼這可能是一個不錯的選擇。沒有那麼多支持大型多維數組的標準和良好支持的文件格式。但是,如果你只是要從C#中讀取和寫入文件,它可能不是一個好的選擇。

我是「經典」NetCDF文件格式的忠實粉絲。它結構緊湊,非常簡單,但足夠靈活,可以支持大量常見的多維結構良好的數據。我花了一天的時間爲傳統的NetCDF編寫完整的解析器,並且只花了一個小時編寫一個程序來輸出經典NetCDF文件的格式良好的特例。你可以自己實現一個純粹的C#NetCDF庫,它不會有太大的麻煩。您只需實現您所需的功能即可輕鬆啓動。 Here's the specification.

不幸的是,NetCDF-4選擇使用HDF-5作爲其數據格式。它增加了很多複雜性,並且使用另一種語言編寫完整的NetCDF解析器變得更加困難。 HDF-5是非常通用的,在我看來,它是過度工程 - 它試圖讓太多的東西被太多的人所接受。我不建議直接使用它,除非你打算花費一個月的時間編寫單元測試。如果你必須使用C#中的netCDF-4/HDF-5,你唯一現實的選擇是使用SWIG或類似的東西來包裝C庫。

請注意,NetCDF for Python只是C代碼的一個包裝,所以它並不是那麼有用;如果你打算使用一個包裝的C庫,你可能只需編寫一個C#包裝器,而不是使用Python作爲中間層。

+3

+1除了SWIG以外,另一個選擇是使用PInvoke互操作助手。它是由.NET框架團隊編寫的。 http://clrinterop.codeplex.com/releases/view/14120 – MarkJ 2010-05-20 17:30:29

9

我現在加入這一點,因爲這是當我用Google搜索這個話題最多的回答。


ETA每下面的回覆,還有另外一個微軟的NetCDF庫現已:

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

科學數據集精簡版1.4.0

這是一個跨平臺用於處理netCDF,CSV和TSV文件的庫。


由於這個問題最初提出和回答,微軟已經發布了科學數據集庫具有用於創建NetCDF

支持

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

項目描述

的SDS庫使它便於.Net開發人員閱讀,編寫和分享在科學建模中非常常見的標量,向量,矩陣和多維網格。它支持CSV,NetCDF和其他文件格式。

在一個緊湊的自我描述包中使用庫存儲相關數據和關聯元數據的程序。 庫帶有一組實用程序和軟件包:sds命令行實用程序,DataSet Viewer應用程序和Microsoft Excel 2007(及更高版本)的加載項。詳情請參閱發佈頁面。