0
私は時間、x、yの次元でNetCDF変数を持っています。現在はデカルト座標系ですが、極座標でデータが必要です。私はこれを行う関数を作成しようとしましたが、私はそれを正しくするように見えることはできません。これを行う簡単な方法があれば、誰にも分かりますか?現時点でRegrid 3DデカルトからポーラーへのNetCDFデータ
def regrid(x,y,xcent,ycent,vardat):
x=np.subtract(x,xcent)
y=np.subtract(y,ycent)
threshmin = np.min(vardat)
threshmax = np.max(vardat)
rmax = np.ceil(np.sqrt(((x[-1]-x[0])/2.)**2 + ((y[-1]-y[0])/2.)**2))
r = np.arange(0,rmax,(x[1]-x[0]))
theta_inc = np.floor(np.arctan2(y[1]-y[0],(x[-1]-x[0])/2.)/np.pi*180.)
if theta_inc <1.0:
theta_inc = 1
theta = np.arange(0,(360-theta_inc),theta_inc)
r2d, theta2d = np.meshgrid(r,theta)
x_polar = r2d*np.cos(np.pi/180.*theta2d)
y_polar = r2d*np.sin(np.pi/180.*theta2d)
x_range = np.arange(x[0],x[-1]+1,(x[1]-x[0]))
y_range = np.arange(y[0],y[-1]+1,(y[1]-y[0]))
field_rt = np.zeros((len(r),len(theta)))
field_interp = interp2d(x_range,y_range,vardat,kind='linear')
for i in np.arange(0,len(r)):
for j in np.arange(0,len(theta)):
* field_rt[i,j] = field_interp(x_polar[i,j],y_polar[i,j])
return r, theta, field_rt
r1,theta1, field = regrid(we_ea,no_so,124,124,olr[0,:,:])
、私は*とラインで「インデックス176は、サイズ176と軸1の境界の外にある」というエラーが表示されます。
何か助けていただければ幸いです。
あなたが正確にやろうとしているかを知るために役立つだろう。デカルトから極座標への変換は、通常はかなり単純な変換ですが、ウィキペディアで調べるだけです。私はなぜあなたが補間を行っているのか分かりません。 正確なエラー出力と、その関数を使用していたデータを確認すると便利です。最初の答えを知っている簡単なテストケースを作成する必要があります。 – kiliantics