2017-06-10 958 views
0

由ncl讀取一個大的wrfout數據(空間大約100x100,垂直30,時間400)。由ncl讀取大型netcdf數據

fid=addfile("wrfout_d03.nc","r") 
u=fid->U 

變量u是500M左右,所以需要很多時間,而且我還需要閱讀其他variables.Is沒有任何方法,NCL快速讀取大NetCDF數據?或者我可以使用其他語言?

+0

一個很好的起點是壓縮文件(例如,與CDO或NCO)預先。讀取速度最慢的部分通常是磁盤訪問,因此即使CPU需要進行解壓縮,也可以將速度降到最低。另一種選擇是將變量減小爲較小的類型,如將降水量(毫米/天)轉換爲無符號整數,如果精度損失可接受。如果您一次只能讀取文件的某些部分(例如時間序列或垂直配置文件),則可以瞭解分塊,這對NeCDF讀取時間有很大影響,如果壓縮,則會更多。 – AF7

+0

*「一個好的起點是壓縮... **;看看我對Adrian的答案的評論,我用Python試了一下,似乎(至少在Python中)非常慢,我個人也會從選擇數據開始你真的需要分析,如果這是完整的3D領域+所有的時間步驟,那麼我想你必須忍受很長的加載時間,除非你想做像平行讀取和後處理這樣的花式東西 – Bart

回答

0

在將它們讀入NCL之前,提取所需的變量和時間片可能會更有幫助。

要通過變量選擇:通過他們的指數選擇

cdo sellevel 

或等級:

cdo sellevidx 

,您還可以在以下方面提取子集

cdo selvar,var in.nc out.nc 

要按級別選擇日期或時間...

更多的信息在這裏: https://code.mpimet.mpg.de/projects/cdo/wiki/Cdo#Documentation

+0

我很好奇關於這種壓縮,所以我很快用了一個來自我們模型的576MB大型netCDF文件,Compression(使用你的命令)將其減少到了472MB,但是當我將它們都讀入Python中的內存時,它需要花費8(!)倍閱讀壓縮的,我猜是因爲需要在Python中解壓它所需要的時間 – Bart

+0

好點,它佔用較少的磁盤空間,但訪問時間會更長,一個很好的妥協是zip5或6.但正如你的問題是關於訪問時間只實際上我決定刪除答案的那部分內容。 –

+0

這不是我的問題,我只是好奇:) – Bart