问题标签 [netcdf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
24453 浏览

hdf5 - 对 NetCDF 与 HDF5 存储科学数据的看法?

那里的任何人都有足够的使用 NetCDF 和 HDF5 的经验来提供一些关于它们作为存储科学数据的方式的优点/缺点?

我使用过 HDF5 并且想通过 Java 读/写,但该接口本质上是 C 库的包装器,我发现这很令人困惑,所以 NetCDF 看起来很有趣,但我对此几乎一无所知。

编辑:我的应用程序“仅”用于数据记录,因此我得到一个具有自描述格式的文件。对我来说重要的功能是能够添加任意元数据,具有快速写入访问以附加到字节数组,并具有单写入器/多读取器并发(强烈推荐但不是必须的。NetCDF 文档说他们有 SWMR 但不要'不要说他们是否支持任何机制来确保两个作者不能同时打开同一个文件并导致灾难性的结果)。我喜欢 HDF5 的层次结构方面(特别是我喜欢有向无环图层次结构,比“常规”文件系统类层次结构更灵活),现在正在阅读 NetCDF 文档......如果它只允许每个数据集文件,那么它可能对我不起作用。:(

更新— 看起来NetCDF-Java从 netCDF-4 文件读取,但只从不支持分层组的 netCDF-3 文件写入。该死。

2009 年 7 月 14 日更新:我开始对 Java 中的 HDF5 感到非常不安。可用的库不是很好,它有一些与 Java 的抽象层(复合数据类型)有关的主要绊脚石。C 的一个很好的文件格式,但看起来我只是输了。>:(

0 投票
1 回答
1277 浏览

python - 多维列表(数组)重新分配问题

美好的一天编码员和编码员,

我正在编写一段代码,它通过一堆统计数据并返回我从中询问的内容。为了完成其任务,该方法从一个多维数组中读取并写入另一个数组。给我带来问题的代码是:

两个切片的大小都是,27:1:6:1但会引发异常:

我大吃一惊。

谢谢你。

0 投票
2 回答
1348 浏览

fortran - 在 Windows PGI Visual Fortran 上链接 netcdf.lib 的问题

我在(Windows 操作系统)中使用 PGI Visual Fortran 构建一个由 fortran(f90)库和可执行文件组成的项目/解决方案。f90 库链接到 netcdf.lib。f90 可以编译和构建,但是当我尝试将其链接到可执行文件时,出现以下错误:

正在编译项目...
链接...
错误 LNK2019:函数 interpnwptools_checkcldliq_ 中引用的未解析的外部符号 nf_ _inq_varid_错误
LNK2001:未解析的外部符号 nf__inq 可变 错误 LNK2019:函数错误 错误中引用的未解析的外部符号 nf_strerror_ LNK2019:未解析的外部符号 nf_get_att_函数 错误 LNK2001中引用的 real_:未解析的外部符号 nf_get_att_real_ 错误 LNK2019:函数 ncdf_module_openfile_ 中引用的未解析的外部符号 nf_create_ 错误 LNK2019:函数 ncdf_module_openfile_ 中引用的 未解析的外部符号 nf_def_dim_ 。 .







.
和一大堆其他 nf_ 未解析的符号。我认为 netcdf 库没有正确链接。任何人都可以帮忙吗?我正在使用的项目需要 netcdf 3.6.0-p1,这是我使用 MS VStudio 2003 自己构建的。我也尝试使用 gfortran 和 eclipse 构建项目,但存在相同的链接问题。我以前从未使用过 netcdf 或 fortran ......有什么建议吗?

0 投票
2 回答
6735 浏览

compiler-construction - 我怎样才能知道我使用了哪个编译器

我已经安装了 NetCDF“binary-netcdf-4.0.1_gfortran_gfortran_c++.tar”。但我不确定我使用的 gfortran 编译器。如何找到我使用的编译器?

0 投票
1 回答
1140 浏览

python - 在 numpy 数组中扩展一系列不均匀的 netcdf 数据

我是 python 新手,如果已经问过这个问题,我深表歉意。

使用 python 和 numpy,我试图通过迭代调用将许多 netcdf 文件中的数据收集到一个数组中append()

天真地,我正在尝试做这样的事情:

我知道在正常情况下这是一个坏主意,因为它会在每次append()调用时重新分配新内存。但是有两件事不鼓励对 x 进行预分配:

1) 文件沿轴 0 的大小不一定相同(但沿后续轴的大小应相同),因此我需要事先从每个文件中读取数组大小以预先计算 x 的最终大小。

然而...

2)据我所知,pupynere(和其他 netcdf 模块)在打开文件时将整个文件加载到内存中,而不仅仅是一个引用(例如其他环境中的许多 netcdf 模块)。所以要预先分配,我必须打开文件两次。

据我所知,有许多 (>100) 大 (>1GB) 文件,因此过度分配和重塑是不切实际的。

我的第一个问题是我是否错过了一些预分配的智能方法。

我的第二个问题更严重。上面的代码片段适用于一维数组。但是如果我尝试加载一个矩阵,那么初始化就会成为一个问题。我可以将一维数组附加到一个空数组:

但我不能将空数组附加到矩阵:

我相信像 x.extend(xFragment) 这样的东西会起作用,但我认为 numpy 数组没有这个功能。我也可以通过将第一个文件视为特殊情况来避免初始化问题,但如果有更好的方法,我更愿意避免这种情况。

如果有人可以提供帮助或建议,或者可以发现我的方法存在问题,那么我将不胜感激。谢谢

0 投票
5 回答
6620 浏览

r - 使用 R 打开 grib 文件

我正在使用 R 处理气象数据。我分两步进行:

  1. 使用 ncar 命令语言中的命令行函数 ncl_convert2nc 将 grib 转换为 netcdf
  2. 在 R 中使用包 ncdf 导入 netcdf 数据。

我还有一个问题:

2- 对于某些特定的 grib 文件,使用 ncar 工具进行的转换不起作用。是否有其他方法或技巧(除了转录为 netcdf)来读取 R 中的 grib 文件

Dirk 回答的问题: 1- 我想在 R 中自动处理许多文件。我可以在 R 中调用 ncl_convert2nc 吗?(由下面的 Dirk Eddelbuettel 回答)

0 投票
1 回答
4773 浏览

python - 颜色栏中的奇怪范围值,matplotlib

我是 python 和 matplotlib 的新用户,这可能是一个简单的问题,但我在互联网上搜索了几个小时,但找不到解决方案。

我正在绘制 NetCDF 格式的降水数据。我觉得奇怪的是,数据中没有任何负值。(我检查了很多次,只是为了确保)。但是颜色栏中的值以负值开头(如 -0.0000312 等)。这没有任何意义,因为我不对数据进行任何操作,只是从大文件中选择一部分数据并绘制它。

所以我的代码对它没有多大影响。这是代码:

我为该代码得到的输出是一个漂亮的图,颜色条从值 -0.00001893 开始,其余的都是正值,我相信是正确的。它只是困扰我的最小值。

我想知道:

  1. 我的代码有什么问题吗?因为我知道数据是正确的。
  2. 有没有办法手动将值更改为 0?
  3. 每次我们运行代码时颜色栏中的值是否正确,因为相同的数据,下次我运行代码时,值会像这样“-0.00001893、2.00000000、4.00000000、6.00000000等”
  4. 我想将它们自定义为“0.0、2.0、4.0、6.0 等”

谢谢,韦舒

0 投票
2 回答
1952 浏览

c - C中的动态连续3D数组

我正在尝试在 C 代码中实现动态分配的连续 3D 数组。数组必须是连续的,因为我依赖于数组的 netCDF 输出。现在我改编了一个在这里发布的解决方案Stack OverFlow Solution。这对于动态分配数组和索引它们很有效……但是,当 netCDF 输出它们时,会有一个偏移量,它似乎可以缩放为第二个索引大小(jcount)。这是修改后的功能:

如果我正确理解这个函数,iret 会为组成 iret(第一个索引)的 3D 指针、组成 jret(第二个索引)的 2D 指针和组成 kret 的实际值分配空间。二维 jret 指针随后与 iret 的二维数组部分相关联。然后对 kret 进行同样的操作。然后 iret 的每个地址都指向 jret 的每个部分的第一个值。然后jret的每个地址都指向kret的首地址。

作为记录,一切正常,预处理器为我的数组定义的值。此外,如果我在代码中使用一些 printf 语句来检查数组的数字,它们似乎都正确索引并且代码运行正确,那么输出似乎是数组的非连续内存存储的结果。

我有一个形式的结构:

然后我分配使用

这可能是 netCDF 的问题......但我只想知道我的分配例程不是问题。

0 投票
4 回答
3418 浏览

python - python mmap.error:打开的文件太多。怎么了?

我正在使用pupynere接口(linux)读取一堆netcdf文件。以下代码导致 mmap 错误:

错误:

有趣的是,如果我评论其中一个append命令(任何一条都可以!)它会起作用!我究竟做错了什么?我正在关闭文件,对吧?这在某种程度上与 python 列表有关。我之前使用了一种不同的、低效的方法(总是复制每个元素)。

PS:ulimit -n产生 1024,程序在文件号 498 处失败。

可能与,但解决方案对我不起作用:NumPy and memmap: [Errno 24] Too many open files

0 投票
1 回答
759 浏览

r - R 与 RNetCDF 的结果不一致 - 为什么?

我无法使用 RNetCDF 从 NetCDF 数据文件中提取数据。每个数据文件都有 3 个维度(经度、纬度和日期)和 3 个变量(纬度、经度和气候变量)。有四个数据集,每个数据集都有不同的气候变量。

为了清楚起见,这里是 print.nc(p8m.tmax) 的一些输出。除了特定的气候变量外,其他数据集是相同的。

当我使用 RNetCDF 包中的 var.get.nc 函数时,我遇到了我不理解的行为。

例如,当我尝试从最高温度数据 (p8m.tmax <- open.nc(tmaxdataset.nc)) 中提取从 stval 开始的 82 个值时

(其中 lon_val 和 lat_val 指定数据集中我感兴趣的坐标的位置,stval 是 stval 设置为 which(time_vec==200201),在本例中等于 1285。)我得到错误:无效参数

但是在成功提取80和81值之后

82的命令有效:

同样的问题出现在结构相同的 tmin 文件中,但在 36 而不是 82:

产生错误:无效的参数

但是在重复计数 30、31 等之后

作品。

这些示例使函数看起来在最后一次计数时失败了,但实际上并非如此。在第一个示例中,var.get.nc 在我要求输入 84 个值后给出了错误:无效参数。然后,我通过改变数据集中的起点并一次只要求 1 个值,将失败次数缩小到第 82 次。出现问题的具体数字也各不相同。我可以关闭并重新打开数据集,让问题出现在不同的位置。

在上面的特定示例中,lon_val 和 lat_val 分别是 1595 和 1751,用于识别数据集中沿 lat 和 lon 维度的位置,用于我感兴趣的纬度和经度。第 1595 个纬度和第 1751 个经度不是问题,然而。我尝试过的所有其他纬度和经度都会出现问题。

沿气候变量维度 (stval) 改变数据集中的起始位置和/或将其指定为不同的(作为命令中的数字而不是对象 stval)也不能解决问题。

这个问题并不总是发生。我可以连续运行 3 次相同的代码(清除运行之间的所有对象)并且每次都得到不同的结果。第一次运行可能会在我试图获得的第 7 个条目时窒息,第二次可能会正常工作,第三次运行可能会在第 83 个条目时窒息。我对这种不一致的行为感到非常困惑。

open.nc 函数也开始失败,出现相同的错误:无效参数。与 var.get.nc 问题一样,它也不一致地发生。

有谁知道是什么导致最初无法提取变量?以及如何防止它?可能与数据文件的大小(每个约 60GB)和/或我通过网络驱动器访问它们的事实有关?

这也被问到这里: https ://stat.ethz.ch/pipermail/r-help/2011-June/281233.html