したがって、4D 配列 (x、y、z、t) にある .nc ファイルの変数がいくつかあります。問題は、z 座標が x 座標と y 座標のように等間隔に配置されていないことです。つまり、z は 25 メートル、75m、125、175、...、500、600、700、...、20000 のようになります。 21000、22000。データを線形補間して、z 全体で均一な 50m 間隔を取得しようとしています。しかし、R の approx 関数の動作が遅すぎます (配列が大きすぎると思います)。
library(ncdf)
x = get.var.ncdf(nc,'x'); y = get.var.ncdf(nc,'y'); z = get.var.ncdf(nc,'z')
t = get.var.ncdf(nc,'t') # time
qc1 = get.var.ncdf(nc,'qc',start=c(1,1,1,1),count=c(-1,-1,-1,-1))
zlin = seq(z[1],z[length(z)],50)
qc1_lin = array(0,c(length(x),length(y),length(zlin),length(t)))
for (i in 1:length(x)) {
for (j in 1:length(y)) {
for (k in 1:length(t)) {
qc1_lin[i,j,,k] = approx(z,qc1[i,j,,k],xout = zlin)
}
}
}
これをより速く行う方法はありますか?または、これを簡単にするためにデータを再グリッド化することを検討するよう誰かに言われましたが、彼が何を意味しているのかよくわかりません。誰かが私を助けることができますか?ありがとう。