由ncl讀取一個大的wrfout數據(空間大約100x100,垂直30,時間400)。由ncl讀取大型netcdf數據
fid=addfile("wrfout_d03.nc","r")
u=fid->U
變量u是500M左右,所以需要很多時間,而且我還需要閱讀其他variables.Is沒有任何方法,NCL快速讀取大NetCDF數據?或者我可以使用其他語言?
由ncl讀取一個大的wrfout數據(空間大約100x100,垂直30,時間400)。由ncl讀取大型netcdf數據
fid=addfile("wrfout_d03.nc","r")
u=fid->U
變量u是500M左右,所以需要很多時間,而且我還需要閱讀其他variables.Is沒有任何方法,NCL快速讀取大NetCDF數據?或者我可以使用其他語言?
在將它們讀入NCL之前,提取所需的變量和時間片可能會更有幫助。
要通過變量選擇:通過他們的指數選擇
cdo sellevel
或等級:
cdo sellevidx
,您還可以在以下方面提取子集
cdo selvar,var in.nc out.nc
要按級別選擇日期或時間...
更多的信息在這裏: https://code.mpimet.mpg.de/projects/cdo/wiki/Cdo#Documentation
一個很好的起點是壓縮文件(例如,與CDO或NCO)預先。讀取速度最慢的部分通常是磁盤訪問,因此即使CPU需要進行解壓縮,也可以將速度降到最低。另一種選擇是將變量減小爲較小的類型,如將降水量(毫米/天)轉換爲無符號整數,如果精度損失可接受。如果您一次只能讀取文件的某些部分(例如時間序列或垂直配置文件),則可以瞭解分塊,這對NeCDF讀取時間有很大影響,如果壓縮,則會更多。 – AF7
*「一個好的起點是壓縮... **;看看我對Adrian的答案的評論,我用Python試了一下,似乎(至少在Python中)非常慢,我個人也會從選擇數據開始你真的需要分析,如果這是完整的3D領域+所有的時間步驟,那麼我想你必須忍受很長的加載時間,除非你想做像平行讀取和後處理這樣的花式東西 – Bart