簡體   English   中英

如何在Python中讀取通用數據格式(CDF)

[英]How read Common Data Format (CDF) in Python

我需要使用python讀取CDF文件。 我找到了庫,但我不明白如何使用它。 例如在這( Python lib ),我需要下載CDF lib,我不知道在哪里下載。 有CDF的下載頁面,但它似乎與這個庫無關。

@miraculixx的答案是正確的,但它假設您已經安裝了CDF C庫

如果您在SO上發現此問題之前甚至不知道CDF文件格式是什么,這是一個易於遵循的指南。

1.下載最新版本的CDF C庫:

您可以在此鏈接中找到最新的穩定版本。 使用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和CDF庫有幾個依賴關系(正如@Michal Dyzma所指出的那樣)。 你可以使用condapipapt安裝它們。

pip install numpy scipy h5py matplotlib networkx
apt install build-essential gfortran libncurses5-dev

3.編譯C庫:

您應該已經下載了一個README.install文件,其中包含有關此步驟的更多詳細信息,而不是我將提供的內容。 兩美分是您要檢查哪些編譯變量對於您的系統和需求是必需的/可選的。

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)之后有一個空格. ):

. $HOME/Libraries/cdf/cdf36_3-dist/bin/definitions.B

重要說明:上面的文件在第68行有一個錯誤,而不是附加到環境變量LD_LIBRARY_PATH它會覆蓋它。 修復很簡單,用以下內容替換第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

你已經准備好了,去做好事:

假設您使用pip安裝了spacepy ,以下內容應該是開箱即用的:

from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)

如果你有Python的包工具, pip安裝,你可以得到spacepy cdf庫,如下所示:

$ pip install git+https://github.com/spacepy/spacepy.git

請注意,這將安裝許多依賴項,包括numpy和scipy。 從頭開始安裝這些可能有點困難。 您可能希望首先安裝現成的包,例如anaconda 一旦完成,只需使用上面的命令,spacepy應該像輕而易舉地安裝。

一旦spacepy的安裝成功,根據這個例子,它應該是這樣的:

from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)

前段時間我遇到了同樣的問題。 我假設你在Windows上工作......

根據Spacepy文檔,您需要幾個依賴項才能使用其cdf模塊。

首先它是SpacePy官方只支持32位python版本,因此你必須在323bit中擁有python。

其次 ,它需要在您的系統中安裝NASA CDF庫(也是32位版本)。 你可以從這里抓住它。

第三步繼續使用Spacepy依賴:

  • numpy的
  • SciPy的
  • matplotlib
  • h5py
  • networkx
  • 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 repo安裝。 在這種情況下,您還需要幾個依賴項,如HDF5,netCDF-4,numpy,cython。

獲得netCDF文件后,可以使用netCDF模塊或scipy.io模塊訪問它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM