问题标签 [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 投票
1 回答
1255 浏览

r - 当我没有超级用户权限时在 R 上安装“ncdf”

我可以访问一台我没有超级用户权限的超级计算机。这台机器有 netcdf 版本 3 和 4 可用,但我不知道它是否有 R 安装所需的开发库ncdf。我通常用它来运行并行化的 R 代码。通常我可以将软件包安装到个人库中,效果很好。例如:

我需要这个ncdf包,但是我无法安装它,因为机器找不到一些ncdf依赖的netcdf库。这台机器有 netcdf 版本 3 和 4 可用,但我不知道它是否有 R 安装所需的开发库ncdf,也不知道如何检查。我正在努力争取截止日期,不幸的是管理员无法帮助我解决问题。

这是我尝试安装时发生的情况ncdf

...(切)

...(切)

有人知道我可以做些什么来使 R 能够找到所需的库吗?

另外,请注意,我更喜欢使用ncdfncdf4(为了与现有代码兼容)。但是,当我尝试安装时ncdf4,我收到以下错误消息,这可能具有指导意义:

显然系统找不到“nc-config”。(我自己找不到)。

任何关于我可以做什么,或者我可以要求超级用户为我做什么的建议,将不胜感激。

0 投票
1 回答
518 浏览

fedora - 如何在 Red Hat 6 中安装 netcdf-openmpi-devel

我需要在 Red Hat 6 上安装 netcdf-openmpi-devel。问题是我拥有的存储库没有提供这个:redhat 和 epel。我已经尝试下载几个fedora rpm,但是对于几乎所有的,都无法验证它们的密钥(执行rpm -K 包)。我能够为其中一个 rpm 获得一个密钥,但随后它表明我没有所需的依赖项,例如:

netcdf-openmpi,这就是我想要安装的。

还有另一种安装方法吗?

谢谢你的帮助!

0 投票
1 回答
198 浏览

r - 你将如何加快这段代码的速度?降低 netcdf 数据的分辨率,然后将其转换为 xyz 格式以进行统计

我正在获取玉米产量和收获面积的 netcdf,将分辨率从 2.5 弧分缩小到 0.5 度,然后将整个数据转换为 XYZ 格式,这样我就可以更轻松地与我的数据“对话”有这种格式。(我想我可以将其他数据转换为矩阵形式,但我喜欢 xyz。)

数据在这里

下面的代码定义了一些函数来计算收获面积和平均产量的总产量,然后它在查询 netcdf 时使用一些“馈线”数据,然后它使用 plyr 循环通过馈线,提取数据,应用函数,然后保存在 xyz 中。它可以工作,但只运行其中一个文件大约需要 30 分钟,而且我有 100 多个。任何有关优化此代码的方法的建议都会很棒。提取更大的数据块并将函数应用于它们会更​​快吗?就像,也许是地球的整个条纹?我怎么会先验地知道这是否会更快?

提前致谢。

0 投票
2 回答
205 浏览

windows - Windows 上 Perl 的 NetCDF

我正在帮助我们的一位学生在 Windows 7(64 位)上使用 NetCDF 文件进行一些数据访问。我们拥有首选语言 (Perl) 的绑定,但找不到预构建的 NetCDF 库二进制文件,或者找不到将它放在哪里以便 Perl 可执行文件可以找到它。有人有任何开始的面包屑吗?我们希望避免为此目的加载整个 Cygwin GCC 堆栈;实际上,我们需要的只是一个 DLL 和正确放置它的位置的知识。

TIA,

读写

0 投票
3 回答
1998 浏览

r - 批量读取netcdf文件并平均一个变量

我是新的 R 用户。我现在有 1979 年的每日 netcdf 数据,例如:
sm19790101.1.nc
sm19790102.1.nc

.
.
sm19791231.1.nc

我需要将一个名为“sm”的变量平均到每月分辨率。我现在可以这样做:

将所有 1 月数据移植到 jan,但我不知道如何打开每个文件并获取特定变量(我已经安装了 Rnetcdf 包)。如果我要手动执行此操作,则应该是:

然后平均它们...

我想问题是如何读取带有变量(例如 01-31)的文件作为文件名的一部分,然后循环整个月。

0 投票
2 回答
354 浏览

c++ - 使用主要是 NaN 创建 NetCDF 文件

我正在创建一个主要包含 NaN 值的 NetCDF 文件。有没有办法可以指定它被压缩而不是占用大量磁盘空间?我正在使用 University Corporation for Atmospheric Research C++ NetCDF 库。

谢谢!

0 投票
3 回答
3160 浏览

python - 使用 NetCDF 文件中的数据加载 PostgreSQL 数据库

我有一个包含八个变量的 netCDF 文件。(对不起,不能分享实际文件)每个变量都有两个维度,时间和站点。时间大约是 14 步,车站目前有 38000 个不同的 id。因此,对于 38000 个不同的“位置”(实际上只是一个 id),我们有 8 个变量和 14 个不同的时间。

需要将此数据加载到 PostGres 数据库中,以便将数据连接到与 station_name 匹配的某些几何图形,以便以后进行可视化。

目前我已经在 Python 中使用 netCDF4 模块完成了这项工作。工作,但它需要永远!现在我像这样循环:

这需要在我的机器上运行几分钟,我觉得它可以以更聪明的方式完成。

任何人都知道如何以更智能的方式完成此操作?最好在 Python 中。

0 投票
2 回答
1249 浏览

java - 使用 NetCDF Java 库读取 HDF5 数据集

我们在 HDF5 中获得了一些文件,其中包含数据集、表格数据,其中每一列都被命名并且可能是不同的数据类型(例如字符串类型的“作者”、无符号整数类型的“计数”等)我能找到的用于阅读 HDF5 的唯一纯 Java(即非 JNI)库是 NetCDF。

看来我可以使用 NetCDF 从 HDF5 数据集中读取单列数据Variable。但是有没有办法从数据集中读取整个数据表?NetCDF 的 HDF5 数据集是否仅仅是具有单维数组值的变量集合而不是表?

编辑:让我进一步解释。如果我在 HDFView 2.9 中打开一个 HDF5 文件,导航到“HDF5 复合数据集”项,然后选择“打开”,就会出现一个漂亮的小表格,其中“变量”显示为列标题,每一行都是由索引标记。例如,假设有一个整数 32 符号类型的“Foo”列和一个字符串类型的“Bar”列。

但是用于从这个“复合数据集”加载数据的 NetCDF API 似乎根本不像表格数据。我可以要求加载名为“Foo”的整个“变量”数组,并且“变量”似乎独立于“Bar”变量。这是否意味着“Foo”和“Bar”变量可以是不同长度的数组?

在表格中,我希望能够逐行访问事物。我可以说“给我一个包含第 5 行所有值的数组吗?” 好的,所以原始值和装箱等存在问题,但我可以要求返回整行的底层字节吗?我可以说“给我'Foo'列中第5行的值作为整数”吗?也许你说我真正想要请求的是“Foo”数组中的元素 5。所以我回到我原来的问题:问题 1.数据集的 NetCDF API 是否仅访问一组完全不相关的变量(可能具有单独的数组长度等),或者是否有一些 API 允许访问这个数据作为一个真实的表?

如果您仍然不了解表格视图和变量列表之间的区别,请考虑以下相关问题:问题 2.如何找到数据集表中的行数?我是否被迫迭代数据集中的所有变量并找到每个数组长度的最大值?

由于我正在查找变量的数组长度,这又带来了另一个问题:问题 3。如何在不读取整个数组的情况下找到数据集中变量的长度?如果我使用netCDFFile.findVariable("/some/path/dataset.variable").getSize(),这只是返回值1。直到我真正读取了整个数组(可能是很多兆字节!)netCDFVariable.read().getSize(),我才得到正确的长度!没有更有效的方法吗?

答案:答案原来是对John Caron 答案的详细阐述。由于某种原因,每个变量(列)都认为它是可变长度的,即使它的父结构(数据集/表)是固定长度的。要以更表格的方式处理一组变量,请获取对父级Structure(本身 a Variable)的引用,并询问其大小。该Structure.getSize()值将正确指示每个变量的长度——即使每个变量Variable.getSize()都会返回1

0 投票
0 回答
551 浏览

python - 平均多个numpy数组时的总和不正确

我正在尝试从多个 numpy 数组中创建元素的平均值并对其进行数组。将两个数组加在一起(使用numpy.add()或通过广播a1 + a2)时,生成的总和似乎不正确。

代码

输出(目录中有两个数据文件)

我希望对于第一个文件,第一个数组的总和和运行总和应该相同。两个数据集中都没有负值,那怎么可能呢?

更新 1: 在尝试之后vals = np.copy(dataset.variables["vals"]),它似乎已将缺失值传输为-999,而其他初始化数组的方法并未发生这种情况。但是,它仍然产生不正确的总和:

更新 2: Soooo ......当 netCDF 数据集中缺少值时,它似乎会netCDF4自动创建一个掩码的 numpy 数组。执行 a 时np.zeros_like(),将复制掩码值。这意味着我从我的第一个数据文件创建的零数组,尽管它具有相同数量的元素,但会使用该文件缺少数据的掩码创建。当掩码数组加在一起时,它们的掩码也会加在一起,这将给出不同的总和。

现在的问题是,

您如何有效地为给定的文件/日期范围创建累积掩码,而无需处理两次初始化所有数据?

0 投票
1 回答
242 浏览

xml - 远程 3D 和 4D 变量的 NcML 聚合?

NcML 可以用于聚合 3D 和 4D 网格吗?我不确定,因为它们的维度数量不同。例如海面高度 (ssh) 和水温,其中 ssh 有三个维度 [time, lat, lon] 而 temp 有四个维度 [time, depth, lat, lon]?我的测试没有成功,所以我的直觉是我必须将 3D 和 4D 变量分成单独的目录。但我希望其他人可能有其他建议?

虽然我尝试在下面的代码段中使用“联合”聚合,但由于 3D 变量从 2008 年 12 月 28 日开始,而 4D 变量从 2008 年 5 月 8 日开始,因此没有正确映射时间维度:

然后我在“时间”维度上尝试了“joinExisting”聚合,但这仅在数据集每个包含相同变量(它们不包含)时才有效。根据我在聚合中首先列出的数据集,以下示例中会排除 3D 或 4D 变量:

那么,有没有办法聚合这些数据集呢?我必须将 3D 和 4D 变量分开吗?

谢谢!John Maurer 太平洋岛屿海洋观测系统 (PacIOOS) 夏威夷大学马诺阿分校