如何阅读 Python 中的通用数据格式 (CDF)
How read Common Data Format (CDF) in Python
我需要使用 python 读取 CDF 文件。我找到了图书馆,但我不明白如何使用它。例如在这个(Python lib),我需要下载CDF lib,我不知道在哪里下载。有 CDF 的下载页面,但似乎与该库无关。
如果你安装了Python的打包工具pip,你可以通过如下方式获取spacepy cdf库:
$ pip install git+https://github.com/spacepy/spacepy.git
请注意,这将安装很多依赖项,包括 numpy 和 scipy。从头开始安装这些可能有点困难。你可能想先安装一个现成的包,例如anaconda。完成后,只需使用上面的命令,spacepy 就会轻而易举地安装。
一旦 spacepy 安装成功,根据这个 example 它应该像这样工作:
from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)
前一段时间我遇到了同样的问题。我假设,你在 Windows...
上工作
根据 Spacepy 文档,您需要几个依赖项才能使用它的 cdf 模块。
首先 SpacePy 官方只支持 32 位 python 版本,因此你必须在 323 位中有 python。
其次,它需要在您的系统中安装 NASA CDF 库(也是 32 位版本)。你可以从
here.
第三继续Spacepy依赖:
- numpy
- scipy
- matplotlib
- h5py
- 网络x
- ffnet
其中大部分是 Anaconda 包的一部分。如果不是,您只需安装它们 pip install <package name>
.
如果您在从源代码进行编译时遇到问题,我建议您访问 Christoph Gohlke 网站并获取与您的 python 版本匹配的 Windows 的预构建二进制文件。
http://www.lfd.uci.edu/~gohlke/pythonlibs/
这应该让你开始使用 Spacepy CDF 模块。
您也可以尝试其他方法。从 NASA 页面下载 CDF-to-netCDF 转换器,然后 运行 将其保存在您的 CDF 文件中。
Python 有不错的 netCDF 模块,可以从 GitHub 或 python 仓库安装。在这种情况下,您还需要几个依赖项,如 HDF5、netCDF-4、numpy、cython。
获得netCDF 文件后,您可以使用netCDF 模块或scipy.io
模块访问它。
by @miraculixx is correct, but it assumes that you have already installed the CDF C Library。
如果您在 SO 上发现这个问题之前甚至不知道 CDF 文件格式是什么,这里有一个易于遵循的指南。
1.下载最新版本的 CDF C 库:
您可以在此 link 找到最新的稳定版本。使用 wget
获取源代码并将其解压缩。 注意:以下将在当前文件夹中创建一个目录./
如果你想在不同的路径下载代码,请确保更改下面的代码。
wget -r -l1 -np -nd -nc http://cdaweb.gsfc.nasa.gov/pub/software/cdf/dist/latest-release/linux/ -A cdf*-dist-all.tar.gz
tar xf cdf*-dist-all.tar.gz -C ./
cd cdf*dist
2。安装所有依赖项:
SpacePy and the CDF Library have several dependencies (as pointed out by @Michal Dyzma). You can install them all using conda or pip, and apt.
pip install numpy scipy h5py matplotlib networkx
apt install build-essential gfortran libncurses5-dev
3。编译C库:
您应该已经下载了一个 README.install
文件,其中包含比我提供的更多关于此步骤的详细信息。两分钱是您要检查哪些编译变量 required/optional 适合您的系统和需要。
make all.help
我将使用 GNU C 编译器为 Linux 构建发行版。我对 FORTRAN 界面不感兴趣,我的操作系统支持共享库。我想安装基于 Curses 的工具包程序,这些程序允许使用基于命令行的交互式 CDF 工具(这就是我们在步骤 2 中安装 libncurses5-dev
依赖项的原因)。结果,这是最终的 make 命令:
make OS=linux ENV=gnu CURSES=yes FORTRAN=no UCOPTIONS=-O2 SHARED=yes -j4 all
make install #no sudo
安装应该 运行 顺利并添加 ./bin
、./include
和 ./lib
子目录中的所有文件。
4.设置环境变量:
./bin
中应该有一个名为 definitions.B
的文件会自动为您执行此操作,使用 chmod+x
使其可执行并将以下行添加到您的 ~/.bashrc
(注意: 1)我假设你在路径 $HOME/Libraries/
上安装了库; 2).
后有一个space:
. $HOME/Libraries/cdf/cdf36_3-dist/bin/definitions.B
重要提示:
上面的文件在 第 68 行 处有一个错误,而不是附加到环境变量 LD_LIBRARY_PATH
而是覆盖它。修复很简单,将 line 68 替换为以下内容:
export LD_LIBRARY_PATH=$HOME/Libraries/cdf/cdf36_3-dist/lib:$LD_LIBRARY_PATH
如果由于某种原因 definitions.B
不存在,只需添加以下内容:
export CDF_BASE=$HOME/Libraries/cdf/cdf36_3-dist
export CDF_INC=$CDF_BASE/include
export CDF_LIB=$CDF_BASE/lib
export CDF_BIN=$CDF_BASE/bin
export LD_LIBRARY_PATH=$CDF_BASE/lib:$LD_LIBRARY_PATH
5.一切就绪,去做好事吧:
假设您使用 pip 安装了 spacepy
,那么下面应该可以立即使用:
from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)
Maven 的 CDFLib 是一个纯粹的 python 替代品。
https://github.com/MAVENSDC/cdflib
pip install cdflib
在您的代码中:
import cdflib
cdf_file = cdflib.CDF('/path/to/cdf_file.cdf')
我需要使用 python 读取 CDF 文件。我找到了图书馆,但我不明白如何使用它。例如在这个(Python lib),我需要下载CDF lib,我不知道在哪里下载。有 CDF 的下载页面,但似乎与该库无关。
如果你安装了Python的打包工具pip,你可以通过如下方式获取spacepy cdf库:
$ pip install git+https://github.com/spacepy/spacepy.git
请注意,这将安装很多依赖项,包括 numpy 和 scipy。从头开始安装这些可能有点困难。你可能想先安装一个现成的包,例如anaconda。完成后,只需使用上面的命令,spacepy 就会轻而易举地安装。
一旦 spacepy 安装成功,根据这个 example 它应该像这样工作:
from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)
前一段时间我遇到了同样的问题。我假设,你在 Windows...
上工作根据 Spacepy 文档,您需要几个依赖项才能使用它的 cdf 模块。
首先 SpacePy 官方只支持 32 位 python 版本,因此你必须在 323 位中有 python。
其次,它需要在您的系统中安装 NASA CDF 库(也是 32 位版本)。你可以从 here.
第三继续Spacepy依赖:
- numpy
- scipy
- matplotlib
- h5py
- 网络x
- ffnet
其中大部分是 Anaconda 包的一部分。如果不是,您只需安装它们 pip install <package name>
.
如果您在从源代码进行编译时遇到问题,我建议您访问 Christoph Gohlke 网站并获取与您的 python 版本匹配的 Windows 的预构建二进制文件。 http://www.lfd.uci.edu/~gohlke/pythonlibs/
这应该让你开始使用 Spacepy CDF 模块。
您也可以尝试其他方法。从 NASA 页面下载 CDF-to-netCDF 转换器,然后 运行 将其保存在您的 CDF 文件中。
Python 有不错的 netCDF 模块,可以从 GitHub 或 python 仓库安装。在这种情况下,您还需要几个依赖项,如 HDF5、netCDF-4、numpy、cython。
获得netCDF 文件后,您可以使用netCDF 模块或scipy.io
模块访问它。
如果您在 SO 上发现这个问题之前甚至不知道 CDF 文件格式是什么,这里有一个易于遵循的指南。
1.下载最新版本的 CDF C 库:
您可以在此 link 找到最新的稳定版本。使用 wget
获取源代码并将其解压缩。 注意:以下将在当前文件夹中创建一个目录./
如果你想在不同的路径下载代码,请确保更改下面的代码。
wget -r -l1 -np -nd -nc http://cdaweb.gsfc.nasa.gov/pub/software/cdf/dist/latest-release/linux/ -A cdf*-dist-all.tar.gz
tar xf cdf*-dist-all.tar.gz -C ./
cd cdf*dist
2。安装所有依赖项:
SpacePy and the CDF Library have several dependencies (as pointed out by @Michal Dyzma). You can install them all using conda or pip, and apt.
pip install numpy scipy h5py matplotlib networkx
apt install build-essential gfortran libncurses5-dev
3。编译C库:
您应该已经下载了一个 README.install
文件,其中包含比我提供的更多关于此步骤的详细信息。两分钱是您要检查哪些编译变量 required/optional 适合您的系统和需要。
make all.help
我将使用 GNU C 编译器为 Linux 构建发行版。我对 FORTRAN 界面不感兴趣,我的操作系统支持共享库。我想安装基于 Curses 的工具包程序,这些程序允许使用基于命令行的交互式 CDF 工具(这就是我们在步骤 2 中安装 libncurses5-dev
依赖项的原因)。结果,这是最终的 make 命令:
make OS=linux ENV=gnu CURSES=yes FORTRAN=no UCOPTIONS=-O2 SHARED=yes -j4 all
make install #no sudo
安装应该 运行 顺利并添加 ./bin
、./include
和 ./lib
子目录中的所有文件。
4.设置环境变量:
./bin
中应该有一个名为 definitions.B
的文件会自动为您执行此操作,使用 chmod+x
使其可执行并将以下行添加到您的 ~/.bashrc
(注意: 1)我假设你在路径 $HOME/Libraries/
上安装了库; 2).
后有一个space:
. $HOME/Libraries/cdf/cdf36_3-dist/bin/definitions.B
重要提示:
上面的文件在 第 68 行 处有一个错误,而不是附加到环境变量 LD_LIBRARY_PATH
而是覆盖它。修复很简单,将 line 68 替换为以下内容:
export LD_LIBRARY_PATH=$HOME/Libraries/cdf/cdf36_3-dist/lib:$LD_LIBRARY_PATH
如果由于某种原因 definitions.B
不存在,只需添加以下内容:
export CDF_BASE=$HOME/Libraries/cdf/cdf36_3-dist
export CDF_INC=$CDF_BASE/include
export CDF_LIB=$CDF_BASE/lib
export CDF_BIN=$CDF_BASE/bin
export LD_LIBRARY_PATH=$CDF_BASE/lib:$LD_LIBRARY_PATH
5.一切就绪,去做好事吧:
假设您使用 pip 安装了 spacepy
,那么下面应该可以立即使用:
from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)
Maven 的 CDFLib 是一个纯粹的 python 替代品。 https://github.com/MAVENSDC/cdflib
pip install cdflib
在您的代码中:
import cdflib
cdf_file = cdflib.CDF('/path/to/cdf_file.cdf')