问题标签 [netcdf4]

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 回答
1000 浏览

python - h5py 不遵守分块规范?

问题:我有现有的 netCDF4 文件(大约 5000 个),(通常形状为 96x3712x3712)数据点(float32)。这些文件的第一个维度是时间(每天 1 个文件),第二个和第三个空间维度。目前,在第一个维度上进行切片(甚至是部分切片)将花费大量时间,原因如下:

  • netCDF 文件以 1x3712x3712 的块大小进行分块。在时间维度上切片基本上会读取整个文件。
  • 在所有较小的文件上循环(即使在多个进程中)也将花费大量时间。

我的目标:

  • 创建每月文件(约 2900x3712x3712)数据点
  • 优化它们以在时间维度上切片(块大小为 2900x1x1 或在空间维度上稍大)

其他需求:

  • 文件应可附加单个时间戳 (1x3712x3712),此更新过程应少于 15 分钟
  • 查询应该足够快:在不到一秒的时间内完成一个完整的切片(即 2900x1x1)==> 实际上没有那么多数据......
  • 最好在更新时文件应该可以被多个进程读取以供读取
  • 处理历史数据(其他 5000 个每日文件)最好在几周内完成。

我已经尝试了多种方法:

  • 连接netcdf文件并重新分块==>占用太多内存和太多时间......
  • 将它们从 pandas 写入 hdf 文件(使用 pytables)==> 创建一个具有巨大索引的宽表。这最终也会花费太多时间来读取,并且由于元数据限制,需要将数据集平铺在空间维度上。
  • 我的最后一种方法是使用 h5py 将它们写入 hdf5 文件:

这是创建单个月度文件的代码:

我正在使用 HDF5 的最新版本来获得 SWMR 选项。fps 参数是日常 netCDF4 文件的文件路径列表。它在大约 2 小时内创建文件(在 ssd 上,但我发现创建文件主要受 CPU 限制),这是可以接受的。

我设置了压缩以将文件大小保持在限制范围内。我在没有的情况下进行了较早的测试,发现没有情况下的创建速度要快一些,但是压缩时切片所需的时间不会太长。H5py 自动将数据集分块为 1x116x116 块。

现在的问题是:在具有 RAID 6 设置的 NAS 上进行切片,需要大约 20 秒来切片时间维度,即使它位于单个块中......

我想,即使它在文件中的单个块中,因为我在一个循环中编写了所有值,它必须以某种方式分段(虽然不知道这个过程是如何工作的)。这就是为什么我尝试使用 HDF5 的 CML 工具将 h5repack 放入一个新文件中,使用相同的块但希望重新排序值,以便查询能够以更顺序的顺序读取值,但没有运气。尽管这个过程运行了 6 小时,但它对查询速度没有任何影响。

如果我的计算正确,读取一个块(2976x32x32)只有几 MB 大(11MB 未压缩,我认为仅比 1MB 多一点压缩)。这怎么可能需要这么长时间?我究竟做错了什么?如果有人可以了解幕后实际发生的事情,我会很高兴...

0 投票
0 回答
567 浏览

r - 使用 R 下载 NetCDF 文件

我是R的初学者。

我正在尝试从 NASA 子集向导 ( https://disc.gsfc.nasa.gov/SSW/#keywords=TRMM_3B42RT_Daily )下载 NetCDF4 文件- 就我而言,我正在寻找南非的 TRMM 3B42 降水数据。我将需要下载数千个数据集并在 R 中以栅格格式使用它们,因此希望使用子集向导提供的 URL。例如:

我努力了

在这里,我收到一条错误消息“无法打开 URL”和其他以“HTTP 状态为 '401 未授权'”结尾的警告消息。

这使我怀疑浏览器需要一些登录详细信息。在 Chrome 中,URL 按原样工作。在 Internet Explorer(R 的默认设置)中,我输入了我的用户名和密码一次,然后 - URL 也照常工作。

但是,R 函数没有成功。错误仍然存​​在。我曾尝试使用其他 R 包和功能 - 但是,这是我第一次尝试这样的事情,我还没有看到光明。例如,大多数RCurl函数会在 URL 中发现非法字符。

有没有人在处理这些特定文件方面有更多经验?

最好的问候马里恩

0 投票
1 回答
441 浏览

installation - 安装 HDf4 转换工具不起作用

我是新来的,也是从源代码安装软件。

我想安装http://www.hdfeos.org/software/h4cflib.php来转换 hdf --> netcdf 文件。

外部要求是 HDF4 HDF-EOS2 库。

所以我第一次检查

因此,我假设在没有安装 netcdf 的情况下安装了 libhdf4(请参阅 eos 说明中的提示:HDF4 库必须配置有“--disable-netcdf”选项。)

对于 hdf-eos,第二名没有以同样的方式发现。所以尝试安装这个,来自: https://newsroom.gsfc.nasa.gov/sdptoolkit/TKDownload.html --> hdfeos --> latest_release --> HDF-EOS2.19v1.00.tar.Z 并关注用户来自同一文件夹的指南:HDF-EOS_UG.pdf

安装脚本部分(附录 A.1.3.1):

使用 Autoconf/Automake 安装(附录 A.1.3.2):

在这里我做了 /usr/lib/libmfhdfalt.so.0 因为我发现:

但问题似乎还是 jpeg 库。

还尝试从源代码安装它。在 eos 文件夹中找到:jpegsrc.v6b.tar.gz

除了我必须手动创建一个文件夹外,它可以正常工作。

所以我再次尝试安装:

对于安装脚本方法:如何处理这个 LINUX_BRAND 变量?

对于 autoconf/automake 方式:我的 jpeg 库路径是否错误?如果是这样,我如何找到路径?进行一般有什么问题吗?

我真的不知道读什么或谷歌。对不起,如果问题没有正确提出,如果你纠正我,我会学习。非常感谢你的帮助。

0 投票
2 回答
1901 浏览

python - 将多个 .nc 文件读入 3D 熊猫数据框 python

我想读取多个 SST netcdf 文件,并从每个文件中提取选定纬度、经度范围内的 SST 数据,然后将这些数据存储在三维熊猫数据框中。读取后关闭每个 netcdf 以节省内存。

我想以一个包含一年的日常数据的数据框结束。

我已经用 NetCDF4 读取了一个文件并存储了每个变量,但这是我所知道的。

数据来自以下地址的 2016 年 OPeNDAP。

http://www.ifremer.fr/opendap/cerdap1/ghrsst/l4/saf/odyssea-nrt/data/

任何帮助将非常感激!!

0 投票
0 回答
536 浏览

python - 用 python 绘制 netCDF 文件:为什么不可视化轮廓?

我正在尝试使用 python 生成 netcdf 文件的温度颜色图。这是代码的第一部分:

到达此命令行后,会出现以下警告:

/Users/me/anaconda/lib/python3.6/site-packages/mpl_toolkits/basemap/init .py:3677: MatplotlibDeprecationWarning:axes.hold 已弃用。有关更多详细信息,请参阅 API 更改文档 ( http://matplotlib.org/api/api_changes.html )。ax.hold(b)

我也试过包括hold=False,但结果是一样的,你可以在想象中看到:没有contourf。我错过了什么?

在此处输入图像描述

0 投票
1 回答
137 浏览

r - 迭代函数以将许多栅格堆栈合并为一个

一直停留在这个问题上。到处寻找答案,但我似乎在 Stack 上找不到任何东西。大家可以提供的任何帮助将不胜感激。

我的主要问题是我需要导入很多很多 netcdf4 文件,为每个文件创建光栅砖,然后组合许多砖来为每个变量制作一个“主砖”。为了给你一个更清楚的例子,我有 40 年 (netcdf = 40) 的许多气候变量 (n = 15) 是每日分辨率。目标是每月汇总一次,但首先我必须获得这个函数,它可以读取所有年份的 netcdf 的一个变量,并将其放入一个大堆栈中。

我现在的内容如下:

两年的数据可以在这里找到:

https://www.northwestknowledge.net/metdata/data/pdsi_2016.nc https://www.northwestknowledge.net/metdata/data/pdsi_2015.nc

任何帮助都将受到欢迎。提前谢谢大家,如果这是重复的帖子,我深表歉意;我四处张望,无济于事。

0 投票
1 回答
732 浏览

bash - 在 netcdf 文件中将浮点数转换为字节

我有一个带有标准浮点字段的大型 netcdf 文件,该字段仅包含 0.0 或 1.0。我想从命令行将它转换为字节类型以节省一些空间,并且也更容易在数组中读取到 fortran 中的字节类型。

我尝试使用 ncap

但它似乎只是将所有字段归零。我在源文件上使用 zip_6 netcdf4 压缩,我不确定这是否会使事情复杂化?

更新:我发现 ncap2 适用于字节

但我不明白为什么两者不同?这可能是内存问题,因为在尝试转换为“int”而不是“byte”时,ncap 和 ncap2 都因内存分配失败。

0 投票
2 回答
162 浏览

r - 避免 for() 循环和 if 在 R

我有一个关于在 R 中避免 for() 循环的问题。我查看了有关该主题的所有帖子,但没有任何答案可以回答我的问题。所以在这里,我有两个数据文件,一个包含 60 个城市的纬度和经度文件(参见这个CSV 文件)和一个包含多个变量的二维数组文件(参见这个netCDF 文件)。我有一个小计算,可以将每个纬度经度转换为行列。在行列计算之后,这些数字用于编辑 netCDF 文件中的变量。在下面的 REVISED 代码中,我使用了 for() 循环。有没有办法避免 for() 循环和 if() 条件?

0 投票
1 回答
240 浏览

python - python netCDF4 突然停止在 Mac OS 上工作

我在我的 Mac 上使用了 python 的 netCDF4 包可能 100 次。今天,我尝试了

正如我无数次做过的,被告知

我怀疑这与我昨天通过 Mac Ports 进行的更新有关,但不确定。有人知道解决方案吗?

更新:我在 netCDF4 想要找到它的目录中没有 libhdf5.100.dylib,但我确实有 libhdf5.101.dylib。有什么方法可以说服 netCDF4 去寻找它吗?建立链接是否安全?

再次更新:如果有人感兴趣,大约一小时后找到答案。下面给出。

0 投票
2 回答
13905 浏览

python - 通过python从netCDF中提取数据

我是使用 Python 的新手,也是 NetCDF 的新手,如果我不清楚,请道歉。我有一个包含多个变量的 nc 文件,我需要以新的顺序从这些 nc 文件中提取数据。

我的 nc 文件有 8 个变量(经度、纬度、时间、u10、v10、swh、mwd、mwp),我尝试的逻辑是“如果我输入经度和纬度,我的程序输出其他变量(u10、v10、swh , mwd, mwp) 按时间排序。" 然后我会将提取的数据放在另一个数据库中。

我测试了我的 nc 文件,如下所示:

一些结果如下

任何意见,将不胜感激。谢谢你。