我目前正在(或至少计划)几个使用大量重复数据的项目。在电子表格或数据库中运行良好但在XML中令人讨厌的数据类型。 :)
NetCDF似乎是文件格式的绝佳选择。但是,我的工作是在C#中进行的,没有可用的“官方” NetCDF实现。我有可能与IronPython一起使用“官方” Python版本。另一个选项是CodePlex上的“用于.Net的NetCDF库”,但它似乎很安静(http://www.codeplex.com/netcdf)。
有没有人使用这些库中的任何一个?您能提供任何建议吗?
最佳答案
首先,您确定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库。
请注意,用于Python的NetCDF只是C代码的包装,因此,它并不是真的那么有用。如果要使用包装的C库,则最好只编写一个C#包装程序,而不要使用Python作为中间层。
关于.net - C#NetCDF库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60039/