2017-08-01 46 views
0

我有一個在θ水平上的溫度的立方體,我需要一個rho水平的溫度立方體。 cube.interpolate能夠做到這一點,還是我需要別的東西?虹膜用戶指南中的垂直重新調整示例具有從混合高度變爲固定等距高度採樣點的示例,但沒有示例,其中目標網格具有空間變化的高度。我嘗試了一種天真的方法,但失敗了。使用cube.interpolate從θ水平去rho水平

sample_points = [p_rho_cube.coord('altitude').points] 
t_rho_levs = temp.interpolate(sample_points, iris.analysis.Linear()) 

但這種失敗:

Traceback (most recent call last): 
    File "cmip5_lbc_gen_um.py", line 243, in <module> 
    cmip_lbc_prep_um(pp_um_file, outfile) 
    File "cmip5_lbc_gen_um.py", line 197, in cmip_lbc_prep_um 
    t_rho_levs = temp.interpolate(sample_points, iris.analysis.Linear()) 
    File "/opt/scitools/environments/default/2017_06_07/lib/python2.7/site-packages/iris/cube.py", line 3811, in interpolate 
    coords, points = zip(*sample_points) 
ValueError: too many values to unpack 

有一個簡單的方法來做到這一點,或者我有寫我自己的這個插值?

回答

0

我相信你的建議使用cube.interpolate是可疑的:第一個參數應該是(coord,values)的一個元組 - 查看docstring中的例子。

不過我也認爲是無關緊要的,因爲你想要的目標座標值與位置而變化,就像你說的......

對於這一點,你可能想要的是「蟒蛇-分層」:https://github.com/SciTools-incubator/python-stratify
另一個好的SciTools產品!
但是這個還是比較實驗的,這就是它在「scitools-incubator」中的原因。

這應該是一個非常有效的計算,它確實允許您的目標值在其他維度上有所不同,我相信: 在文檔中,它表示'z_target'arg可以是多維的,匹配' z_src」。
https://github.com/SciTools-incubator/python-stratify/blob/569a92f3bec825e9edd08f416cce1d77fc0c96df/stratify/_vinterp.pyx#L446

奇怪的是,附上的說明筆記本似乎並沒有證明這一點。我隱隱地記得,這個操作在某個時候是'泛化'的,所以可能這是在那之前寫的,需要更新。

+0

以下是我忘了的內容:現在在Iris本身有一個包裝器 ... http://scitools.org.uk/iris/docs/v1.13.0/iris/iris/experimental/stratify.html#模塊iris.experimental.stratify –