不規則なグリッド(ランバート円錐)のデータを通常のグリッドに再分割する必要があります。 pyresampleは私の最善の策だと思う。実際には私のオリジナルのlat、lonは1Dではありません(basemap.interpまたはscipy.interpolate.griddataを使う必要があるようです)。通常のグリッドに不規則なグリッドデータを再分割するpyresampleを理解する
私はthis SO's answerが役に立ちました。しかし、空の補間データが得られます。私はそれが私の影響力の半径と私のデータがラップされているという事実の選択と関係があると思う(??)。
これは私のコードである:
import numpy as np
from matplotlib import pyplot as plt
import netCDF4
%matplotlib inline
url = "http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/NARR/Dailies/monolevel/hlcy.2009.nc"
SRHtemp = netCDF4.Dataset(url).variables['hlcy'][0,::]
Y_n = netCDF4.Dataset(url).variables['y'][:]
X_n = netCDF4.Dataset(url).variables['x'][:]
T_n = netCDF4.Dataset(url).variables['time'][:]
lat_n = netCDF4.Dataset(url).variables['lat'][:]
lon_n = netCDF4.Dataset(url).variables['lon'][:]
lat_nとlon_nは、不規則であり、緯度と経度は、投影座標x、yに対応します。
lon_n[lon_n<0] = lon_n[lon_n<0]+360
私はそれらをプロットした場合、今、彼らは素晴らしく、[OK]を見ているよう:
をその後、私は私の新しいセットを作成する方法のためlon_nの
は、私が追加であり、通常の座標:
XI = np.arange(148,360)
YI = np.arange(0,87)
XI, YI = np.meshgrid(XI,YI)
上記の答えに続いて、私はfol lowingコード:データの解像度を約30キロで、私は70キロを入れて、私は入れfill_valueはからです
def_a = SwathDefinition(lons=XI, lats=YI)
def_b = SwathDefinition(lons=lon_n, lats=lat_n)
interp_dat = resample_nearest(def_b,SRHtemp,def_a,radius_of_influence = 70000,fill_value = -9.96921e+36)
resample_nearest pyresample.kd_treeインポートからpyresample.geometryインポートSwathDefinition から
データはもちろん、ゼロまたはナノを入れることができます。
しかし、私は空の配列を取得します。
どうすればいいですか?また、別の方法がある場合は、それを知ることに興味があります。 Pyresampleのドキュメントは少し薄いので、もう少し手助けが必要です。
私はthis answerは別のgriddata機能を使用することを示唆している見つけた:
import matplotlib.mlab as ml
resampled_data = ml.griddata(lon_n.ravel(), lat_n.ravel(),SRHtemp.ravel(),XI,YI,interp = "linear")
をして、OKのようです:
しかし、私はそれ以来、pyresampleについての詳細を理解したいと思いますとても強力です。
それはトリックでした!それは浮動する必要があった。 – claire