8

我目前正在(或至少计划)几个使用大量重复数据的项目。这种数据在电子表格或数据库中运行良好,但在 XML 中很糟糕。:)

NetCDF 似乎是文件格式的绝佳选择。但是,我的工作是用 C# 编写的,并且没有可用的“官方”NetCDF 实现。有一个“官方”Python 版本,我可能会与 IronPython 一起使用。另一种选择是 CodePlex 上的“.Net 的 NetCDF 库”,但它看起来很安静(http://www.codeplex.com/netcdf)。

有没有人使用过这些库中的任何一个?你能提供任何建议吗?

4

4 回答 4

12

我现在添加这个是因为这是我在谷歌上搜索这个主题时的最佳答案。


ETA根据下面的回复,现在有另一个 Microsoft 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(及更高版本)的加载项。有关详细信息,请参阅发布页面。

于 2014-09-02T04:00:44.870 回答
7

首先,您确定 NetCDF 是正确的选择吗?如果您想与其他需要读取大量数据并且已经支持 NetCDF 的程序进行交互,那么它可能是一个不错的选择。支持大型多维数组的标准文件格式并不多。但是,如果您只打算从 C# 中读取和写入文件,那么它可能不是一个好的选择。

我是“经典”NetCDF 文件格式的忠实粉丝。它紧凑且极其简单,但足够灵活,可以支持许多常见的多维结构良好的数据。我只花了一天时间就为经典 NetCDF 编写了一个完整的解析器,并且只花了一个小时编写了一个程序来输出经典 NetCDF 文件的格式良好的特例。您可以自己实现一个纯 C# NetCDF 库,不会有太大的麻烦。您可以轻松地从仅实现您需要的功能开始。 这是规范。

不幸的是,NetCDF-4 选择使用 HDF-5 作为其数据格式。它增加了很多复杂性,并使得用另一种语言编写完整的 NetCDF 解析器变得更加困难。HDF-5 是非常通用的,在我看来,它被过度设计了——它试图对太多人来说太多东西。我不建议尝试直接使用它,除非您打算花一个月的时间编写单元测试。如果你必须使用 C# 中的 netCDF-4 / HDF-5,你唯一现实的选择是使用 SWIG 或类似的东西来包装 C 库。

请注意,Python 的 NetCDF 只是 C 代码的一个包装器,所以它并不是真的很有帮助;如果你打算使用一个包装好的 C 库,你不妨只写一个 C# 包装器,而不是使用 Python 作为中间层。

于 2008-09-15T15:09:08.283 回答
4

现在微软发布了一个更新的 netCDF 库,可以通过 NuGet 获得:

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

科学数据集精简版 1.4.0

这是一个用于处理 netCDF、CSV 和 TSV 文件的跨平台库。

于 2016-08-24T21:13:35.300 回答
1

在一个项目中,我们使用 ikvm 在 c# 中使用 ucar netcdf 实现。IKVM 可用于将 java 项目“转换”为 .Net 库,而无需使用 java VM。我没有做任何性能检查,但这是在 c# 中获取 netcdf 的简单方法:)。

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

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

于 2009-05-13T19:21:28.550 回答