緯度/経度のグリッド解像度が異なる 2 つの異なる xarray データセットがあります。低解像度の 1 つの xarray を、高解像度の 1 つの xarray と同じ解像度に再グリッド化したいと考えています。いくつかの例 (例: http://earthpy.org/interpolation_between_grids_with_basemap.html ) を見つけましたが、うまくいきません。テスト用に作成した一例を次に示します。
import numpy as np
import xarray as xray
import mpl_toolkits.basemap
var1=xray.DataArray(np.random.randn(len(np.linspace(40.5,49.5,10)),len(np.linspace(-39.5,-20.5,20))),coords=[np.linspace(40.5,49.5,10), np.linspace(-39.5,-20.5,20)],dims=['lat','lon'])
(xlon, xlat)=np.meshgrid(np.linspace(-39.875,-20.125,80),np.linspace(40.125,49.875,40))
var2=xray.DataArray(-xlon**2+xlat**2,coords=[np.linspace(40.125,49.875,40),np.linspace(-39.875,-20.125,80)],dims=['lat','lon'])
mpl_toolkits.basemap.interp(var1,var1.lon,var1.lat,var2.lon,var2.lat,checkbounds=False,masked=False,order=0)
次のエラーが表示されます。
ValueError: xout と yout は同じ形状でなければなりません!
スクリーンショット:
basemap.interp() は xout と yout が同じ形状である必要がありますか? では、var2 は正方形である必要がありますか? これは、私のデータセットにはほとんど当てはまりません! var1 を var2 と同じ解像度に再グリッドするにはどうすればよいですか?
注: 再グリッディング後、var2 に関連するいくつかの条件を考慮して、var1 をサブサンプリングしたいと考えています。例えば:
var1_subset = var1.where(var2>1000)
そのため、補間中のグリッド ポイントの損失を最小限に抑えたいと考えています。