繼上一個問題之後(Faster reading of time series from netCDF?)我重新排列了我的netCDF文件以提供快速的時間序列讀取(scripts on github to be cleaned up eventually ...)。如何在使用ncdf4 :: ncvar_get時指定尺寸順序?
總之,爲了使讀取速度更快,我已將尺寸從lat, lon, time
重新排列爲time, lat, lon
。現在,我現有的腳本打破,因爲他們認爲該尺寸將永遠是lat, lon, time
,以下ncvar_get
的ncdf4文檔中,「開始」的說法:
秩序是XYZT(即時間維度是最後一個)
但是,事實並非如此。
此外,通過命令行netCDF實用程序ncdump -h
和R功能ncdf4::nc_open
列出的變量順序存在相關不一致。第一個表示尺寸是預期的(經度,緯度,時間)順序,而後者則用時間先確定尺寸(時間,緯度,經度)。
對於一個小例子,下載文件test.nc和運行
bash-$ ncdump -h .nc
bash-$ R
R> library(ncdf4)
R> print(nc_open("test.nc")
我想要做的就是從變量「lwdown」
my.nc <- nc_open("test.nc")
得到記錄5-15不過這並未」因爲R先看到時間維度,所以我必須將腳本更改爲
ncvar_get(my.nc, "lwdown", start = c(5, 1, 1), count = c(10, 1, 1))
除了我希望能夠從文件讀取數據而不管維度順序如何,更新我的腳本和函數並不會那麼糟糕。
除了是否有一種方法來概括此函數,使其獨立於維度順序?